如何脱机安装rpm包及其依赖项

时间:2018-06-01 17:07:46

标签: linux centos centos7 rpm

我想在没有互联网连接的linux服务器上安装rpm包(例如python 3)及其所有依赖项。

我该怎么做?

3 个答案:

答案 0 :(得分:2)

在 CentOS/RedHat 中,您可以将 yumdownloader 用于特定的包,这会下载所有需要的 RPM,然后压缩目录,将其上传到没有 Internet 访问权限的服务器并安装 RPM。

Here 您可以找到并举例,在没有 Internet 访问的情况下安装 Kubernetes。

yumdownloader --assumeyes --destdir=/var/rpm_dir/docker-ce --resolve docker-ce
tar -czvf d4r-k8s.tar.gz /var/rpm_dir
# Upload files
scp d4r-k8s.tar.gz root@YOUR-IP:/root
# Connect to your server
ssh root@YOUR-IP
tar -xzvf /root/d4r-k8s.tar.gz -C /
# install Docker:
yum install -y --cacheonly --disablerepo=* /var/rpm_dir/docker-ce/*.rpm

答案 1 :(得分:1)

假设您之前已从其他具有Internet访问权限的计算机下载了该程序包并将文件FTP到您的服务器,则可以使用以下命令安装rpm

rpm -ivh package_name_x85_64.rpm

选项:

  • i =这会安装一个新软件包。
  • v =打印详细信息
  • h =打包50个哈希标记,因为包存档已解压缩。

您还可以查看rpm手册以获取更多选项和详细信息

答案 2 :(得分:1)

有一种方法,但它非常棘手,可能会弄乱你的服务器,所以非常小心

命名法:

  • 在线:您的系统已连接到存储库
  • 离线:您的系统未连接

步骤:

离线系统压缩您的rpm数据库并将其传输到在线系统:

cd /var/lib/rpm/
tar -cvzf /tmp/rpmdb.tgz *
scp /tmp/rpmdb.tgz root@online:/tmp
在线系统

;将您的rpm db替换为离线系统中的那个:

cp -r /var/lib/rpm{,.bak} # back up your rpmdb from your online system. Make sure not to lose this!!
rm -rf /var/lib/rpm/*
cd /var/lib/rpm
tar -xvf /tmp/rpmdb.tgz # now your online system pretends to have the rpm database from the offline system. Don't start really installing / uninstalling rpms or you'll break everything

现在使用仅下载模拟您的更新(我没有使用yum但使用zypper运行它,但它应该类似):

zypper up --download-only

现在您可以获取所有下载的软件包,它们应该足以更新您的离线系统

现在恢复在线计算机:

rm -rf /var/lib/rpm
cp -r /var/lib/rpm{.bak,}
相关问题