Offline installation of packages

From time to time, you might end up with a copy of Arch Linux on an offline computer and want to install packages for it.

Install from file

See pacman#Additional commands to learn how to install local packages. Shell globbing can be used to install many packages at once:

# pacman -U /package/folder/*.tar.zst

Offline cache

You can put things into /var/lib/pacman/sync and /var/cache/pacman/pkg so as to make pacman think it has everything it needs to do searches, updates, and installs. This method is based on byte's post from this thread.

Download the package databases on a computer with internet access and transfer them to your computer. If needed, change MIRROR to any mirror from the mirror status list.

You might have changed your default repositories from its default order (community, core, extra and multilib); if you did this in your specific installation, you should review your /etc/pacman.conf file.

#!/bin/sh

ARCH="x86_64"
MIRROR="https://mirrors.kernel.org/archlinux/"

wget "${MIRROR}/community/os/${ARCH}/community.db"
wget "${MIRROR}/core/os/${ARCH}/core.db"
wget "${MIRROR}/extra/os/${ARCH}/extra.db"
wget "${MIRROR}/multilib/os/${ARCH}/multilib.db"

# and possibly -uncomment- (if customized in /etc/pacman.conf or pacman.conf.d):

#wget "${MIRROR}/multilib-testing/os/${ARCH}/multilib-testing.db"
#wget "${MIRROR}/community-testing/os/${ARCH}/community-testing.db"
#wget "${MIRROR}/testing/os/${ARCH}/testing.db"

# and -additionaly- debug and staging packages.

The following steps will make sure you are working with up-to-date package lists, as if you ran .

After transferring the files to the offline PC, do the following:

# cp *.db /var/lib/pacman/sync/
# pacman -Sp --noconfirm package-name > pkglist

To update a New Arch Linux base system after installation, you may enter:

# pacman -Sup --noconfirm > pkglist

Now, open that text file with an editor and delete all lines that are not URLs. Next, bring that list with you to a place where you have internet and either download the listed packages manually or run wget in an empty directory:

# wget -nv -i ../pkglist

You must also download the corresponding package signatures:

# sed -e 's/\.zst$/.zst.sig/' ../pkglist > ../siglist
# wget -nv -i ../siglist
Tip: When using cygwin or some other kind of Windows environment to download the packages, the filenames will get mangled since default Windows file naming requires to escape e.g. colons. To avoid this (under cygwin, since it does not follow such restrictions), use wget --restrict-file-names=unix.

Take all the and files back home, put them in /var/cache/pacman/pkg and finally run

# pacman -S package-name

Local repository

Scenario: you have two Arch Linux machines, 'Al' (with internet connection) and 'Bob' (without internet connection), and you need to install some NVIDIA packages and their dependencies on 'Bob'. In this example, the wanted packages are , , and , but you want to use a dedicated directory instead of and a dedicated repository called [nvidia] (instead of the usual [core], [extra] etc...)

Generate a list of packages to download

This can be done on any Arch Linux machine which has up-to-date repository data bases (see above for links to database files); to create the list of links to the required packages, use:

# pacman -Sp nvidia nvidia-utils xf86-video-nouveau > /path/to/nvidia.list

The file will contain links to the listed packages and any others which they depend on which are not already installed on 'Al'. Unless you have cleared your cache, the packages you have installed will be in your cache location. You can check /etc/pacman.conf for the location. It is probably something like .

Download/copy the packages and their dependencies

Obviously, this requires an internet connection, so on 'Al', create a directory called for the files and run:

# wget -P /path/to/nvidia/ -i /path/to/nvidia.list

Then copy the dependencies you have already installed from the cache. Either find them manually by browsing https://archlinux.org/packages/ or if the total size of all your packages is not too large, just copy them all

# cp /var/cache/pacman/pkg/* /path/to/nvidia/

Create a repository database just for these packages

This can be done on either 'Al' or 'Bob' using the repo-add command which comes with (from version 3?); first, change to the directory where the packages were downloaded, then create database file called nvidia.db.tar.gz:

$ cd /path/to/nvidia
# repo-add nvidia.db.tar.gz *.pkg.tar.zst

Transfer the packages

Now that all the packages have been downloaded, you do not need 'Al' anymore. Copy the contents of to a the temporary NVIDIA packages cache directory on 'Bob'. In this example, this folder is called :

$ cp /path/to/nvidia/* /home/me/nvidia

Next, must be made aware of this new repository of packages. First, copy your current :

# cp /etc/pacman.conf /etc/pacman.conf.old

Now, in /etc/pacman.conf, make sure that your is set to as your repository will not provide signatures

SigLevel = Never

and add the following lines at the bottom of :

[nvidia]
Server = file:///home/me/nvidia

You may also need to comment out the other repositories so stale defaults do not cause failed attempts to download from online Now, instruct to synchronize with the dedicated NVIDIA repository we created:

# pacman -Sy 

This command finds the nvidia.db.tar.gz file in and expands it to to create a database of packages contained in the NVIDIA repository.

Install the packages

Finally, install the packages:

# pacman -S nvidia nvidia-utils xf86-video nouveau

Restoring online sources

Should Bob ever be put online, we can restore access to the online sources by replacing /etc/pacman.conf with the previously created .

Compiled from the forums, with thanks to Heller_Barbe and byte

gollark: You can apparently get chip-scale atomic clocks, which *still* aren't in watches, to my eternal disappointment.
gollark: It's fine, I can rotate it, using methods.
gollark: It's also sideways.
gollark: I have no idea what that means.
gollark: It ate a wind turbine here.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.