背景
平時測試環境中,服務器是可以訪問外網的,而在內網環境,想要安裝一些軟件,比如docker,就需要離線安裝,需要提前准備好需要的rpm安裝包以及其依賴包
本文記錄下如何使用yum展示軟件包的依賴關系,以及使用yum下載這些軟件包
展示軟件包依賴關系
比如我現在查了下yum可以裝的docker版本
yum list | grep <package_name>
[root@web01 /]# mkdir /pack
[root@web01 /]# cd /pack/
[root@web01 pack]# yum list| grep docker
cockpit-docker.x86_64 195.6-1.el7.centos extras
docker.x86_64 2:1.13.1-162.git64e9980.el7.centos
docker-client.x86_64 2:1.13.1-162.git64e9980.el7.centos
docker-client-latest.x86_64 1.13.1-58.git87f2fab.el7.centos
docker-common.x86_64 2:1.13.1-162.git64e9980.el7.centos
docker-compose.noarch 1.18.0-4.el7 epel
docker-distribution.x86_64 2.6.2-2.git48294d9.el7 extras
docker-latest.x86_64 1.13.1-58.git87f2fab.el7.centos
docker-latest-logrotate.x86_64 1.13.1-58.git87f2fab.el7.centos
docker-latest-v1.10-migrator.x86_64 1.13.1-58.git87f2fab.el7.centos
docker-logrotate.x86_64 2:1.13.1-162.git64e9980.el7.centos
...
再去使用這個包名展示依賴關系:
yum deplist <package_name>
[root@web01 /]# yum deplist ostree
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
package: ostree.x86_64 2019.1-2.el7
dependency: /bin/bash
provider: bash.x86_64 4.2.46-34.el7
dependency: /bin/sh
provider: bash.x86_64 4.2.46-34.el7
...
yum下載軟件包以及其依賴
有兩種方式,一種是使用yum,另一種是安裝一個軟件yumdownloader
1.yum下載未安裝的軟件包
語法
yum install --downloadonly --downloaddir=<directory> <package>
#注意,該命令僅下載、不安裝,並將其相關依賴的軟件包一並下載到'指定目錄'
#如果本機已經安裝了某個依賴,那么這個依賴將不會下載
#使用該命令最好在一個全新的環境下,否則,可能導致依賴漏下
示例
[root@web01 pack]# yum install --downloadonly --downloaddir=/pack docker.x86_64
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package docker.x86_64 2:1.13.1-162.git64e9980.el7.centos will be installed
...
[root@web01 pack]# ll |wc -l
51
2.使用yumdownloader
安裝yum-utils包,內部包含yumdownloader等命令
yum install yum-utils
語法
yumdownloader [--resolve] [--destdir=<directory>] <package_name>
--resolve 解析依賴關系下載安裝軟件必要的依賴
--destdir 下載軟件包的目錄
#注意,下載軟件包,不管當前系統是否安裝,都會下載,不安裝
示例
[root@web01 pack]# yumdownloader --resolve --destdir=/pack docker.x86_64
...
[root@web01 pack]# ll |wc -l
51