charleschchen
作者charleschchen·2021-04-02 10:25
系统架构师·浪潮商用机器有限公司

在AIX上使用yum安装开源软件

字数 17704阅读 7955评论 0赞 6

在AIX上安装开源软件曾经是一个比较麻烦的问题,因为开源软件包的依赖关系比较复杂,用户往往需要花费大量时间来解决依赖问题。对于RPM包依赖问题,曾经的解决方案是去Perzl的网站下载相关开源包的依赖关系:
http://www.perzl.org/aix/index.php?n=FAQs.FAQs
从2016年开始,AIX上引入了yum来自动处理依赖关系,RPM依赖的问题就迎刃而解了。了解Redhat Linux的朋友对yum应该不陌生了,下面我们介绍下在AIX上安装、配置yum的过程。

建议AIX版本

AIX 6.1 TL9 SP6 或更新
AIX 7.1 TL4 或更新
AIX 7.2 或更新

确认AIX上RPM的版本

确认rpm.rte版本不低于4.13.0.3:

# lslpp -l rpm.rte  
Fileset Level State Description   
----------------------------------------------------------------------------  
Path: /usr/lib/objrepos  
rpm.rte 4.13.0.3 COMMITTED RPM Package Manager  
  
Path: /etc/objrepos  
rpm.rte 4.13.0.3 COMMITTED RPM Package Manager  

安装/升级rpm.rte的方法为smitty install_latest/update_all. rpm.rte下载地址:
https://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/INSTALLP/ppc/

安装yum包

下载最新yum包并解压之后,rpm -Uvh *.rpm安装。
yum依赖包下载地址:
https://public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/ezinstall/ppc/

# tar -xvf yum_bundle_v6.tar  
x ca-certificates-2016.10.7-2.aix6.1.ppc.rpm, 214726 bytes, 420 tape blocks  
x curl-7.52.1-1.aix6.1.ppc.rpm, 533288 bytes, 1042 tape blocks  
x db-4.8.24-3.aix6.1.ppc.rpm, 2897799 bytes, 5660 tape blocks  
x gdbm-1.8.3-5.aix5.2.ppc.rpm, 56991 bytes, 112 tape blocks  
x gettext-0.19.7-1.aix6.1.ppc.rpm, 4036762 bytes, 7885 tape blocks  
x glib2-2.14.6-2.aix5.2.ppc.rpm, 1686134 bytes, 3294 tape blocks  
x pysqlite-1.1.7-2.aix6.1.ppc.rpm, 51749 bytes, 102 tape blocks  
x python-2.7.10-1.aix6.1.ppc.rpm, 23333701 bytes, 45574 tape blocks  
x python-devel-2.7.10-1.aix6.1.ppc.rpm, 15366474 bytes, 30013 tape blocks  
x python-iniparse-0.4-1.aix6.1.noarch.rpm, 37912 bytes, 75 tape blocks  
x python-pycurl-7.19.3-1.aix6.1.ppc.rpm, 162093 bytes, 317 tape blocks  
x python-tools-2.7.10-1.aix6.1.ppc.rpm, 830446 bytes, 1622 tape blocks  
x python-urlgrabber-3.10.1-1.aix6.1.noarch.rpm, 158584 bytes, 310 tape blocks  
x readline-6.1-2.aix6.1.ppc.rpm, 489547 bytes, 957 tape blocks  
x sqlite-3.15.2-1.aix6.1.ppc.rpm, 3570302 bytes, 6974 tape blocks  
x yum-3.4.3-8.aix6.1.noarch.rpm, 1385622 bytes, 2707 tape blocks  
x yum-metadata-parser-1.1.4-2.aix6.1.ppc.rpm, 62283 bytes, 122 tape blocks  
# ls -lrt  
total 214512  
-rw-r----- 1 sshd staff 4036762 Feb 25 2017 gettext-0.19.7-1.aix6.1.ppc.rpm  
-rw-r----- 1 sshd staff 56991 Feb 25 2017 gdbm-1.8.3-5.aix5.2.ppc.rpm  
-rw-r----- 1 sshd staff 2897799 Feb 25 2017 db-4.8.24-3.aix6.1.ppc.rpm  
-rw-r----- 1 sshd staff 533288 Feb 25 2017 curl-7.52.1-1.aix6.1.ppc.rpm  
-rw-r----- 1 sshd staff 51749 Feb 25 2017 pysqlite-1.1.7-2.aix6.1.ppc.rpm  
-rw-r----- 1 sshd staff 1686134 Feb 25 2017 glib2-2.14.6-2.aix5.2.ppc.rpm  
-rw-r----- 1 sshd staff 3570302 Feb 25 2017 sqlite-3.15.2-1.aix6.1.ppc.rpm  
-rw-r----- 1 sshd staff 489547 Feb 25 2017 readline-6.1-2.aix6.1.ppc.rpm  
-rw-r----- 1 sshd staff 158584 Feb 25 2017 python-urlgrabber-3.10.1-1.aix6.1.noarch.rpm  
-rw-r----- 1 sshd staff 830446 Feb 25 2017 python-tools-2.7.10-1.aix6.1.ppc.rpm  
-rw-r----- 1 sshd staff 162093 Feb 25 2017 python-pycurl-7.19.3-1.aix6.1.ppc.rpm  
-rw-r----- 1 sshd staff 37912 Feb 25 2017 python-iniparse-0.4-1.aix6.1.noarch.rpm  
-rw-r----- 1 sshd staff 15366474 Feb 25 2017 python-devel-2.7.10-1.aix6.1.ppc.rpm  
-rw-r----- 1 sshd staff 23333701 Feb 25 2017 python-2.7.10-1.aix6.1.ppc.rpm  
-rw-r----- 1 sshd staff 62283 Feb 25 2017 yum-metadata-parser-1.1.4-2.aix6.1.ppc.rpm  
-rw-r--r-- 1 sshd staff 214726 May 12 2017 ca-certificates-2016.10.7-2.aix6.1.ppc.rpm  
-rw-r----- 1 root system 1385622 Dec 4 22:59 yum-3.4.3-8.aix6.1.noarch.rpm  
-rw-r----- 1 root system 54896640 Apr 2 17:53 yum_bundle_v6.tar  

# rpm -Uvh *.rpm   
Preparing... ################################# [100%]  
Updating / installing...  
1:readline-6.1-2 ################################# [ 6%]  
2:sqlite-3.15.2-1 ################################# [ 12%]  
/  
3:gettext-0.19.7-1 ################################# [ 18%]  
add libintl.so.1 (32bits) shared member to /opt/freeware/lib/libintl.a  
add libintl.so.1 (64bits) shared member to /opt/freeware/lib/libintl.a  
/  
4:glib2-2.14.6-2 ################################# [ 24%]  
5:yum-metadata-parser-1.1.4-2 ################################# [ 29%]  
6:gdbm-1.8.3-5 ################################# [ 35%]  
7:db-4.8.24-3 ################################# [ 41%]  
8:python-2.7.10-1 ################################# [ 47%]  
9:pysqlite-1.1.7-2 ################################# [ 53%]  
10:python-iniparse-0.4-1 ################################# [ 59%]  
11:ca-certificates-2016.10.7-2 ################################# [ 65%]  
12:curl-7.52.1-1 ################################# [ 71%]  
13:python-pycurl-7.19.3-1 ################################# [ 76%]  
14:python-urlgrabber-3.10.1-1 ################################# [ 82%]  
15:yum-3.4.3-8 ################################# [ 88%]  
16:python-devel-2.7.10-1 ################################# [ 94%]  
17:python-tools-2.7.10-1 ################################# [100%]  
  

  

  

yum安装源配置

AIX环境安装完yum后,yum配置文件存放在/opt/freeware/etc/yum/yum.conf,其默认的安装源地址为:
https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/
考虑到大部分AIX部署的环境通常与外网有隔离,建议使用下载工具按上述安装源地址一次性下载所有安装包,在本地配置http/ftp服务,然后修改配置文件/opt/freeware/etc/yum/yum.conf,选择本地安装源;
例如本次示例使用的即是本地安装源:

# cat /opt/freeware/etc/yum/yum.conf  
[main]  
cachedir=/var/cache/yum  
keepcache=1  
debuglevel=2  
logfile=/var/log/yum.log  
exactarch=1  
obsoletes=1  
plugins=1  
  
[AIX_Toolbox]  
name=AIX generic repository  
baseurl=ftp://anonymous:anonymous@172.16.10.10/os/aix/aixtoolbox/RPMS/ppc/  
enabled=1  
gpgcheck=0  
  
[AIX_Toolbox_noarch]  
name=AIX noarch repository  
baseurl=ftp://anonymous:anonymous@172.16.10.10/os/aix/aixtoolbox/RPMS/noarch/  
enabled=1  
gpgcheck=0  
  
  
[AIX_Toolbox_72]  
name=AIX 7.2 specific repository  
baseurl=ftp://anonymous:anonymous@172.16.10.10/os/aix/aixtoolbox/RPMS/ppc-7.2/  
enabled=1  
gpgcheck=0

  

安装软件

接下来的一切与Linux环境没有太大差别了,下面是安装gcc/gcc-c++/gcc-go的示例:

# yum repolist  
repo id repo name status  
AIX_Toolbox AIX generic repository 2,561  
AIX_Toolbox_72 AIX 7.2 specific repository 172  
AIX_Toolbox_noarch AIX noarch repository 236  
repolist: 2,969  
  
# yum install gcc  
Setting up Install Process  
Resolving Dependencies  
--> Running transaction check  
---> Package gcc.ppc 0:8.3.0-2 will be installed  
--> Processing Dependency: libgcc = 8.3.0-2 for package: gcc-8.3.0-2.ppc  
--> Processing Dependency: gcc-cpp = 8.3.0-2 for package: gcc-8.3.0-2.ppc  
--> Processing Dependency: info for package: gcc-8.3.0-2.ppc  
--> Processing Dependency: libiconv.a(libiconv.so.2) for package: gcc-8.3.0-2.ppc  
--> Running transaction check  
---> Package gcc-cpp.ppc 0:8.3.0-2 will be installed  
--> Processing Dependency: mpfr >= 4.0.2 for package: gcc-cpp-8.3.0-2.ppc  
--> Processing Dependency: libmpc >= 1.1.0 for package: gcc-cpp-8.3.0-2.ppc  
--> Processing Dependency: zlib >= 1.2.3-3 for package: gcc-cpp-8.3.0-2.ppc  
--> Processing Dependency: gmp >= 6.1.2 for package: gcc-cpp-8.3.0-2.ppc  
--> Processing Dependency: libmpc.a(libmpc.so.3) for package: gcc-cpp-8.3.0-2.ppc  
--> Processing Dependency: libmpfr.a(libmpfr.so.6) for package: gcc-cpp-8.3.0-2.ppc  
--> Processing Dependency: libgmp.a(libgmp.so.10) for package: gcc-cpp-8.3.0-2.ppc  
---> Package info.ppc 0:6.6-2 will be installed  
--> Processing Dependency: ncurses >= 6.1-2 for package: info-6.6-2.ppc  
--> Processing Dependency: gettext >= 0.19.8.1-4 for package: info-6.6-2.ppc  
--> Processing Dependency: libncurses.a(libncurses.so.6) for package: info-6.6-2.ppc  
---> Package libgcc.ppc 0:8.3.0-2 will be installed  
---> Package libiconv.ppc 0:1.16-1 will be installed  
--> Running transaction check  
---> Package gettext.ppc 0:0.19.7-1 will be updated  
---> Package gettext.ppc 0:0.19.8.1-5 will be an update  
--> Processing Dependency: glib2 >= 2.56.1-2 for package: gettext-0.19.8.1-5.ppc  
--> Processing Dependency: libunistring >= 0.9.9-2 for package: gettext-0.19.8.1-5.ppc  
--> Processing Dependency: libxml2 >= 2.9.7 for package: gettext-0.19.8.1-5.ppc  
--> Processing Dependency: libunistring.a(libunistring.so.2) for package: gettext-0.19.8.1-5.ppc  
---> Package gmp.ppc 0:6.1.2-1 will be installed  
--> Processing Dependency: libstdc++ >= 4.2.3-2 for package: gmp-6.1.2-1.ppc  
--> Processing Dependency: libstdc++.a(libstdc++.so.6) for package: gmp-6.1.2-1.ppc  
---> Package libmpc.ppc 0:1.1.0-1 will be installed  
---> Package mpfr.ppc 0:4.0.2-2 will be installed  
---> Package ncurses.ppc 0:6.2-1 will be installed  
---> Package zlib.ppc 0:1.2.11-1 will be installed  
--> Running transaction check  
---> Package glib2.ppc 0:2.14.6-2 will be updated  
---> Package glib2.ppc 0:2.56.1-2 will be an update  
--> Processing Dependency: libffi >= 3.0.10-1 for package: glib2-2.56.1-2.ppc  
--> Processing Dependency: libffi.a(libffi.so.6) for package: glib2-2.56.1-2.ppc  
---> Package libstdc++.ppc 0:8.3.0-2 will be installed  
---> Package libunistring.ppc 0:0.9.9-2 will be installed  
---> Package libxml2.ppc 0:2.9.9-1 will be installed  
--> Processing Dependency: xz-libs >= 5.2.2-1 for package: libxml2-2.9.9-1.ppc  
--> Processing Dependency: liblzma.a(liblzma.so.5) for package: libxml2-2.9.9-1.ppc  
--> Running transaction check  
---> Package libffi.ppc 0:3.2.1-3 will be installed  
---> Package xz-libs.ppc 0:5.2.5-1 will be installed  
--> Finished Dependency Resolution  
  
Dependencies Resolved  
  
===============================================================================================================================================  
Package Arch Version Repository Size  
===============================================================================================================================================  
Installing:  
gcc ppc 8.3.0-2 AIX_Toolbox_72 28 M  
Installing for dependencies:  
gcc-cpp ppc 8.3.0-2 AIX_Toolbox_72 10 M  
gmp ppc 6.1.2-1 AIX_Toolbox 1.6 M  
info ppc 6.6-2 AIX_Toolbox 664 k  
libffi ppc 3.2.1-3 AIX_Toolbox 47 k  
libgcc ppc 8.3.0-2 AIX_Toolbox_72 977 k  
libiconv ppc 1.16-1 AIX_Toolbox 1.6 M  
libmpc ppc 1.1.0-1 AIX_Toolbox 224 k  
libstdc++ ppc 8.3.0-2 AIX_Toolbox_72 12 M  
libunistring ppc 0.9.9-2 AIX_Toolbox 1.5 M  
libxml2 ppc 2.9.9-1 AIX_Toolbox 5.4 M  
mpfr ppc 4.0.2-2 AIX_Toolbox 1.9 M  
ncurses ppc 6.2-1 AIX_Toolbox 3.5 M  
xz-libs ppc 5.2.5-1 AIX_Toolbox 540 k  
zlib ppc 1.2.11-1 AIX_Toolbox 174 k  
Updating for dependencies:  
gettext ppc 0.19.8.1-5 AIX_Toolbox 7.6 M  
glib2 ppc 2.56.1-2 AIX_Toolbox 28 M  
  
Transaction Summary  
===============================================================================================================================================  
Install 15 Packages  
Upgrade 2 Packages  
  
Total download size: 104 M  
Is this ok [y/N]: y  
Downloading Packages:  
(1/17): gcc-8.3.0-2.aix7.2.ppc.rpm | 28 MB 00:00:02   
(2/17): gcc-cpp-8.3.0-2.aix7.2.ppc.rpm | 10 MB 00:00:00   
(3/17): gettext-0.19.8.1-5.aix6.1.ppc.rpm | 7.6 MB 00:00:00   
(4/17): glib2-2.56.1-2.aix6.1.ppc.rpm | 28 MB 00:00:02   
(5/17): gmp-6.1.2-1.aix6.1.ppc.rpm | 1.6 MB 00:00:00   
(6/17): info-6.6-2.aix6.1.ppc.rpm | 664 kB 00:00:00   
(7/17): libffi-3.2.1-3.aix6.1.ppc.rpm | 47 kB 00:00:00   
(8/17): libgcc-8.3.0-2.aix7.2.ppc.rpm | 977 kB 00:00:00   
(9/17): libiconv-1.16-1.aix6.1.ppc.rpm | 1.6 MB 00:00:00   
(10/17): libmpc-1.1.0-1.aix6.1.ppc.rpm | 224 kB 00:00:00   
(11/17): libstdcplusplus-8.3.0-2.aix7.2.ppc.rpm | 12 MB 00:00:01   
(12/17): libunistring-0.9.9-2.aix6.1.ppc.rpm | 1.5 MB 00:00:00   
(13/17): libxml2-2.9.9-1.aix6.1.ppc.rpm | 5.4 MB 00:00:00   
(14/17): mpfr-4.0.2-2.aix6.1.ppc.rpm | 1.9 MB 00:00:00   
(15/17): ncurses-6.2-1.aix6.1.ppc.rpm | 3.5 MB 00:00:00   
(16/17): xz-libs-5.2.5-1.aix6.1.ppc.rpm | 540 kB 00:00:00   
(17/17): zlib-1.2.11-1.aix6.1.ppc.rpm | 174 kB 00:00:00   
-----------------------------------------------------------------------------------------------------------------------------------------------  
Total 10 MB/s | 104 MB 00:10   
Running Transaction Check  
Running Transaction Test  
Transaction Test Succeeded  
Running Transaction  
Installing : libgcc-8.3.0-2.ppc 1/19   
Installing : zlib-1.2.11-1.ppc 2/19   
Installing : libstdc++-8.3.0-2.ppc 3/19   
Installing : gmp-6.1.2-1.ppc 4/19   
Installing : mpfr-4.0.2-2.ppc 5/19   
Installing : ncurses-6.2-1.ppc 6/19   
Installing : libmpc-1.1.0-1.ppc 7/19   
Installing : xz-libs-5.2.5-1.ppc 8/19   
Installing : libffi-3.2.1-3.ppc 9/19   
Installing : libiconv-1.16-1.ppc 10/19   
add shr4.o shared members from /usr/lib/libiconv.a to /opt/freeware/lib/libiconv.a  
add shr.o shared members from /usr/lib/libiconv.a to /opt/freeware/lib/libiconv.a  
add shr4_64.o shared members from /usr/lib/libiconv.a to /opt/freeware/lib/libiconv.a  
/  
Installing : libxml2-2.9.9-1.ppc 11/19   
Updating : glib2-2.56.1-2.ppc 12/19   
Installing : libunistring-0.9.9-2.ppc 13/19   
Updating : gettext-0.19.8.1-5.ppc 14/19   
Installing : info-6.6-2.ppc 15/19   
Please check that /etc/info-dir does exist.  
You might have to rename it from /etc/info-dir.rpmsave to /etc/info-dir.  
Installing : gcc-8.3.0-2.ppc 16/19   
Installing : gcc-cpp-8.3.0-2.ppc 17/19   
Cleanup : glib2-2.14.6-2.ppc 18/19   
Cleanup : gettext-0.19.7-1.ppc 19/19   
Ignore the error about AIX-rpm dependency since the older libintl.a is already preserved and will be reverted back  
  
Installed:  
gcc.ppc 0:8.3.0-2   
  
Dependency Installed:  
gcc-cpp.ppc 0:8.3.0-2 gmp.ppc 0:6.1.2-1 info.ppc 0:6.6-2 libffi.ppc 0:3.2.1-3 libgcc.ppc 0:8.3.0-2 libiconv.ppc 0:1.16-1  
libmpc.ppc 0:1.1.0-1 libstdc++.ppc 0:8.3.0-2 libunistring.ppc 0:0.9.9-2 libxml2.ppc 0:2.9.9-1 mpfr.ppc 0:4.0.2-2 ncurses.ppc 0:6.2-1   
xz-libs.ppc 0:5.2.5-1 zlib.ppc 0:1.2.11-1   
  
Dependency Updated:  
gettext.ppc 0:0.19.8.1-5 glib2.ppc 0:2.56.1-2   
  
Complete!  
  
# yum install gcc-c++  
Setting up Install Process  
Resolving Dependencies  
--> Running transaction check  
---> Package gcc-c++.ppc 0:8.3.0-2 will be installed  
--> Processing Dependency: libstdc++-devel = 8.3.0-2 for package: gcc-c++-8.3.0-2.ppc  
--> Running transaction check  
---> Package libstdc++-devel.ppc 0:8.3.0-2 will be installed  
--> Finished Dependency Resolution  
  
Dependencies Resolved  
  
===============================================================================================================================================  
Package Arch Version Repository Size  
===============================================================================================================================================  
Installing:  
gcc-c++ ppc 8.3.0-2 AIX_Toolbox_72 11 M  
Installing for dependencies:  
libstdc++-devel ppc 8.3.0-2 AIX_Toolbox_72 3.3 M  
  
Transaction Summary  
===============================================================================================================================================  
Install 2 Packages  
  
Total download size: 15 M  
Installed size: 15 M  
Is this ok [y/N]: y  
Downloading Packages:  
(1/2): gcc-cplusplus-8.3.0-2.aix7.2.ppc.rpm | 11 MB 00:00:01   
(2/2): libstdcplusplus-devel-8.3.0-2.aix7.2.ppc.rpm | 3.3 MB 00:00:00   
-----------------------------------------------------------------------------------------------------------------------------------------------  
Total 10 MB/s | 15 MB 00:01   
Running Transaction Check  
Running Transaction Test  
Transaction Test Succeeded  
Running Transaction  
Installing : libstdc++-devel-8.3.0-2.ppc 1/2   
Installing : gcc-c++-8.3.0-2.ppc 2/2   
  
Installed:  
gcc-c++.ppc 0:8.3.0-2   
  
Dependency Installed:  
libstdc++-devel.ppc 0:8.3.0-2   
  
Complete!  
  

# yum install gcc-go  
Setting up Install Process  
Resolving Dependencies  
--> Running transaction check  
---> Package gcc-go.ppc 0:8.3.0-2 will be installed  
--> Processing Dependency: libgo-devel = 8.3.0-2 for package: gcc-go-8.3.0-2.ppc  
--> Processing Dependency: libgo = 8.3.0-2 for package: gcc-go-8.3.0-2.ppc  
--> Processing Dependency: libgo.a(libgo.so.13) for package: gcc-go-8.3.0-2.ppc  
--> Running transaction check  
---> Package libgo.ppc 0:8.3.0-2 will be installed  
---> Package libgo-devel.ppc 0:8.3.0-2 will be installed  
--> Finished Dependency Resolution  
  
Dependencies Resolved  
  
===============================================================================================================================================  
Package Arch Version Repository Size  
===============================================================================================================================================  
Installing:  
gcc-go ppc 8.3.0-2 AIX_Toolbox_72 47 M  
Installing for dependencies:  
libgo ppc 8.3.0-2 AIX_Toolbox_72 62 M  
libgo-devel ppc 8.3.0-2 AIX_Toolbox_72 1.5 M  
  
Transaction Summary  
===============================================================================================================================================  
Install 3 Packages  
  
Total download size: 111 M  
Installed size: 111 M  
Is this ok [y/N]: y  
Downloading Packages:  
(1/3): gcc-go-8.3.0-2.aix7.2.ppc.rpm | 47 MB 00:00:04   
(2/3): libgo-8.3.0-2.aix7.2.ppc.rpm | 62 MB 00:00:05   
(3/3): libgo-devel-8.3.0-2.aix7.2.ppc.rpm | 1.5 MB 00:00:00   
-----------------------------------------------------------------------------------------------------------------------------------------------  
Total 11 MB/s | 111 MB 00:10   
Running Transaction Check  
Running Transaction Test  
Transaction Test Succeeded  
Running Transaction  
Installing : libgo-8.3.0-2.ppc 1/3   
Installing : libgo-devel-8.3.0-2.ppc 2/3   
Installing : gcc-go-8.3.0-2.ppc 3/3   
  
Installed:  
gcc-go.ppc 0:8.3.0-2   
  
Dependency Installed:  
libgo.ppc 0:8.3.0-2 libgo-devel.ppc 0:8.3.0-2   
  
Complete!  
  

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

6

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广