linux无网安装------GCC、GCC-C++

[复制链接]
发表于 2026-10-6 12:50:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

机房里新上架一台机器、或者客户现场只给了内网不给外网时,最尴尬的就是源码装 GCC 要一路 make 半小时。这种情况走离线包是最快的:提前在有网的机器上把 rpm 全打下来,拷到目标机一次装完。本文记录离线安装 GCC 与 GCC-C++ 的完整步骤,以及几个必须注意的参数。

一、离线包从哪来

离线安装包一般从同版本系的机器上用 yum 的下载功能把 rpm 拉到本地目录,例如:

mkdir -p /tmp/gcc-offline
yum install --downloadonly --downloaddir=/tmp/gcc-offline gcc gcc-c++

这样 /tmp/gcc-offline 里会出现一堆 .rpm 文件。用 U 盘或内网传输拷到目标机的同一个目录里即可。注意目标机与源机的系统大版本要一致(比如都是 CentOS 7),跨大版本拿 rpm 很容易装出依赖地狱。

二、解压(zip 包的情况)

如果拿到的是别人打包好的 zip 压缩包,先解压:

unzip GCC离线安装.zip

进入解压后的目录,确认里面有 gcc 和 gcc-c++ 两个子目录:

cd GCC离线安装/gcc
ls

三、安装全部 rpm

进到 rpm 所在目录后,一次性装上:

cd GCC离线安装/gcc
rpm -Uvh *.rpm --nodeps --force

这里逐条解释一下参数:

  • -U 是升级安装,包已存在就顶掉旧版本,不存在就直接装,对离线场景比 -i 更省事。
  • -v 输出过程,方便盯着有没有卡住。
  • -h 用进度条显示,包多的时候能看出进度。
  • --nodeps 跳过依赖关系检查,离线时几乎必带,因为依赖包很可能没打全。
  • --force 强制覆盖,遇到文件冲突时不会直接中断。

只装单个包时用另一个形式:

rpm -i 文件名.rpm

四、验证装没装成功

gcc --version
g++ --version
rpm -qa | grep -E "^gcc|^gcc-c\+\+"

能打印出版本号、grep 能看到对应包,就说明这一轮落地完成。

五、--nodeps 带来的坑

这是离线安装最容易翻车的地方。跳过依赖检查意味着系统不会替你补上依赖包,装是装上了,运行时却可能报缺 so 文件。建议装完之后跑一遍业务相关的编译命令做真实验证,而不是只看 rpm 返回成功:

echo 'int main(){return 0;}' > /tmp/t.c
gcc /tmp/t.c -o /tmp/t && /tmp/t && echo ok

如果确实缺依赖,回到有网的机器上按缺失包名补下 rpm,再拷过去单独装。

六、更省事的做法:只补一个源

如果目标机能通内网 yum 源,其实不必走离线包,直接把源配成内网镜像,一条命令就能补齐:

yum -y install gcc gcc-c++

离线包真正的价值在于 environments 完全隔离的场景:客户机器不能连任何源、也不能拷大文件、且必须留痕审计。日常维护里,能用源就别走离线。

七、多版本共存时切换默认编译器

离线包里如果同时带了多个版本,装完默认是按包优先级决定的。要手动指定用哪个,可以用 alternatives 注册一下:

sudo alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100
sudo alternatives --config gcc

之后 gcc 指向的就是你选的那一个,升级其他包不会悄悄改回去。

八、离线包目录怎么带回去

拷贝时别只拷 rpm 文件本身,建议把 whole 目录一起打包,并记一份清单,方便审计和复盘:

cd /tmp/gcc-offline && tar czf ../gcc-offline.tgz *
rpm -qa | grep -E "^gcc|^gcc-c\+\+" > gcc-installed.txt

qidao123.com企服评测-应用市场 编辑提示

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表