加入收藏 | 设为首页 | 会员中心 | 我要投稿 站长网 (https://www.0576zz.com/)- 容器、建站、数据处理、数据库 SaaS、云渲染!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

Linux老手也常踩的5个Unix环境搭建坑

发布时间:2026-10-12 10:15:12 所属栏目:Unix 来源:DaWei
导读:  去年十二月那台AIX服务器,我原以为装个GCC就完事儿了——结果在make install那步卡了三天。老张叼着烟凑过来瞅,说“你是不是没改/etc/environment?”我拍桌子说“PATH早加了啊!”他冷笑一声,指了指屏幕右下角的时间—

  去年十二月那台AIX服务器,我原以为装个GCC就完事儿了——结果在make install那步卡了三天。老张叼着烟凑过来瞅,说“你是不是没改/etc/environment?”我拍桌子说“PATH早加了啊!”他冷笑一声,指了指屏幕右下角的时间——凌晨两点十七分,显示器上还飘着“collect2: ld returned 1 exit status”的报错,而窗外雨点子正噼里啪啦砸在空调外机上。

  第一个坑是libtool版本。AIX自带的2.4.2根本不认新版gcc的.la文件,我原以为降级到2.2.6就行,结果编译时又报“undefined symbol: __libc_init”。老周在隔壁工位接电话,突然吼了句“谁把/usr/local/lib的符号链接删了?”,我这才想起上周清理旧版本时手滑了——那台机器的/usr/local/lib是软链到/opt/freeware/lib的,而新装的gcc偏要往/usr/local/lib64里塞东西。等我把符号链接补回去,外卖都凉透了。

  第二个坑更阴——locale设置。AIX的LANG默认是C,而gcc 11.2需要C.UTF-8。我照着文档改了/etc/environment,结果make check时还是报“locale not supported”。老李蹲在机房地上修冷风机,抬头喊了句“你是不是没改/etc/security/login.cfg?”我冲过去一看,好家伙,login.cfg里还锁着“LANG=C”呢。改完重启,构建卡在87%不动了——这时候才发现,原来AIX的locale生成要跑“localedef -f UTF-8 -i C C.UTF-8”,而文档里根本没提这茬。

  说到文档,第三个坑直接让我骂娘。IBM官方文档里写“AIX 7.2支持gcc 11.2”,结果实际装的时候,依赖的binutils要2.38以上,而AIX的rpm仓库里只有2.35。我翻遍论坛,发现有人用“rpm -Uvh --force”强行装,结果ld直接崩溃。最后是老周从他那台测试机上拷了binutils-2.38的rpm包——那包还是他三年前自己编译的,版本号里还带着“beta”字样。我边装边想,这哪是“支持”,分明是“我们试过能跑,但出了问题别找我”。

文章配图,仅供参考

  第四个坑是共享库路径。AIX的LD_LIBRARY_PATH和Linux不一样,它要分32位和64位。我装完gcc后,运行“gcc --version”报“libgcc_s.a not found”,检查发现/opt/freeware/lib64里有这库,但LD_LIBRARY_PATH没加。加完再试,又报“libstdc++.so.6 not found”——这次是32位的库没装。等我把32位和64位的库都装全,发现/usr/local/bin里的gcc链接还是指向旧版本——原来make install时没覆盖掉系统自带的gcc,而AIX的which命令优先找/usr/bin下的东西。最后是手动删掉/usr/bin/gcc,再做个软链才搞定。

  第五个坑最离谱——内核参数。AIX的ulimit默认限制太死,编译时开200个线程就报“too many open files”。我改/etc/security/limits里的nofiles参数,结果重启后还是生效不了。老李在工位上啃煎饼果子,含糊不清地说“你是不是没改/etc/security/user?”我冲过去一看,user文件里还锁着“nofiles=2000”呢。改完再试,又报“semop: too many semaphores”——这次是内核的semmsl参数太小。我翻遍IBM文档,发现要改/etc/tunables/nextboot里的ipcs_sem_values,改完重启,构建终于跑完了——但显示器右下角的时间已经跳到早上六点二十三分,而老张的烟灰缸里堆了二十多个烟头。

  后来我跟老周复盘,他说“这就是优胜劣汰——能在这坑里爬出来的,才算真懂Unix。”我冷笑一声,心想这哪是“劣汰”,分明是“IBM故意留坑”。但转念一想,要是所有环境都像Docker那样开箱即用,我们这帮搞底层的是不是就该失业了?不过话说回来,那台AIX服务器到现在还跑着gcc 11.2,而老张的烟灰缸,上周被保洁阿姨当垃圾扔了。

  现在每次有人问我“AIX装gcc难吗”,我都说“不难,也就改二十个配置文件,装三十个依赖包,踩五个坑而已。”他们通常笑笑不说话——但我知道,等他们真去装的时候,肯定会想起我这句话。至于我?我已经在研究如何在AIX上装Clang了——听说那坑更多,但管他呢,反正闲着也是闲着。

(编辑:站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章