Raul Mercado
Raul Mercado

Reputation: 324

How to install a rpm package and its dependencies offline

I want to install a rpm package, (e.g. python 3), and all of its dependencies in a linux server that does not have internet connection.

How can I do that?

Upvotes: 12

Views: 56350

Answers (3)

Adrian Escutia
Adrian Escutia

Reputation: 1069

In CentOS/RedHat you can use yumdownloader for specific packages, this downloads all RPMs required, then, compress the directory, upload it to the server without Internet access and install RPMs.

Here you can find and example, installing Kubernetes without Internet access.

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

Upvotes: 12

Chris Maes
Chris Maes

Reputation: 37742

There is a way, but it is quite tricky and might mess up your servers, so be very careful.

Nomenclature:

  • online : your system that is connected to the repositories
  • offline: your system that is not connected

Steps:

Compress your rpm database from the offline system and transfer it to the online system:

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

on your online system; replace your rpm db with the one from the offline system:

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

now simulate your update with download-only (I didn't run this with yum but with zypper, but it should be similar):

zypper up --download-only

Now you can fetch all the downloaded packages and they should suffice for updating your offline system

And now restore your online machine:

rm -rf /var/lib/rpm
cp -r /var/lib/rpm{.bak,}

Upvotes: 2

Cedric Guindon
Cedric Guindon

Reputation: 394

Assuming you already downloaded the package before from another machine that has internet access and FTP the files to your server, you can use the following command to install a rpm

rpm -ivh package_name_x85_64.rpm

options:

  • i = This installs a new package.
  • v = Print verbose information
  • h = Print 50 hash marks as the package archive is unpacked.

You can also check the rpm manual for more options and details

Upvotes: 8

Related Questions