centos72009源码编译R语言

./dev/make-distribution.sh --name custom-spark --pip --r --tgz -Pconnect -Psparkr -Phive -Phive-thriftserver -Pmesos -Pyarn -Dhadoop.version=3.4.0 -Pkubernetes

spark3.5.3 源码版本

./dev/make-distribution.sh --name custom-spark --pip --r --tgz -Pconnect -Psparkr -Phive -Phive-thriftserver -Pmesos -Pyarn -Pkubernetes clean -DskipTests

./dev/make-distribution.sh --name custom-spark --pip --r --tgz -Psparkr -Phive -Phive-thriftserver -Pmesos -Pyarn -Pkubernetes

./dev/make-distribution.sh --name custom-spark --pip --r --tgz -Psparkr -Phive -Phive-thriftserver -Pmesos -Pyarn -Pkubernetes

wget https://cloud.r-project.org/src/base/R-4/R-4.4.1.tar.gz

sudo yum install gcc gcc-c++ make libcurl-devel libxml2-devel sqlite-devel -y

sudo yum install readline-devel libpng-devel libjpeg-devel libtiff-devel -y

说明:

在使用 ./configure 配置 R 的编译选项时,你可以根据需求添加多个参数。以下是一些常用的配置参数及其说明,适用于你提到的命令:

  1. 常用配置参数

--prefix=/usr/local/R

指定 R 安装的基础目录。在这个路径下将会创建 bin、lib 等子目录。

--enable-R-shlib=yes

启用共享库,这对于某些 R 包(特别是需要与其他语言接口的包)是必要的。

--with-tcltk

启用对 Tcl/Tk 的支持。这是为了能够使用 R 图形用户界面功能(如 tcltk 包)。

  1. 其他可用的配置选项

--with-blas

指定 BLAS (Basic Linear Algebra Subprograms) 的路径,以优化矩阵运算性能。例如:--with-blas=/usr/lib64/libblas.so。

--with-lapack

指定 LAPACK (Linear Algebra Package) 的路径,用于高级线性代数运算。例如:--with-lapack=/usr/lib64/liblapack.so。

--with-readline

启用 Readline 支持,允许在 R 命令行中使用更丰富的编辑功能。

--with-x

启用 X11 图形支持,允许使用 X11 窗口系统进行图形显示。

--with-jpeglib

启用 JPEG 图像支持。

--with-png

启用 PNG 图像支持。

--with-tiff

启用 TIFF 图像支持。

--with-dbi

启用 DBI 数据库接口。

--enable-memory-profiling

启用内存分析功能。

  1. 示例命令

./configure --enable-R-shlib=yes \

--with-tcltk \

--prefix=/usr/local/R \

--with-blas=/usr/lib64/libblas.so \

--with-lapack=/usr/lib64/liblapack.so \

--with-readline \

--with-x \

--with-jpeglib \

--with-png \

--with-tiff \

--with-dbi \

--enable-memory-profiling

问题1:configure: error: No Fortran compiler found

解决办法:sudo yum install gcc-gfortran -y

问题2:configure: error: BLAS was specified but not available

  1. 安装 BLAS 库

对于 CentOS 系统,可以通过以下命令安装 OpenBLAS 或 ATLAS:

安装 OpenBLAS

yum update -y

sudo yum install openblas-devel -y

或者安装 ATLAS

sudo yum install atlas-devel -y

  1. 指定 BLAS 路径

如果你安装了 BLAS,但仍然遇到问题,可能需要在配置时明确指定 BLAS 的路径。例如,如果安装了 OpenBLAS,你可以使用如下命令:

./configure --enable-R-shlib=yes \

--with-tcltk \

--prefix=/usr/local/R \

--with-blas=/usr/lib64/libblas.so \

--with-lapack=/usr/lib64/liblapack.so \

--with-readline \

--with-x \

--with-jpeglib \

--with-png \

--with-tiff \

--with-dbi \

--enable-memory-profiling -with-blas=/usr/lib64/libopenblas.so --with-lapack=/usr/lib64/liblapack.so

  1. 重新运行配置命令

安装完相应的 BLAS 库后,再次尝试运行 R 的配置命令

上面如果出现No package openblas-devel available

需要执行

sudo yum install epel-release -y

sudo yum install openblas-devel -y

再次执行./configure编译指令

问题3:configure: error: --with-x=yes (default) and X11 headers/libs are not available

sudo yum install libX11-devel libXt-devel -y

sudo yum install libXmu-devel libXrender-devel libXext-devel -y

问题4:checking whether bzip2 support suffices... configure: error: bzip2 library and headers are required

sudo yum install bzip2-devel -y

问题5:configure: error: PCRE2 library and headers are required, or use --with-pcre1 and PCRE >= 8.32 with UTF-8 support

sudo yum install pcre2-devel -y

安装make && make install

export MANAGE_LOCAL_HBASE=true

export MANAGE_LOCAL_SOLR=true

export ZK_HOME=/home/zookeeper

export HADOOP_HOME=/home/hadoop-3.4.0

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export ATLAS_HOME=/home/apache-atlas-2.3.0

export MYSQL_HOME=/home/mysql

export JAVA_HOME=/usr/java/jdk-17

export M2_HOME=/home/maven

export CLASSPATH=.:JAVA_HOME/lib:JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar

export SPARK_HOME=/home/spark-3.3.3-bin-hadoop3

#export KAFKA_HOME=/home/kafka

#export HBASE_HOME=/home/hbase-2.5.5-hadoop3

#export SOLR_HOME=/home/solr/server/solr

export SPARK_CONF_DIR=$SPARK_HOME/conf

export HIVE_HOME=/home/apache-hive-3.1.3-bin

export FLINK_HOME=/home/flink

export KYUUBI_HOME=/home/kyuubi-1.8.0

export R_HOME=/usr/local/R

export PATH=PATH:R_HOME/bin:R_HOME/lib64/R/bin:JAVA_HOME/bin:JAVA_HOME/jre/bin:M2_HOME/bin:ATLAS_HOME/bin:MYSQL_HOME/bin:SPARK_HOME/sbin:SPARK_HOME/bin:HIVE_HOME/bin:HADOOP_HOME/bin:HADOOP_HOME/sbin:FLINK_HOME/bin:KYUUBI_HOME/bin:ZK_HOME/bin

Downloading https://nodejs.org/dist/v12.22.1/node-v12.22.1-linux-x64.tar.gz to /home/maven/local/repo/com/github/eirslett/node/12.22.1/node-12.22.1-linux-x64.tar.gz

源码编译的生成目录

/home/hadoop-3.4.0/hadoop-dist/target


安装python3

wget https://www.python.org/ftp/python/3.12.6/Python-3.12.6.tgz

yum -y install libffi-devel zlib zlib-dev zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel mysql-devel readline-devel tk-devel libffi libffi-devel gcc gcc-c++ make

make clean

./configure --prefix=/usr/local/python3 --enable-optimizations --with-openssl=/usr/local/openssl --with-ensurepip=install --enable-shared --with-system-libmpdec --with-lto --enable-ipv6

make -j $(nproc) # 使用并行编译,便于加快速度

sudo make altinstall # 使用 altinstall 避免覆盖系统自带的 python

sudo ln -s /usr/local/python3/bin/python3.12 /usr/bin/python3

sudo ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

openssl version

遇到问题:./Modules/_decimal/_decimal.c:36:23: fatal error: mpdecimal.h: No such file or directory

#include "mpdecimal.h"

解决方法:

wget https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz

tar -xzf mpdecimal-2.5.1.tar.gz

cd mpdecimal-2.5.1

编译和安装

./configure

make

sudo make install

sudo yum groupinstall "Development Tools"

sudo yum install openssl-devel bzip2-devel readline-devel \

sqlite-devel libffi-devel xz-devel

make clean

./configure --prefix=/usr/local/python3 --with-openssl=/usr/local/openssl

make -j $(nproc)

sudo make altinstall

install.packages("knitr")

install.packages("sass")

install.packages("rmarkdown")

install.packages("pandoc")

library(knitr)

library(rmarkdown)

library(pandoc)

install.packages("Cairo")

yum install -y gcc

yum install -y glibc-headers

yum install -y libreadline6-dev gfortran

yum install -y readline-devel

yum install -y wget libXt-devel

yum install -y fonts-chinese tcl tcl-devel tclx tk tk-devel

yum install -y mesa-libGLU mesa-libGLU-devel

yum install -y install bzip2-devel

yum install -y install xz-devel.x86_64

yum install -y install pcre-devel

yum install -y install libcurl

yum install -y install libcurl-devel

yum install -y texinfo.x86_64

yum install -y texlive-pdftex-doc.noarch

yum install -y texlive

sudo yum install cairo cairo-devel -y

update.packages(ask = FALSE)

install.packages("dplyr", dependencies = TRUE)

install.packages("tidyr", dependencies = TRUE)

install.packages("data.table", dependencies = TRUE)

install.packages("ggplot2", dependencies = TRUE)

install.packages("plotly", dependencies = TRUE)

install.packages("lmtest", dependencies = TRUE)

install.packages("caret", dependencies = TRUE)

install.packages("lubridate", dependencies = TRUE)

install.packages("forecast", dependencies = TRUE)

install.packages("httr", dependencies = TRUE)

install.packages("jsonlite", dependencies = TRUE)

install.packages("readr", dependencies = TRUE)

install.packages("openxlsx", dependencies = TRUE)

install.packages("stringr", dependencies = TRUE)

install.packages("magrittr", dependencies = TRUE)

install.packages(c("dplyr", "ggplot2", "tidyr", "caret"))

install.packages("Cairo", dependencies = TRUE)

install.packages("pandoc", dependencies = TRUE)

wget https://www.cairographics.org/releases/cairo-1.16.0.tar.xz

解压源码

tar -xvf cairo-1.16.0.tar.xz

cd cairo-1.16.0/

配置构建系统

./configure

编译

make

安装

sudo make install

sudo yum groupinstall "X Window System"

sudo yum install xorg-x11-server-Xorg xorg-x11-xauth xorg-x11-apps

在 R 中使用 library(Cairo) 时,如果遇到问题,通常可以通过以下步骤进行排查和解决:

  1. 确认 Cairo 包是否已安装

首先,确保 Cairo 包已经成功安装。可以使用以下命令检查:

R

installed.packages()

如果没有找到 Cairo,请重新安装它:

R

install.packages("Cairo", dependencies = TRUE)

  1. 检查错误信息

运行 library(Cairo) 后,如果出现错误信息,请仔细查看这些错误提示。这些信息将有助于诊断问题的具体原因。

  1. 安装依赖项

确保所有必要的依赖项都已安装,特别是图形相关的库。可以通过以下命令安装可能缺失的库:

bash

sudo yum install cairo cairo-devel libjpeg-turbo-devel libpng-devel pango pango-devel libicu libicu-devel

  1. 检查 R 的版本

确保你的 R 版本是最新的,某些包可能与较旧的 R 版本不兼容。可以使用以下命令更新 R:

bash

sudo yum update R

  1. 更新其他 R 包

确保你的其他 R 包都是最新的,这有助于避免版本冲突:

R

update.packages()

  1. 验证 pkg-config

确保 pkg-config 正常工作,并能够找到 Cairo。你可以运行以下命令:

bash

pkg-config --cflags --libs cairo

如果有错误,请确保 Cairo 库正确安装,并且 PKG_CONFIG_PATH 环境变量设置正确。

  1. 重启 R 会话

在完成上述步骤后,重启 R 会话,然后再次尝试加载 Cairo 包:

R

library(Cairo)

  1. 从源代码安装(可选)

如果问题仍然存在,可以考虑从源代码编译 Cairo 和其他依赖。具体步骤参考之前的信息。

如果您仍然遇到问题,请提供具体的错误消息,以便进一步帮助您!

2024/9/28 23:38:53

library(Cairo)

没有任何输出是对的吗

2024/9/28 23:38:58

在 R 中,运行 library(Cairo) 如果没有任何输出,通常表示成功加载了该包。这是正常的行为,R 在加载包时并不一定会提供反馈,除非遇到错误。

检查包是否成功加载

你可以通过以下命令确认 Cairo 是否已成功加载:

R

search()

在返回的列表中,如果看到 package:Cairo,则说明包已经成功加载。

进行简单测试

为了确保 Cairo 正常工作,可以运行一个简单的绘图示例:

R

Cairo::CairoPNG("test.png")

plot(1:10, 1:10, main = "Test Plot")

dev.off()

这段代码将创建一个名为 test.png 的文件,其中包含一个简单的散点图。如果文件生成且图像正常,则说明 Cairo 包工作正常。

如果您有其他问题或需要进一步的帮助,请告诉我!

2024/9/28 23:39:50

> Cairo::CairoPNG("test.png")

> plot(1:10, 1:10, main = "Test Plot")

> dev.off()

null device

2024/9/28 23:39:53

在 R 中,dev.off() 返回 null device 是正常的,这表示图形设备已经成功关闭。整个过程看起来是正常的。

检查输出文件

请检查当前工作目录中是否生成了 test.png 文件。你可以使用以下命令确认当前工作目录:

R

getwd()

然后在该目录下查找 test.png 文件。如果文件存在且图像显示正常,则说明 Cairo 包正常工作。

如果没有找到文件

如果没有找到 test.png 文件,请确保你具有写入当前工作目录的权限,或者尝试指定一个完整的路径来保存文件,比如:

R

Cairo::CairoPNG("/path/to/your/directory/test.png")

请将 /path/to/your/directory/ 替换为你希望保存文件的实际路径。

错误信息 svg: Cairo-based devices are not available for this platform 通常表示在当前平台上无法使用基于 Cairo 的 SVG 设备。这可能与系统环境或 Cairo 库的安装有关。以下是一些解决步骤:

  1. 确认 Cairo 包是否正确安装

确保 Cairo 包及其依赖项已正确安装。可以通过以下命令重新安装:

R

install.packages("Cairo", dependencies = TRUE)

  1. 检查系统依赖项

确保你的系统中安装了正确的 Cairo 库及其开发文件。具体步骤因操作系统而异。

对于 Ubuntu/Debian 系统:

bash

sudo apt-get install libcairo2-dev libxt-dev

对于 Fedora/RHEL 系统:

bash

sudo yum install cairo-devel libX11-devel

  1. 确保 R 和包的版本兼容

确保你使用的 R 版本与 Cairo 包兼容。如果有较旧版本,考虑更新 R 和所有相关包:

R

update.packages()

  1. 使用其他图形设备

如果继续遇到问题,可以尝试使用其他图形设备,例如 PNG 或 PDF:

R

使用 PNG 设备

Cairo::CairoPNG("test.png")

plot(1:10, 1:10, main = "Test Plot")

dev.off()

使用 PDF 设备

Cairo::CairoPDF("test.pdf")

plot(1:10, 1:10, main = "Test Plot")

dev.off()

  1. 从源代码安装

如果问题仍然存在,可以尝试从源代码安装 Cairo 和其依赖库。根据你的操作系统,具体步骤会有所不同。

  1. 重新启动 R 会话

完成上述步骤后,建议重启 R 会话,然后再次尝试加载 Cairo 包并生成图形。

错误信息 unable to open connection to X11 display '' 通常发生在尝试在没有 X11 图形环境的系统上运行图形设备时。以下是一些可能的解决方法:

  1. 使用无头模式

如果你在一个没有图形用户界面的环境(例如服务器)上运行 R,可以使用无头模式来生成图形。例如,使用 PNG 或 PDF 设备,而不是依赖 X11:

R

使用 PNG 设备

png("output.png")

plot(1:10, main = "Test Plot")

dev.off()

或者使用 PDF 设备

pdf("output.pdf")

plot(1:10, main = "Test Plot")

dev.off()

  1. 设置 DISPLAY 环境变量

如果你确实需要在带有图形界面的环境中运行 R,但仍然遇到此错误,可以尝试设置 DISPLAY 环境变量。通常在终端中执行以下命令:

bash

export DISPLAY=:0

然后重新启动 R 会话。

  1. 检查 X11 是否安装和正在运行

确保你的系统上安装了 X11,并且 X 服务器正在运行。可以通过以下命令确认:

bash

sudo apt-get install xorg

然后启动 X 服务器。

  1. 使用 RStudio

如果你使用的是 RStudio,它会管理图形设备。因此,直接在 RStudio 中运行你的代码,通常不会遇到此类问题。

  1. 使用 VNC 或 SSH 转发

如果你希望使用图形界面,且在远程服务器上工作,可以通过 VNC 连接或使用 SSH 转发来实现:

SSH 转发:

bash

ssh -X user@hostname

这样就可以在 SSH 会话中打开 X11 应用程序。

  1. 检查权限

确保当前用户对 X11 服务器有访问权限,可以使用以下命令允许所有用户连接:

bash

xhost +

  1. 使用 Docker 容器

如果你在 Docker 容器中工作,确保容器能够访问主机的 X11 服务器,这可能涉及到运行容器时添加一些参数。

在 CentOS 7 上遇到 unable to open connection to X11 display '' 错误,通常是因为没有 X11 图形环境或配置不当。下面是一些解决步骤:

  1. 使用无头模式

如果你只需要生成图形文件(如 PNG 或 PDF),可以使用无头模式,不依赖于 X11:

R

使用 PNG 设备

png("output.png")

plot(1:10, main = "Test Plot")

dev.off()

或者使用 PDF 设备

pdf("output.pdf")

plot(1:10, main = "Test Plot")

dev.off()

  1. 确保 X11 已安装

如果需要在图形界面下运行 R,请确保已经安装了 X11 和相关库:

bash

sudo yum groupinstall "X Window System"

sudo yum install xorg-x11-server-Xorg xorg-x11-xauth xorg-x11-apps

  1. 设置 DISPLAY 环境变量

在终端中运行以下命令设置 DISPLAY 环境变量:

bash

export DISPLAY=:0

  1. 检查 X11 服务器运行状态

确保你的 X11 服务器正在运行。可以使用以下命令查看:

bash

ps -e | grep X

如果没有看到相关进程,你可能需要启动 X11:

bash

startx

  1. 使用 SSH 转发(如果是远程连接)

如果你通过 SSH 连接到 CentOS 服务器,可以使用 X11 转发:

bash

ssh -X user@your_server_ip

确保在 SSH 配置文件(通常位于 /etc/ssh/sshd_config)中启用 X11Forwarding:

bash

X11Forwarding yes

然后重启 SSH 服务:

bash

sudo systemctl restart sshd

  1. 检查权限

如果你仍然遇到问题,请确保你对 X11 服务器有访问权限。在终端中运行:

bash

xhost +

这将允许所有用户连接到 X11 服务器。

  1. 使用 VNC

如果你需要一个图形界面,可以考虑安装和使用 VNC 服务器。这样即使在没有直接访问 X11 的情况下,也能通过 VNC 客户端进行远程图形操作。

  1. 使用 Docker(如果适用)

如果你在 Docker 容器中工作,确保容器能够访问主机的 X11 服务器,这可能涉及到在运行容器时添加一些参数。

总结

如果以上方法都不能解决问题,请提供更多上下文信息,例如你是如何运行 R 的,以及你的环境配置,以便进一步帮助你排查问题。

yum install -y libxkbcommon-x11

rstudio-2024.09.0-375-x86_64.rpm

https://objects.githubusercontent.com/github-production-release-asset-2e65be/571770/cdb6377c-c961-4c95-ba06-f33fc418a03f?X-Amz-Algorithm=AWS4-HMAC-SHA256\&X-Amz-Credential=releaseassetproduction%2F20240930%2Fus-east-1%2Fs3%2Faws4_request\&X-Amz-Date=20240930T042903Z\&X-Amz-Expires=300\&X-Amz-Signature=433195e37387fb260da0cc7a41a083c78ee0e327960b9140e59889e0cbad09e7\&X-Amz-SignedHeaders=host\&response-content-disposition=attachment%3B filename%3Dpandoc-3.4-linux-amd64.tar.gz\&response-content-type=application%2Foctet-stream

设置R_HOME的环境变量

export MANAGE_LOCAL_HBASE=true

export MANAGE_LOCAL_SOLR=true

export ZK_HOME=/home/zookeeper

export HADOOP_HOME=/home/hadoop-3.4.0

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export ATLAS_HOME=/home/apache-atlas-2.3.0

export MYSQL_HOME=/home/mysql

export JAVA_HOME=/usr/java/jdk-17

export M2_HOME=/home/maven

export CLASSPATH=.:JAVA_HOME/lib:JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar

export SPARK_HOME=/home/spark-3.3.3-bin-hadoop3

#export KAFKA_HOME=/home/kafka

#export HBASE_HOME=/home/hbase-2.5.5-hadoop3

#export SOLR_HOME=/home/solr/server/solr

export SPARK_CONF_DIR=$SPARK_HOME/conf

export HIVE_HOME=/home/apache-hive-3.1.3-bin

export FLINK_HOME=/home/flink

export KYUUBI_HOME=/home/kyuubi-1.8.0

export R_HOME=/usr/local/R

export PATH=PATH:R_HOME/bin:R_HOME/lib64/R/bin:JAVA_HOME/bin:JAVA_HOME/jre/bin:M2_HOME/bin:ATLAS_HOME/bin:MYSQL_HOME/bin:SPARK_HOME/sbin:SPARK_HOME/bin:HIVE_HOME/bin:HADOOP_HOME/bin:HADOOP_HOME/sbin:FLINK_HOME/bin:KYUUBI_HOME/bin:ZK_HOME/bin

source /etc/profile

相关推荐
Qter_Sean15 分钟前
自己动手写Qt Creator插件
开发语言·qt
何曾参静谧19 分钟前
「QT」文件类 之 QIODevice 输入输出设备类
开发语言·qt
爱吃生蚝的于勒1 小时前
C语言内存函数
c语言·开发语言·数据结构·c++·学习·算法
小白学大数据3 小时前
Python爬虫开发中的分析与方案制定
开发语言·c++·爬虫·python
冰芒猓4 小时前
SpringMVC数据校验、数据格式化处理、国际化设置
开发语言·maven
失落的香蕉4 小时前
C语言串讲-2之指针和结构体
java·c语言·开发语言
红中马喽4 小时前
JS学习日记(webAPI—DOM)
开发语言·前端·javascript·笔记·vscode·学习
杜杜的man5 小时前
【go从零单排】Closing Channels通道关闭、Range over Channels
开发语言·后端·golang
java小吕布5 小时前
Java中Properties的使用详解
java·开发语言·后端
versatile_zpc6 小时前
C++初阶:类和对象(上)
开发语言·c++