[Linux] 在 CentOS 上使用 yum,下載所有相關聯的 RPM 套件

[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 – Download all dependencies with yumdownloader, even if already installed? – Unix & Linux Stack Exchange

yum –installroot doest not work

(本頁面已被瀏覽過 30 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料