AIX系统安装yum包管理器,使用bash替换ksh

天锦 发表于 码农也得有格调 分类,标签:

安装yum

虽然AIX系统支持安装rpm格式的软件包,比使用smit安装软件方便一些,软件库也多一些,但是当你安装一个包依赖多个包时,挨个下载依赖包,挨个安装就过于麻烦。最好还是部署一个yum包管理器来管理软件安装方便一些。

可以到https://www.ibm.com/support/pages/aix-toolbox-linux-applications-downloads-alpha  下载yum的rpm包和其相关依赖来安装yum,不错的是IBM提供了一个脚本实现了一键安装yum。该脚本下载地址http://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/ezinstall/ppc/yum.sh ,下载之后可以通过ftp上传到aix系统中,添加执行权限后执行安装就可以了。

#chmod +x yum.sh
#./yum.sh
Attempting download of rpm.rte & yum_bundle.tar ...

离线安装yum

安装过程受网络环境的影响,如果你的网络不好,会一直卡在“Attempting download of rpm.rte & yum_bundle.tar ...”这里,可以提前到IBM的FTP站上面下载位于/aix/freeSoftware/aixtoolbox/INSTALLP/ppc/目录下的rpm.rte文件,如果你是AIX6.1,则需要下载rpm.rte.4.13.0.11;下载位于/aix/freeSoftware/aixtoolbox/ezinstall/ppc目录下的yum_bundle.tar,或者使用HTTP方式下载这两个文件:

http://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/INSTALLP/ppc/rpm.rte

http://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/ezinstall/ppc/yum_bundle.tar

yum.sh脚本会在/tmp目录下创建一个以时间命名的临时文件夹来存放这两个下载的文件,如,对yum.sh进行修改,手动指定tmppath,修改如下:

#Create a temporary directroy where all downloads should go.
curr_time=`date +%Y%m%d%H%M%S`
mkdir -p /tmp/yum-manually-tmpdir
tmppath=`echo /tmp/yum-manually-tmpdir`
cd $tmppath

yum.sh脚本使用ftp下载文件,我们离线提前下载好了,所以就不需要脚本用FTP下载了,跳过这一步,对相关代码进行注释。

# expect <<YUMEOF
#     log_user 0
#     set timeout -1
#     spawn ftp public.dhe.ibm.com
#     expect "Name (public.dhe.ibm.com:*): "
#     send "$username\r"
#     expect "Password:"
#     send "$userpassword\r"
#     expect "ftp>"
#     send "lcd $tmppath\r"
#     expect "ftp>"
#     send "bin\r"
#     expect "ftp>"
#     send "passive\r"
#     expect "ftp>"
#     send "cd aix/freeSoftware/aixtoolbox/INSTALLP/ppc\r"
#     expect "ftp>"
#     if {"$oslvl" == "6.1.0.0"} {
#         send "get rpm.rte.4.13.0.11\r"
#     } else {
#         send "get rpm.rte\r"
#     }
#     expect "ftp>"
#     send "cd ../../ezinstall/ppc\r"
#     expect "ftp>"
#     send "get yum_bundle.tar\r"
#     send "bye\r"
#     expect eof
# YUMEOF

脚本处理好后上传到AIX系统中,并将提前下载好的rpm.rte和yum_bundle.tar上传到/tmp/yum-manually-tmpdir目录下,执行修改好的yum.sh脚本,就能实现离线安装了。

注意我测试的是AIX7.2,如果你是AIX6.1,请注意rpm.rte要下载rpm.rte.4.13.0.11后重命名为rpm.rte,再上传到tmp目录。

OpenSSL的问题

yum安装完成后,执行yum update尝试更新系统,结果我遇到了和libssl.a相关的报错,具体如下:

#yum update
…………
…………
--> Finished Dependency Resolution
Error: Package: openldap-2.4.56-1.ppc (AIX_Toolbox)
           Requires: libcrypto.a(libcrypto.so.1.0.2)
Error: Package: krb5-libs-1.18.3-1.ppc (AIX_Toolbox)
           Requires: libssl.a(libssl.so.1.0.2)
Error: Package: openldap-2.4.56-1.ppc (AIX_Toolbox)
           Requires: libssl.a(libssl.so.1.0.2)
Error: Package: python-2.7.18-1.ppc (AIX_Toolbox)
           Requires: libssl.a(libssl.so.1.0.2)
Error: Package: curl-7.74.0-1.ppc (AIX_Toolbox)
           Requires: libssl.a(libssl.so.1.0.2)
Error: Package: krb5-libs-1.18.3-1.ppc (AIX_Toolbox)
           Requires: libcrypto.a(libcrypto.so.1.0.2)
Error: Package: libssh2-1.9.0-1.ppc (AIX_Toolbox)
           Requires: libcrypto.a(libcrypto.so.1.0.2)
Error: Package: curl-7.74.0-1.ppc (AIX_Toolbox)
           Requires: libcrypto.a(libcrypto.so.1.0.2)
Error: Package: python-2.7.18-1.ppc (AIX_Toolbox)
           Requires: libcrypto.a(libcrypto.so.1.0.2)
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest
#

因为我在安装系统时就勾选了安装SSH服务器,所以在系统安装好后就已经有了OpenSSL,但是不知道是出于什么原因,yum没有发现OpenSSL的库文件,造成报错。折腾了半天,最终升级了openssl的版本后修复报错。

到IBM网站上面下载最新版本的OpenSSL包,地址:https://www-01.ibm.com/marketing/iwm/platform/mrs/assets?source=aixbp

我下载到的是openssl-1.0.2.2100.tar.Z,将此包上传到/root/目录下,进行解压:

#zcat openssl-1.0.2.2100.tar.Z | tar -xvf -
#cd openssl-1.0.2.2100
#smitty update_all

注意:因为更新的是SSL,SSH运行时依赖SSL,所以不能通过SSH连接进行更新,需要在vty或console终端中进行更新。

安装bash替换ksh

AIX系统默认的是ksh,不支持Tab补全就很反人类,可以手动安装bash进行替换

#yum install bash -y

通过修改/etc/passwd文件指定root用户默认Shell为bash,AIX系统中root用户的默认家目录是根目录,顺便将其改为/root目录

#vi /etc/passwd
root:!:0:0::/root:/bin/bash
daemon:!:1:1::/etc:
bin:!:2:2::/bin:
sys:!:3:3::/usr/sys:
adm:!:4:4::/var/adm:
uucp:!:5:5::/usr/lib/uucp:
guest:!:100:100::/home/guest:

修改系统配置文件向系统注册bash作为shell

#vi /etc/security/login.cfg
usw:
        shells = /bin/bash,/bin/sh,/bin/bsh,/bin/csh,/bin/ksh,/bin/tsh,/bin/ksh93,/usr/bin/sh,/usr/bi
n/bsh,/usr/bin/csh,/usr/bin/ksh,/usr/bin/tsh,/usr/bin/ksh93,/usr/bin/rksh,/usr/bin/rksh93,/usr/sbin/u
ucp/uucico,/usr/sbin/sliplogin,/usr/sbin/snappd


在用户家目录下创建profile文件

#vi ~/.profile
export PS1="[\u@\H \W]\$ "

至此,替换换成。

0 篇评论

发表我的评论