Offline Package Install on Linux Made Easy with Keryx

Time to Keryx

In countries like India, where broadband penetration is very low, Linux users find it difficult to grab updates, or install those missing codecs. This article offers a way around the problem.

We all admire the simplicity of how some operating systems install software via a single installer downloaded on another system, and which is then copied onto the target system. Us, Linux users have been trapped in a seemingly never-ending chain of dependencies. We cannot simply download a package file on a public computer and install it on an offline system, due to the often-complex inter-dependency of Linux packages. Though this dependency system was designed to make package management more efficient, it also complicated the process of installing new software on a system that had low-speed or no connectivity to the Net.

Here’s Keryx!

Luckily, Keryx (a small program written in wxPython), makes Linux life easier. Keryx, meaning “messenger”, can be used to update Linux systems that don’t have a Net connection, or have one that’s slow and unreliable. It aims to provide a streamlined approach towards package management for offline systems.

Keryx is a very young project, and currently only supports distros that use the apt (Debian) package management system. Support for other systems is currently being worked on. Keryx makes the management of updates and installations unbelievably easy. It is highly portable, and you can use a Linux, Windows or even a Mac system to download your packages. With Keryx, it only takes a couple of clicks for your program to be installed.

Using Keryx

Let’s assume the simplest scenario: we will work on two systems, one of which is our offline system (which we will call the base system), and an online system that is used to download the packages (which we will refer to as the host system). I am using Keryx-0.92-2 on Ubuntu 10.04 as my base system.

Keryx works on the principle of projects. We create a project on our base system, which stores information about the base system. We carry the USB drive (with Keryx and the project on it) to the host system, and use Keryx to download our packages. Keryx will solve dependency issues itself. Then we carry back the USB drive with the downloaded packages, and install them on the base system.

Here’s a step-by-step procedure that makes using Keryx simple:

Getting Keryx

On the online system, grab a copy of Keryx, and unzip it to a USB flash drive (or any writeable portable medium). Eject the USB drive before you unplug it, to ensure that most recent changes are flushed to the drive.

Creating a project

Plug in the USB drive to the base system, mount it, and open up a terminal window. Assuming the flash disk is mounted at /media/usbstick, issue the following command:

cd /media/usbstick/keryx/linux

Make the ‘keryx’ file executable by issuing the command given below:

chmod +x keryx

Start Keryx by clicking (or double-clicking, as necessary) the Keryx icon in the folder keryx/linux/. Alternately, in the terminal in which you ran the preceding commands, run the command ./keryx. This loads its home screen (see Figure 1), and asks you to create a new project, or open an existing project.

Keryx welcome screen

Figure 1: Keryx welcome screen

Give the project a name (I chose “ubuntu”), and select the plugin “debian”, since we are using a Debian-based system. Click the New Project button to create the project. Keryx now collects data about the base system, and stores it in the project folder. Alternately, you can create the project via the command-line, using the command given below:

./keryx -create projectname debian

In my case, the collected project information is stored at /usbdisk/keryx-0.92.1/project/ubuntu (in the Keryx folder itself).

The Keryx website also offers pre-made projects, made with fresh installs of Ubuntu GNU/Linux, from version 8.10. You could use one of these to save this initial step, if your system has a fresh installation of one of these Ubuntu versions.

With the project created, we are ready to download packages. Eject the USB drive from the base system, and plug it into the online system.

For Linux hosts, mount the flash drive, and start the program as discussed above. For Mac hosts to run Keryx, you will need wxPython installed on the system. You can get it from here. After installing wxPython, start Keryx by executing keryx.py in the source folder of the main Keryx folder. For Windows hosts, just double-click keryx.exe in the win32 folder of the main Keryx folder.

Users behind a proxy will have to configure their connection options, at Edit –> Options –> Download Options.

Open project; download package lists

When Keryx starts, the welcome screen will greet you with the choice of opening a project or creating a new one. Select your project name from the drop-down list, and open it. Keryx will then ask you to confirm the download of the package lists (see Figure 2). Click Yes, and wait while Keryx refreshes package lists.

Package list download

Figure 2: Package list download

After that, Keryx will present you with a Synaptic-like interface, where you can choose new packages to download. (See Figure 3.)

Main interface

Figure 3: Main interface

Downloading packages

To install a program, say the popular Frozen-Bubble game, type “frozen” into the search box on the main window (see Figure 4). Right-click the frozen-bubble item, and select the download option. You will have to confirm the download of dependent packages (see Figure 5) before the download starts. Keryx only allows you to download a single package (and its dependencies) at a time, but you can consecutively download as many packages as you can carry on your pen drive. When you’re done downloading packages, eject the USB drive, and unplug it.

Searching for the Frozen Bubble package

Figure 4: Searching for the Frozen Bubble package

Download confirmation dialogue

Figure 5: Download confirmation dialogue

Installing packages on base system

Now plug your flash drive into the base system, and fire up Keryx. Click on Projects –> Install Packages. A window will open, which lists packages on the pen drive. You can select which packages to install, and click Continue. Keryx will install the packages onto your base system. After installation, we need to update our project files, since new packages have been added to the base system. To do this, click Project –> Update Status in the main Keryx interface.

Updating your distribution

Updating your distribution regularly is recommended, both for security, and for the smooth running of the system. You can use Keryx to update your system too! On the host system, start Keryx, and open your project. Click the Get Updates button on the main window, and Keryx will start downloading updates for your distribution. You can install the downloaded updates on your base system using the method described above. Again, after installation, don’t forget to update your project with the changed package status.

All published articles are released under Creative Commons Attribution-NonCommercial 3.0 Unported License, unless otherwise noted.
Open Source For You is powered by WordPress, which gladly sits on top of a CentOS-based LEMP stack.

Creative Commons License.