[Linux] 在 CentOS 上使用 yum,下載所有相關聯的 RPM 套件
最近需要在一台對外網路有嚴格限制的 CentOS 7 機器上,
安裝 OpenJDK 1.8.0 套件,
但是 yum 不能連到 Internet 上,實在很麻煩啊…
當然我可以上網去找 OpenJDK 1.8.0 的 RPM,
再透過允許的方法,把 RPM 傳到 CentOS 7 上安裝。
但一試就發現,這套件本身有不少關聯 (dependency) 的套件,
如果要自己一個個去找來下載,實在太累了~
試了半天,總算找到一個可以成功運作的方式,
那就是使用 yum 的 –downloadonly 參數~
如果你無法執行 yum install –downloadonly 參數的話,
要先安裝 yum-plugin-downloadonly 這個套件:
sudo yum install yum-plugin-downloadonly
就算使用了 –downoadonly 參數,
yum 也只會把「目前」系統上缺少的套件抓回來。
因此我們要使用 –installroot 參數,指定一個空的目錄,
讓 yum 覺得目前系統什麼套件都沒有,因此全都得抓下來。
下面是個例子:
sudo yum install --installroot=/tmp/yumrepo --releasever=/ --downloadonly --downloaddir=$(pwd) java-1.8.0-openjdk-devel.x86_64
上面還加了 –releasever=/ 這個參數,
這是因為使用了 –installroot 之後,似乎會觸動 yum 的一個 bug,
因此得加上這參數,才不會有錯誤…
執行完上面的指令,在 –downloaddir 指定的目錄下,
就可以看到所有關聯的 RPM 檔都被抓下來了,非常的多:
-rw-r--r--. 1 root root 83304 Apr 25 2018 acl-2.2.51-14.el7.x86_64.rpm -rw-r--r--. 1 root root 435024 Aug 23 2019 alsa-lib-1.1.8-1.el7.x86_64.rpm -rw-r--r--. 1 root root 269000 Nov 12 2018 atk-2.28.1-1.el7.x86_64.rpm ...... -rw-r--r--. 1 root root 299600 Jan 29 00:54 java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64.rpm -rw-r--r--. 1 root root 10279280 Jan 29 00:54 java-1.8.0-openjdk-devel-1.8.0.242.b08-0.el7_7.x86_64.rpm -rw-r--r--. 1 root root 33633660 Jan 29 00:54 java-1.8.0-openjdk-headless-1.8.0.242.b08-0.el7_7.x86_64.rpm ...... -rw-r--r--. 1 root root 234160 Nov 21 2016 xz-5.2.2-1.el7.x86_64.rpm -rw-r--r--. 1 root root 105728 Nov 21 2016 xz-libs-5.2.2-1.el7.x86_64.rpm -rw-r--r--. 1 root root 91960 Nov 12 2018 zlib-1.2.7-18.el7.x86_64.rpm
接著,只要將這些 RPM 檔傳到 CentOS 7 上,
再一個個使用 yum install <RPM 路徑> 安裝就行囉~^^
參考資料:
How To Download A RPM Package With All Dependencies In CentOS
yum –installroot doest not work
(本頁面已被瀏覽過 5,736 次)