redhat/CentOS6/7/8离线安装依赖包pcre-devel zlib zlib-devel openssl openssl-devel gcc gcc-c++等编译包

本文介绍了如何在无法上网的CentOS系统上离线安装GCC、c++和其他开发工具包,包括从ISO安装包、网上下载或使用阿里云、清华大学镜像站获取 RPM 包,并提供了安装步骤和注意事项。

redhat和centos安装是一样 ,这里已centos7为示例

#能够上网 ,
centos
yum -y install gcc 就可以安装了
如果依赖其他源
yum install epel-release -y 就可以了 #这里是epel 用的最多的

redhat
需要替换yum源

这里提供一个简单的方法
1 先删除rehat
cd /etc/yum.repos.d/redhat.repo
2 ,下载 CentOS-Base.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

在这里插入图片描述

vi 使用全文替换功能将文件中所有的releasever替换成你自己系统的版本(6为自己的系统):releasever替换成你自己系统的版本(6为自己的系统) :%s /re

<think> 根据用户的问题,需要解决两个主要问题: 1. 编译R-4.5.0时出现的`collect2: error: ld returned 1 exit status`错误 2. 执行`sudo yum install`时提示`sudo: yum:找不到命令` 首先,第二个问题可能更基础,因为如果没有yum,就无法安装依赖包,进而导致编译所需的库缺失,从而引发第一个问题。 因此,我们先解决第二个问题:`sudo: yum:找不到命令` 出现这个问题的可能原因: 1. 系统不是基于Red Hat的发行版(如CentOS、RHEL、Fedora等),而是Debian系的(如Ubuntu),则管理工具是apt,而不是yum。 2. 系统是Red Hat系的,但yum没有安装或被删除。 3. yum的路径不在sudo的环境变量中。 解决方案: 情况1:如果是Debian系系统(如Ubuntu),则使用apt代替yum。 检查系统版本: ```bash cat /etc/os-release ``` 如果显示Ubuntu等,则使用apt安装依赖,例如: ```bash sudo apt update sudo apt install build-essential gfortran libreadline-dev libpcre2-dev zlib1g-dev libbz2-dev liblzma-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libtiff-dev libcairo2-dev libpango1.0-dev texlive-epstopdf ``` 情况2:如果是CentOS/RHEL系统但yum未安装,则需要安装yum(但这种情况很少见,因为系统通常预装yum)。 情况3:检查yum是否存在以及路径: ```bash which yum # 或者 ls /usr/bin/yum ``` 如果存在,可能是sudo的环境变量问题,可以尝试使用完整路径: ```bash sudo /usr/bin/yum install [名] ``` 另外,如果系统是最小化安装,可能没有安装sudo,那么需要先以root用户安装sudo: ```bash su - # 然后输入root密码 yum install sudo ``` 现在,解决第一个问题:编译R-4.5.0时的链接错误。 在确保能够使用管理工具安装依赖后,我们需要安装编译R所需的所有开发库。 对于CentOS/RHEL系统,安装依赖: ```bash sudo yum install gcc gcc-c++ gcc-gfortran readline-devel pcre2-devel zlib-devel bzip2-devel xz-devel libcurl-devel libjpeg-turbo-devel libpng-devel libtiff-devel cairo-devel pango-devel texlive-epstopdf ``` 对于Ubuntu/Debian系统: ```bash sudo apt update sudo apt install build-essential gfortran libreadline-dev libpcre2-dev zlib1g-dev libbz2-dev liblzma-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libtiff-dev libcairo2-dev libpango1.0-dev texlive-epstopdf ``` 安装依赖后,重新配置和编译: ```bash # 进入R源码目录 cd /mnt/65f6468a-2da7-47c8-bbfa-e1bbde34b290/R-4.5.0 ./configure --enable-R-shlib make sudo make install ``` 如果仍然出现链接错误,可能还需要注意: 1. 检查是否有旧版本的R残留,清除旧的编译文件: ```bash make distclean ``` 然后重新configure和make。 2. 设置环境变量,指定库和头文件路径(如果依赖库安装在非标准路径): ```bash export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH export LDFLAGS="-L/usr/local/lib" export CPPFLAGS="-I/usr/local/include" ``` 3. 内存不足问题:如果系统内存较小,在编译过程中可能会因为内存耗尽而失败。可以尝试减少并行编译数,比如将`make`改为`make -j1`。 4. 检查错误日志:在make的输出中,链接错误之前通常会有更详细的错误信息,例如未定义的引用(undefined reference)。根据这些信息可以确定缺失的库,然后安装对应的开发。 5. 如果系统是64位但安装了32位的库,也可能导致问题。确保安装的是64位的开发6. 如果使用的是较新的编译器版本,而系统库较旧,可能需要更新系统或使用兼容模式。 7. 引用[1]中提到的问题是与glibc版本相关,如果系统glibc版本过低,可能需要升级系统或使用较旧版本的R。 由于用户是在VMware下的CentOS7中操作,所以重点考虑CentOS7的解决方案。 注意:CentOS7默认的glibc版本是2.17,而R-4.5.0可能需要更新的glibc。如果确实如此,可能需要升级系统或使用较旧版本的R。 但通常R的源码会尽量保持对较旧系统的兼容。如果遇到glibc问题,错误信息中会明确提示某个符号在glibc的某个版本中未定义,如引用[1]中的`memcpy@GLIBC_2.14'`。这时,如果系统glibc版本低于2.14,则无法运行。CentOS7的glibc版本是2.17,高于2.14,所以应该没问题。 如果确实遇到glibc版本问题,解决方案是升级系统或安装高版本的glibc(非常危险,不推荐),或者更换为较新版本的操作系统。 综上所述,步骤总结: 1. 解决yum命令不可用的问题,确保能安装依赖。 2. 安装所有编译依赖。 3. 重新编译R,注意环境变量和错误信息。 如果以上步骤仍然无法解决,请提供具体的错误日志(编译输出中链接错误之前的详细信息)。 相关问题: 1. 如何在Linux中修复“sudo: yum:找不到命令”的错误? 2. 编译开源软件时遇到“collect2: error: ld returned 1 exit status”错误有哪些常见原因? 3. 如何在CentOS7安装最新版本的R语言? 4. 如何解决Linux中glibc版本不兼容的问题? 5. 在虚拟机中编译大型软件时如何避免内存不足? </think>### 解决R-4.5.0编译错误及yum命令缺失问题 #### 一、解决 `sudo: yum:找不到命令` 问题 此错误通常发生在非RedHat系系统或最小化安装环境中: 1. **检查系统类型** ```bash cat /etc/os-release # 确认系统是CentOS还是Ubuntu ``` 2. **解决方案** - **Debian/Ubuntu系统**(使用apt替代): ```bash sudo apt update sudo apt install build-essential gfortran libreadline-dev \ libpcre2-dev zlib1g-dev libbz2-dev liblzma-dev libcurl4-openssl-dev \ libjpeg-dev libpng-dev libtiff-dev libcairo2-dev libpango1.0-dev ``` - **CentOS系统缺失yum**: ```bash # 检查yum路径 ls /usr/bin/yum # 或 which yum # 修复yum安装 sudo rpm -e --nodeps yum && sudo rpm -ivh https://vault.centos.org/7.9.2009/os/x86_64/Packages/yum-3.4.3-168.el7.centos.noarch.rpm ``` - **环境变量问题**: ```bash export PATH=/usr/bin:$PATH # 临时修复 echo 'export PATH=/usr/bin:$PATH' >> ~/.bashrc # 永久修复 ``` #### 二、解决 `collect2: error: ld returned 1 exit status` 编译错误 此错误表明链接阶段失败,通常由库缺失或冲突引起: 1. **关键依赖安装**(CentOS示例): ```bash sudo yum install readline-devel pcre2-devel zlib-devel bzip2-devel \ xz-devel libcurl-devel libjpeg-turbo-devel libpng-devel \ libtiff-devel cairo-devel pango-devel texlive-epstopdf ``` 2. **配置环境变量**: ```bash export LDFLAGS="-L/usr/local/lib -Wl,-rpath=/usr/local/lib" export CPPFLAGS="-I/usr/local/include" ``` 3. **重新编译步骤**: ```bash cd /mnt/65f6468a-2da7-47c8-bbfa-e1bbde34b290/R-4.5.0 make distclean # 清除旧编译 ./configure --enable-R-shlib make -j$(nproc) # 使用所有CPU核心 ``` 4. **常见问题排查**: - **库路径冲突**:检查`/etc/ld.so.conf`是否含`/usr/local/lib` - **内存不足**:添加4GB交换空间 ```bash sudo dd if=/dev/zero of=/swapfile bs=1G count=4 sudo mkswap /swapfile && sudo swapon /swapfile ``` - **架构不匹配**(如引用[2]问题): ```bash ./configure --build=x86_64-pc-linux-gnu # 显式指定架构 ``` #### 三、典型错误解决方案 1. **`undefined reference to `memcpy@GLIBC_2.14'`**(如引用[1]) ```bash # 检查glibc版本 ldd --version # 解决方案:使用devtoolset升级编译器 sudo yum install centos-release-scl sudo yum install devtoolset-9 scl enable devtoolset-9 bash ``` 2. **文件权限问题**(如引用[3]中VMware环境): ```bash sudo chown -R $USER:$USER /mnt/65f6468a-2da7-47c8-bbfa-e1bbde34b290 ``` #### 四、验证安装 ```bash # 检查生成的二进制 ldd libR.so | grep "not found" # 运行基础测试 ./bin/R --vanilla -e "print(sessionInfo())" ``` > 注:类似引用[1]中Oracle安装的库路径问题[^1]和引用[2]中的架构指定问题[^2],R编译需要精确的环境配置。VMware环境需特别注意磁盘权限(如引用[3])[^3]。 --- ### 相关问题 1. 如何在Linux中修复损坏的yum安装? 2. 编译开源软件时如何正确设置LD_LIBRARY_PATH? 3. 如何解决glibc版本不兼容导致的符号未定义错误? 4. VMware虚拟机中编译大型项目需要注意哪些系统配置? 5. 如何为R语言创建自定义的模块化编译配置
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值