Offline installation of packages

From ArchWiki
Revision as of 13:29, 9 December 2010 by Bart9h (talk | contribs) (bash-fu)
Jump to: navigation, search

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.

Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어

External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

A short howto on installing packages while offline. It is based on byte's post from this thread and uses KDE as an example.


Download the package databases on a computer with internet access and transfer them to your computer.

For i686:

For x86_64:

Following steps will make sure you're working with up-to-date package lists, as if you ran pacman -Sy.

On home PC , do the following as root:

mkdir -p /var/lib/pacman/sync/{core,extra,community}
tar -xzf core.db.tar.gz      -C /var/lib/pacman/sync/core
tar -xzf extra.db.tar.gz     -C /var/lib/pacman/sync/extra
tar -xzf community.db.tar.gz -C /var/lib/pacman/sync/community
pacman -Sp --noconfirm package-name > pkglist
Tip: Be aware you have enabled at least one of the servers defined in the /etc/pacman.d/mirrorlist file. Otherwise all what you get is a misleading error message:

error: no database for package: package-name

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

pacman -Sup --noconfirm > pkglist

Now open that textfile 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 do

wget -nv -i ../pkglist

in an empty directory. Take all the *.pkg.tar.gz files back home, put them in /var/cache/pacman/pkg and finally run

pacman -S package-name

A slightly contrived example

Scenario: you have two Archlinux machines, 'Al' (with internet connection) and 'Bob' (without internet connection), and you need to install some nvidia packages and their dependencies on 'Bob'. Let's say the wanted packages are nvidia, nvidia-utils and xf86-video-nouveau, but you want to use a dedicated directory instead of /var/cache/pacman/pkg/ 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 Archlinux 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 nvidia.list will contain links to the listed packages and any others which they depend on.

Download the packages and their dependencies

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

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

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 pacman (from version 3?); first, change to the /path/to/nvidia 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.gz

Transfer the packages

Now all the packages have been downloaded, you don't need 'Al' anymore. Copy the contents of /path/to/nvidia to a the temporary nvidia packages cache directory on 'Bob', let's say this folder is called /home/me/nvidia:

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

Next, pacman must be made aware of this new repository of packages; simply add the following lines at the bottom of your existing pacman.conf:

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

Now, instruct pacman to synchronise with the dedicated nvidia repository we created:

pacman -Sy 

This command finds the nvidia.db.tar.gz file in /home/me/nvidia and expands it to /var/lib/pacman/sync/nvidia 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

Links and sources

Compiled from the forums, with thanks to Heller_Barbe and byte