oio11: (Default)
[personal profile] oio11

How to manage packages on an off-line Debian system

There are plenty of off-line Debian systems just waiting to update index files, upgrade or install additional packages. This can be easily achieved by using apt-offline utility. I will shortly describe common usage scenario as it is very handy application.

Preparations

Visit Debian packages web-site and download apt-offline utility.
Use lsb_release command to confirm release/codename information.
$ lsb_release  -d Description:	Debian GNU/Linux 7.3 (wheezy) 

Installation

Move apt-offline package to the off-line Debian system and install it.
off-line$ sudo dpkg -i apt-offline_1.2_all.deb (Reading database ... 24586 files and directories currently installed.) Unpacking apt-offline (from apt-offline_1.2_all.deb) ... Setting up apt-offline (1.2) ... Processing triggers for man-db ... 

Important notice

apt-offline uses /etc/apt/trusted.gpg file as keyring instead of files in the /etc/apt/trusted.gpg.d/ directory.
You can easily identify this problem as will you see similar program output:
$ sudo apt-offline install bundle.zip  [...] gpgv: Signature made Sat Dec 14 11:52:03 2013 CET using RSA key ID 46925553 gpgv: Can't check signature: public key not found gpgv: Signature made Sat Dec 14 12:01:01 2013 CET using RSA key ID 65FFB764 gpgv: Can't check signature: public key not found ERROR: /var/lib/apt/lists/partial/ftp.icm.edu.pl_pub_Linux_debian_dists_wheezy_Release.gpg bad signature. Not syncing because in strict mode. [...] 
Solution is very simple as you need to alter /etc/apt/trusted.gpg file to import missing keys.
$ sudo apt-key exportall | sudo gpg --no-default-keyring --import --keyring /etc/apt/trusted.gpg gpg: keyring `/root/.gnupg/secring.gpg' created gpg: key 473041FA: public key "Debian Archive Automatic Signing Key (6.0/squeeze) <ftpmaster@debian.org>" imported gpg: key B98321F9: public key "Squeeze Stable Release Key <debian-release@lists.debian.org>" imported gpg: key 46925553: public key "Debian Archive Automatic Signing Key (7.0/wheezy) <ftpmaster@debian.org>" imported gpg: key 65FFB764: public key "Wheezy Stable Release Key <debian-release@lists.debian.org>" imported gpg: Total number processed: 4 gpg:               imported: 4  (RSA: 4) gpg: no ultimately trusted keys found 

Package index synchronization

Define action on the off-line system

To update package index you need to issue update action and specify signature file that will be used later on the on-line Debian system.
off-line$ sudo apt-offline set debian-update.sig --update Generating database of files that are needed for an update.	 

Execute download action on the on-line system

Move generated signature file debian-update.sig to the on-line system.
Fetch required APT data described in the signature file (using two threads in the example below) and store it as debian-update.zip file.
on-line$ apt-offline get debian-update.sig --bundle debian-update.zip --threads 2  Fetching APT Data  Downloading http://security.debian.org/dists/wheezy/updates/main/source/Sources.bz2. http://security.debian.org/dists/wheezy/updates/main/source/Sources.bz2 done. Downloading http://security.debian.org/dists/wheezy/updates/main/binary-i386/Packages.bz2. http://security.debian.org/dists/wheezy/updates/main/binary-i386/Packages.bz2 done. [...] Downloading http://ftp.icm.edu.pl/pub/Linux/debian/dists/wheezy-updates/Release. http://ftp.icm.edu.pl/pub/Linux/debian/dists/wheezy-updates/Release done. Downloading http://ftp.icm.edu.pl/pub/Linux/debian/dists/wheezy-updates/Release.gpg. http://ftp.icm.edu.pl/pub/Linux/debian/dists/wheezy-updates/Release.gpg done.  Downloaded data to /home/milosz/debian-update.zip	 

Execute install process on the off-line system

Move debian-update.zip file to the off-line system and finish package index update process.
off-line$ sudo apt-offline install 1.zip  gpgv: Signature made Tue Jan 28 15:56:35 2014 CET using RSA key ID 46925553 gpgv: Good signature from "Debian Archive Automatic Signing Key (7.0/wheezy) $lt;ftpmaster@debian.org>" [...] /var/lib/apt/lists/partial/security.debian.org_dists_wheezy_updates_Release synced. /var/lib/apt/lists/partial/security.debian.org_dists_wheezy_updates_Release.gpg synced. /var/lib/apt/lists/partial/security.debian.org_dists_wheezy_updates_main_binary-i386_Packages synced. /var/lib/apt/lists/partial/security.debian.org_dists_wheezy_updates_main_i18n_Translation-en synced. /var/lib/apt/lists/partial/security.debian.org_dists_wheezy_updates_main_source_Sources synced.	 [...] 

System upgrade

Define action on the off-line system

To upgrade off-line Debian system execute upgrade action and define signature file.
off-line$ sudo apt-offline set debian-upgrade.sig --upgrade	 
I strongly suggest to read manual page if you want to perform dist-upgrade action or download bug reports.

Execute download action on the on-line system

Upload debian-upgrade.sig to the on-line system and download required files.
on-line$ apt-offline get debian-upgrade.sig --bundle debian-upgrade.zip --threads 3 

Execute install process on the off-line system

Upload debian-upgrade.zip bundle to the off-line system and install it using apt-offline utility to update APT database.
off-line$ sudo apt-offline install debian-upgrade.zip 
Now you can start upgrade process as every required package is already downloaded.
off-line$ sudo apt-get upgrade 
There are couple of exceptions to the above statement like flash player as it cannot be installed in off-line mode.

Package installation

Define action on the off-line system

To install mc and hdparm packages on the off-line Debian system execute install-packages action and define signature file.
off-line$ apt-offline set debian-install.sig --install-packages mc hdparm Generating database of package mc, hdparm,  and its dependencies.	 

Execute download action on the on-line system

Upload debian-install.sig to the on-line system and download required files.
on-line$ apt-offline get debian-install.sig --bundle debian-install.zip   Fetching APT Data  Downloading libffi5 3.0.10-3 - 20 KiB libffi5 3.0.10-3 done. Downloading libglib2.0-0 2.33.12+really2.32.4-5 - 1 MiB libglib2.0-0 2.33.12+really2.32.4-5 done.  Downloading hdparm 9.39-1+b1 - 110 KiB   hdparm 9.39-1+b1 done.                         Downloading libglib2.0-data 2.33.12+really2.32.4-5 - 1 MiB libglib2.0-data 2.33.12+really2.32.4-5 done. Downloading mc-data 3%3a4.8.3-10 - 1 MiB  mc-data 3%3a4.8.3-10 done.   Downloading mc 3%3a4.8.3-10 - 460 KiB    mc 3%3a4.8.3-10 done.      Downloading powermgmt-base 1.31 - 11 KiB   powermgmt-base 1.31 done.     Downloading shared-mime-info 1.0-1+b1 - 590 KiB shared-mime-info 1.0-1+b1 done. Downloading unzip 6.0-8 - 182 KiB   unzip 6.0-8 done.   Downloaded data to /home/milosz/debian-install.zip 

Execute install process on the off-line system

Upload debian-install.zip file to the off-line system, install it using apt-offline utility to update APT database.
off-line$ sudo apt-offline install debian-install.zip  /var/cache/apt/archives/libffi5_3.0.10-3_i386.deb file synced. /var/cache/apt/archives/libglib2.0-0_2.33.12+really2.32.4-5_i386.deb file synced. /var/cache/apt/archives/hdparm_9.39-1+b1_i386.deb file synced. /var/cache/apt/archives/libglib2.0-data_2.33.12+really2.32.4-5_all.deb file synced. /var/cache/apt/archives/mc-data_3%3a4.8.3-10_all.deb file synced. /var/cache/apt/archives/mc_3%3a4.8.3-10_i386.deb file synced. /var/cache/apt/archives/powermgmt-base_1.31_i386.deb file synced. /var/cache/apt/archives/shared-mime-info_1.0-1+b1_i386.deb file synced. /var/cache/apt/archives/unzip_6.0-8_i386.deb file synced.	 
Now install specified packages using regular apt-get utility.
off-line$ sudo apt-get install mc hdparm  Reading package lists... Done Building dependency tree        Reading state information... Done The following extra packages will be installed:   libffi5 libglib2.0-0 libglib2.0-data mc-data powermgmt-base    shared-mime-info unzip Suggested packages:   apmd zip arj xpdf pdf-viewer dbview odt2txt gv catdvi djvulibre-bin    imagemagick python-boto python-tz The following NEW packages will be installed:   hdparm libffi5 libglib2.0-0 libglib2.0-data mc mc-data powermgmt-base    shared-mime-info unzip 0 upgraded, 9 newly installed, 0 to remove and 0 not upgraded. Need to get 0 B/5931 kB of archives. After this operation, 23.2 MB of additional disk space will be used. Do you want to continue [Y/n]?  Selecting previously unselected package libffi5:i386. (Reading database ... 24694 files and directories currently installed.) [...] Processing triggers for man-db ... Processing triggers for mime-support ... Setting up libffi5:i386 (3.0.10-3) ... Setting up libglib2.0-0:i386 (2.33.12+really2.32.4-5) ... No schema files found: doing nothing. Setting up hdparm (9.39-1+b1) ... Setting up libglib2.0-data (2.33.12+really2.32.4-5) ... Setting up mc-data (3:4.8.3-10) ... Setting up mc (3:4.8.3-10) ... update-alternatives: using /usr/bin/mcview to provide /usr/bin/view (view) in auto mode Setting up powermgmt-base (1.31) ... Setting up shared-mime-info (1.0-1+b1) ... Setting up unzip (6.0-8) ... 

GUI interface

Surprisingly, there is a nice graphical user interface available in Debian package repository.
To install it execute the following command.
$ sudo apt-get install apt-offline-gui

https://blog.sleeplessbeastie.eu/2014/01/30/how-to-manage-packages-on-an-off-line-debian-system
(will be screened)
(will be screened if not validated)
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org

October 2025

S M T W T F S
   1234
567891011
12131415161718
19202122 232425
262728293031 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 4th, 2026 07:16 pm
Powered by Dreamwidth Studios