CentOS系统自动下载RPM包及其所有依赖的包(离线部署)
前幾天我嘗試去創建一個僅包含我們經常在 CentOS 7 下使用的軟件的本地倉庫。當然,我們可以使用 curl 或者 wget 下載任何軟件包,然而這些命令并不能下載要求的依賴軟件包。你必須去花一些時間而且手動的去尋找和下載被安裝的軟件所依賴的軟件包。然而,我們并不是必須這樣。在這個簡短的教程中,我將會帶領你以兩種方式下載軟件包及其所有依賴包。我已經在 CentOS 7 下進行了測試,不過這些相同的步驟或許在其他基于 RPM 管理系統的發行版上也可以工作,例如 RHEL,Fedora 和 Scientific Linux。
方法1利用"Downloadonly"插件下載 RPM 軟件包及其所有依賴包
我們可以通過 yum 命令的 “Downloadonly” 插件下載 RPM 軟件包及其所有依賴包, 為了安裝 Downloadonly 插件,以 root 身份運行以下命令:
yum install yum-plugin-downloadonly現在,運行以下命令去下載一個 RPM 軟件包
yum install --downloadonly默認情況下,這個命令將會下載并把軟件包保存到 /var/cache/yum/ 的 rhel-{arch}-channel/packageslocation 目錄,不過,你也可以下載和保存軟件包到任何位置,你可以通過 –downloaddir 選項來指定。
yum install --downloadonly --downloaddir=例子:
yum install --downloadonly --downloaddir=/root/mypackages/ httpd終端輸出:
Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile* base: centos.excellmedia.net* epel: epel.mirror.angkasa.id* extras: centos.excellmedia.net* updates: centos.excellmedia.net Resolving Dependencies --> Running transaction check ---> Package httpd.x86_64 0:2.4.6-40.el7.centos.4 will be installed --> Processing Dependency: httpd-tools = 2.4.6-40.el7.centos.4 for package: httpd-2.4.6-40.el7.centos.4.x86_64 --> Processing Dependency: /etc/mime.types for package: httpd-2.4.6-40.el7.centos.4.x86_64 --> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.4.6-40.el7.centos.4.x86_64 --> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.4.6-40.el7.centos.4.x86_64 --> Running transaction check ---> Package apr.x86_64 0:1.4.8-3.el7 will be installed ---> Package apr-util.x86_64 0:1.5.2-6.el7 will be installed ---> Package httpd-tools.x86_64 0:2.4.6-40.el7.centos.4 will be installed ---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved =======================================================================================================================================Package Arch Version Repository Size ======================================================================================================================================= Installing:httpd x86_64 2.4.6-40.el7.centos.4 updates 2.7 M Installing for dependencies:apr x86_64 1.4.8-3.el7 base 103 kapr-util x86_64 1.5.2-6.el7 base 92 khttpd-tools x86_64 2.4.6-40.el7.centos.4 updates 83 kmailcap noarch 2.1.41-2.el7 base 31 k Transaction Summary ======================================================================================================================================= Install 1 Package (+4 Dependent packages) Total download size: 3.0 M Installed size: 10 M Background downloading packages, then exiting: (1/5): apr-1.4.8-3.el7.x86_64.rpm | 103 kB 00:00:01 (2/5): apr-util-1.5.2-6.el7.x86_64.rpm | 92 kB 00:00:01 (3/5): mailcap-2.1.41-2.el7.noarch.rpm | 31 kB 00:00:01 (4/5): httpd-tools-2.4.6-40.el7.centos.4.x86_64.rpm | 83 kB 00:00:01 (5/5): httpd-2.4.6-40.el7.centos.4.x86_64.rpm | 2.7 MB 00:00:09 --------------------------------------------------------------------------------------------------------------------------------------- Total 331 kB/s | 3.0 MB 00:00:09 exiting because "Download Only" specified[attach]1802[/attach] 現在去你指定的目錄位置下,你將會看到那里有下載好的軟件包和依賴的軟件。在我這種情況下,我已經把軟件包下載到/root/mypackages/ 目錄下。 讓我們來查看一下內容:
ls /root/mypackages/樣本輸出:
apr-1.4.8-3.el7.x86_64.rpm apr-util-1.5.2-6.el7.x86_64.rpm httpd-2.4.6-40.el7.centos.4.x86_64.rpm httpd-tools-2.4.6-40.el7.centos.4.x86_64.rpm mailcap-2.1.41-2.el7.noarch.rpm[attach]1803[/attach] 正如你在上面輸出所看到的, httpd軟件包已經被依據所有依賴性下載完成了 。 請注意,這個插件適用于 yum install/yum update, 但是并不適用于 yum groupinstall。默認情況下,這個插件將會下載倉庫中最新可用的軟件包。然而你可以通過指定版本號來下載某個特定的軟件版本。 例子:
yum install --downloadonly --downloaddir=/root/mypackages/ httpd-2.2.6-40.el7此外,你也可以如下一次性下載多個包:
yum install --downloadonly --downloaddir=/root/mypackages/ httpd vsftpd方法 2 使用 "Yumdownloader"工具來下載 RPM 軟件包及其所有依賴包
“Yumdownloader” 是一款簡單,但是卻十分有用的命令行工具,它可以一次性下載任何 RPM 軟件包及其所有依賴包。 以 root 身份運行如下命令安裝 “Yumdownloader” 工具。
yum install yum-utils一旦安裝完成,運行如下命令去下載一個軟件包,例如 httpd:
yumdownloader httpd為了根據所有依賴性下載軟件包,我們使用 --resolve 參數:
yumdownloader --resolve httpd默認情況下,Yumdownloader 將會下載軟件包到當前工作目錄下。 為了將軟件下載到一個特定的目錄下,我們使用 --destdir 參數:
yumdownloader --resolve --destdir=/root/mypackages/ httpd或者
yumdownloader --resolve --destdir /root/mypackages/ httpd終端輸出:
Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile* base: centos.excellmedia.net* epel: epel.mirror.angkasa.id* extras: centos.excellmedia.net* updates: centos.excellmedia.net --> Running transaction check ---> Package httpd.x86_64 0:2.4.6-40.el7.centos.4 will be installed --> Processing Dependency: httpd-tools = 2.4.6-40.el7.centos.4 for package: httpd-2.4.6-40.el7.centos.4.x86_64 --> Processing Dependency: /etc/mime.types for package: httpd-2.4.6-40.el7.centos.4.x86_64 --> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.4.6-40.el7.centos.4.x86_64 --> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.4.6-40.el7.centos.4.x86_64 --> Running transaction check ---> Package apr.x86_64 0:1.4.8-3.el7 will be installed ---> Package apr-util.x86_64 0:1.5.2-6.el7 will be installed ---> Package httpd-tools.x86_64 0:2.4.6-40.el7.centos.4 will be installed ---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed --> Finished Dependency Resolution (1/5): apr-util-1.5.2-6.el7.x86_64.rpm | 92 kB 00:00:01 (2/5): mailcap-2.1.41-2.el7.noarch.rpm | 31 kB 00:00:02 (3/5): apr-1.4.8-3.el7.x86_64.rpm | 103 kB 00:00:02 (4/5): httpd-tools-2.4.6-40.el7.centos.4.x86_64.rpm | 83 kB 00:00:03 (5/5): httpd-2.4.6-40.el7.centos.4.x86_64.rpm | 2.7 MB 00:00:19[attach]1804[/attach] 讓我們確認一下軟件包是否被下載到我們指定的目錄下:
ls /root/mypackages/終端輸出:
apr-1.4.8-3.el7.x86_64.rpm apr-util-1.5.2-6.el7.x86_64.rpm httpd-2.4.6-40.el7.centos.4.x86_64.rpm httpd-tools-2.4.6-40.el7.centos.4.x86_64.rpm mailcap-2.1.41-2.el7.noarch.rpm[attach]1805[/attach] 不像 Downloadonly 插件,Yumdownload 可以下載一組相關的軟件包。
yumdownloader "@Development Tools" --resolve --destdir /root/mypackages/在我看來,我喜歡 Yumdownloader 更勝于 Yum 的 Downloadonly 插件。但是,兩者都是十分簡單易懂而且可以完成相同的工作。 這就是今天所有的內容,如果你覺得這份引導教程有用,清在你的社交媒體上面分享一下去讓更多的人知道。 閱讀分享,英文:https://www.ostechnix.com/download-rpm-package-dependencies-centos/ 中文:https://linux.cn/article-7937-1.html
離線安裝
切換到下載目錄rpm中批量安裝:
rpm -ivh * --nodeps --force
或
rpm -Uvh *
離線部署時將rpm文件導入服務器 安裝即可
總結
以上是生活随笔為你收集整理的CentOS系统自动下载RPM包及其所有依赖的包(离线部署)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SyntaxError: Non-UTF
- 下一篇: 计算机大致可以分为大型计算机嵌入式系统,