我有一台具有网络连接的服务器,我可以在其中使用“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 服务器上。
Ste*_*nds 52
这是一个使用“httpd”作为下载和安装包的具体示例。此过程已在 CentOS6 和 CentOS7 上进行了测试。
安装您需要的东西并放置一个地方来放置下载的 RPM:
# yum install yum-plugin-downloadonly yum-utils createrepo
# mkdir /var/tmp/httpd
# mkdir /var/tmp/httpd-installroot
Run Code Online (Sandbox Code Playgroud)
下载 RPM。这使用了这里建议的installroot 技巧来强制完全下载所有依赖项,因为在那个空的根目录中没有安装任何东西。Yum 将在那里创建一些元数据,但我们将把它全部扔掉。请注意,对于 CentOS7,releasever将是“7”。
# yum install --downloadonly --installroot=/var/tmp/httpd-installroot --releasever=6 --downloaddir=/var/tmp/httpd httpd
Run Code Online (Sandbox Code Playgroud)
是的,那是小版本。您应该已经看到完整存储库下载的大小!
生成将我们新的 RPM 堆变成 YUM 存储库所需的元数据,并清理我们不再需要的东西:
# createrepo --database /var/tmp/httpd
# rm -rf /var/tmp/httpd-installroot
Run Code Online (Sandbox Code Playgroud)
将下载目录配置为 repo。请注意,对于 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
Run Code Online (Sandbox Code Playgroud)
要检查缺少的依赖项:
# repoclosure --repoid=offline-httpd
Run Code Online (Sandbox Code Playgroud)
我还没有弄清楚为什么在 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/httpdrepo 目录复制到另一台服务器后,在那里设置 repo:
# 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
Run Code Online (Sandbox Code Playgroud)
希望没有丢失的依赖项!
小智 8
我多次需要它,所以我自动回答了@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
Run Code Online (Sandbox Code Playgroud)
在离线机器上:
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
Run Code Online (Sandbox Code Playgroud)
看来您是在询问yumdownloader包裹中包含哪些内容yum-utils。已经有一些关于此的问题和答案,请参阅例如使用 yumdownloader 下载所有依赖项,即使已经安装?或者如何使用 Yum 查找包 URL?
yumdownloader将下载软件包,尽管它不会生成文件Install.sh,因为顺序可以由 yum 本身确定,因此您可以通过包含
yum install ./*rpm下载的软件包的文件夹将软件包安装到目标机器上(与基础安装 - 请参阅上面的第一个链接repotrack)
| 归档时间: |
|
| 查看次数: |
92556 次 |
| 最近记录: |