我有一台具有网络连接的服务器,我可以在其中使用“yum install $PACKAGE”。
我想要一些 yum 命令,这样yum cache-rpms $PACKAGE $DIRECTORY
所有必需的 RPM 文件都将下载到 $DIRECTORY,其中还将有一个文件 ( Install.sh
) 说明在许多其他没有网络连接的服务器上安装这些 RPM 的顺序。
Install.sh
甚至可能是一个 shell 脚本,它与 具有相同的行为yum install $PACKAGE
,只不过它不会使用网络,而只会使用$DIRECTORY
.
可能的?
我正在寻找一个通用的解决方案,其中 yum 和 RPM 可用,但具体而言:它位于一组 CENTOS 6.7 服务器上。
答案1
下面是一个使用“httpd”作为下载和安装包的具体示例。此过程在 CentOS6 和 CentOS7 上进行了测试。
安装您需要的东西并腾出一个地方来放置下载的 RPM:
# yum install yum-plugin-downloadonly yum-utils createrepo
# mkdir /var/tmp/httpd
# mkdir /var/tmp/httpd-installroot
下载 RPM。这使用了这里建议安装root技巧强制完全下载所有依赖项,因为该空根目录中未安装任何内容。 Yum 将在其中创建一些元数据,但我们将把它们全部扔掉。请注意,对于 CentOS7,releasever
该值为“7”。
# yum install --downloadonly --installroot=/var/tmp/httpd-installroot --releasever=6 --downloaddir=/var/tmp/httpd httpd
对,就那个曾是小版本。您应该已经看到完整存储库下载的大小!
生成将新的 RPM 堆转换为 YUM 存储库所需的元数据,并清理我们不再需要的内容:
# createrepo --database /var/tmp/httpd
# rm -rf /var/tmp/httpd-installroot
将下载目录配置为存储库。请注意,对于 CentOS7,gpgkey 将被命名为“7”而不是“6”:
# vi /etc/yum.repos.d/offline-httpd.repo
[offline-httpd]
name=CentOS-$releasever - httpd
baseurl=file:///var/tmp/httpd
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
要检查缺少的依赖项:
# repoclosure --repoid=offline-httpd
我还没有弄清楚为什么在 CentOS7 上这个报告会libssl.so.10(libssl.so.10)(64bit)
丢失(该库的提供者)明确存在于目录中的信息httpd-tools
。openssl-libs-1.0.1e-51.el7_2.2.x86_64.rpm
不过,如果您发现明显缺少某些内容,这可能是返回并使用上述相同yum install --downloadonly
方法添加它的好机会。
离线时或将/var/tmp/httpd
存储库目录复制到其他服务器后,在那里设置存储库:
# vi /etc/yum.repos.d/offline-httpd.repo
[offline-httpd]
name=CentOS-$releasever - httpd
baseurl=file:///var/tmp/httpd
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
# yum --disablerepo=\* --enablerepo=offline-httpd install httpd
希望没有丢失依赖项!
答案2
我多次需要它,所以我自动回答了@Steve Bonds。请务必将其定义PKG
为要在两台计算机上安装的软件包(免责声明:对于 CentOS 7。对于 CentOS 6,请更改--releasever
和CentOS-7
位置。
在线机
PKG=... # NAME OF THE PACKAGE TO INSTALL ON OFFLINE MACHINE
yum install --downloadonly --installroot=/tmp/$PKG-installroot --releasever=7 --downloaddir=/tmp/$PKG $PKG
createrepo --database /tmp/$PKG
rm -rf /tmp/$PKG-installroot
rsync -arv /tmp/$PKG/ [IP of the machine]:/tmp/$PKG
在离线机器上:
PKG=... # NAME OF THE PACKAGE
echo "[offline-$PKG]
name=CentOS-\$releasever - $PKG
baseurl=file:///tmp/$PKG/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7" > /etc/yum.repos.d/offline-$PKG.repo
# install package offline:
yum --disablerepo=\* --enablerepo=offline-$PKG install --nogpgcheck $PKG
答案3
看来您是在询问yumdownloader
包裹中包含哪些内容yum-utils
。已经有一些关于此的问题和答案,请参见例如即使已经安装,也要使用 yumdownloader 下载所有依赖项吗?或者如何使用 Yum 查找软件包 URL?
yumdownloader
将下载软件包,尽管它不会生成文件,Install.sh
因为顺序可以由 yum 本身确定,因此您可以通过
yum install ./*rpm
包含下载的软件包的文件夹将软件包安装到目标机器上(与基础安装 - 请参阅上面的第一个链接repotrack
)