(图片来源网络,侵删)
关于R语言的扩展包安装过程中可能碰到的问题,Rattle是一个比较典型的例子。根据官方(https://rattle.togaware.com/)的介绍,Rattle是一个用于使用 R 进行数据挖掘的图形用户界面,易于构建无监督或监督机器学习的数据模型,进行评估并方便地部署到生产中。而且Rattle中通过图形用户界面实现的交互功能可以被捕获为R 语言脚本程序,以便在独立于 Rattle界面的R环境中执行,因此也非常适合用作学习R语言的工具。rattle本身对于新版本R的支持并没有问题,5.5版本构建于R 4.2.2之上。官网建议在 Ubuntu 23.04 上运行 Rattle,支持各种虚拟机,如在 MacOS 上使用 Parallels或 Windows 11上使用WSL2 运行,也可以安装在任何平台上的VirtualBox上。另一种省心省力的选择是运行 docker 映像,https://hub.docker.com/r/kayon/rattle/,镜像不太大,大小不到1G,运行方式如下:docker run -it --rm --network=host --env="DISPLAY" -v ~/Xauthority:/root/.Xauthority:rw kayon/rattle自己安装的话就比较麻烦了,因为rattle的依赖包的情况比较复杂。目前rattle安装需要特别处理的的依赖包主要包括stringi,RGtk2(gtk2.8),rattle()启动后还需要cairoDevice。stringi的安装主要问题出在它本身的依赖ICU4C,是由JAVA平台下的ICU移植过来支持C/C++下的国际化应用开发的库,其中有一个 ICU Data Library即ICU数据库的二进制文件,对应文件名为:icu4c-69_1-data-bin-l.zip。如果直接编译安装stringi,缺省情况下会临时从指定地址下载,网速较慢,很容易卡死在下载中,导致安装失败。解决方法是单独下载这个文件,可选择的下载方式很多,用install.packages()安装时指定该文件的目录即可。install.packages("stringi", configure.vars="ICUDT_DIR=<icudt_dir>")stringi也可以下载好,直接本地安装,目前版本是stringi_1.7.12.tar.gz。注意configure.vars的参数设置是针对具体的扩展包的,有哪些参数可以用要看扩展包中的configure文件。RGtk2和cairoDevice的问题就更麻烦,这些包在cran已经标记为陈旧,存档了,也就是从正常的CRAN库中移除了。自己试图编译安装时始终无法编译成功,各种编译错误,估计编译环境版本比较新,旧的程序代码通不过编译了。安装额外的编译环境也是可选项,想想还是找一下构建好的二进制安装包比较方便。官网给出的 Ubuntu 23.04 +R 4.2.2 +Rattle 5.5.2下的方案:$ sudo apt-get install r-recommended r-cran-xml libgtk2.0-dev libxml2-dev$ wget https://access.togaware.com/RGtk2_2.20.36.2.zip$ mkdir -p ~/R/x86_64-pc-linux-gnu-library/4.2/$ unzip RGtk2_2.20.36.2.zip -d ~/R/x86_64-pc-linux-gnu-library/4.2/$ R> install.packages("rattle") # This will install dependencies.> install.packages("rattle", repos="https://rattle.togaware.com", type="source")> library(rattle)> rattle()另一个选择是找到debian或其它发行版所存档的安装包:https://debian.pkgs.org/11/debian-main-amd64/r-cran-rgtk2_2.20.36-2+b1_amd64.deb.htmldeb包直接安装或者前面zip文件解压的话一般并不会安装到虚拟环境内,而是安装到系统直接安装的R环境。可以从系统中R的包安装路径中找到RGtk2包,如:/usr/lib/R/site-library,然后复制到conda的虚拟环境中,<conda路径>/envs/rlang/lib/R/library。安装好RGtk2,rattle()运行又要求安装cairoDevice,又是一个已经ORPHAN掉的包,自然也是无法正常安装,如法炮制,https://debian.pkgs.org/11/debian-main-amd64/r-cran-cairodevice_2.28.2-1_amd64.deb.html下载deb安装,复制,在启动时就不会又安装cairoDevice的提示了。另外,启动rattle()时还遇到了GTK的主题引擎报错:(R:176963): Gtk-WARNING : 07:16:55.184: 无法在模块路径中找到主题引擎:“adwaita”,对应安装gnome主题包就可以解决sudo apt install gnome-themes-standard关于通过下载二进制安装包的处理方式,在安装tidyverse所需的一个依赖包ragg时遇到了新的问题。首先是ragg本身需要更多的依赖,需要先在r-cran-ragg的详情页面(https://packages.debian.org/zh-cn/bullseye/amd64/r-cran-ragg),或者通过dpkg --info deb包 来查看相关信息,并针对性地一一安装。如果用apt可以安装的话可能不需要逐个安装,但是在安装完需要复制到conda虚拟环境的时候还是要清楚需要拷贝哪些包,这些依赖包需要一起拷贝过去才行。安装ragg完成以后,在require(ragg)的时候又爆出了版本不匹配的问题,因为安装在系统中的ragg是使用R 4.2.2简单的构建的,与虚拟环境中的版本4.1.3冲突,直接升级一下虚拟环境中的R的版本到4.2.2可以解决问题。rstudio中运行demo(graphics)package列表
0 评论