Though in most North American cities one cannot find a spot without at least a weak WiFi signal, many of us Linux geeks still live in rural areas with less Internet connectivity. Also, in various non-Westernized nations, there is a growing number of Linux users who may have a computer at home, but cannot afford a decent connection. For both groups, software updates typically demand an Internet connection, which can make updating difficult if not impossible. There is now a solution though, a new program called Keryx.
Keryx was written by Southern Illinois University computer science student Chris Oliver, who wanted a way to download software and updates for Ubuntu systems that had little or no connectivity. Simply put Keryx on your pen drive, use it to create a new project file which retains a copy of your software sources and other system details, then take the pen drive to a computer with a better connection. Via it’s Synaptic like interface, users can then select all updates for download, plus select any other software they may want to install, complete with dependency resolution.
Because it is written in Python, and utilizes wxWidgets for it’s interface, Keryx can run on Linux, OSX and Windows. Pre-compiled binaries for Windows are included in the download (meaning you don’t need to install Python and wxWidgets first), and similar binaries for OSX and Linux are in the development road-map, along with Debian/Ubuntu packages.
This tutorial will walk you through the simple process of using Keryx to get updates and new software. Keryx currently only works for Debian based distros, but there are plans for adding support for a number of other package management systems. The system being updated is running Ubuntu 8.10, with no network connectivity. The system that will be grabbing the updates is running Windows XP, though it could just as easily be Windows 95 through Vista, OSX, or another Linux box.
Keryx uses wxWidgets for it’s graphical interface, and a default Ubuntu install does not have wxWidgets installed. Therefore you must create your project file in a terminal window. Fear not, as it is really quite quick and painless.
Simply open up your terminal, and then navigate into the “linux” directory inside the Keryx folder. On my computer this was “/media/disk/keryx-0.91/linux” but it will look a little different for you, depending upon what your pen drive is called. Once you are in that directory, enter in the following, making sure to replace
python keryx.py -c
In a few moments the project will be made. When this happens, close out of the terminal and safely remove your pen drive, to take to another computer.
Note: For some people, Keryx may experience difficulty fetching the package list files in the next step, if their repository mirror is set to the regional default. If you experience this, consider selecting a different mirror in System/Administration/Software_Sources and then repeating step #2.
In this tutorial I am using a computer running Windows XP as the computer with a high speed connection. However, this could just as easily be done on any Linux or OSX computer, so long as they both had Python and wxWidgets installed.
On your Windows computer, plug in the pen drive and open up the Keryx folder. In this folder you will see a “win32″ folder containing prepackaged binaries for Keryx. Using these you can run Keryx without having to first install Python and wxWidgets, making Keryx a very portable application. The file you need to run is called “keryx.exe,” though Windows may hide the .exe part from you. When Keryx opens, click “Open Project” and find the project file you created a few minutes ago.
Once the package lists have been downloaded, you’ll see the full Synaptic-like package list in Keryx. This list can be sorted by package name, status (not installed, installed, needs updating, etc.), etc. The first thing you’ll want to do is click “Get Updates” near the top of the window.
When I started the download, Keryx had 210 files to download. Your number will vary, but you are likely to have a lot of updates if you have a fresh install. Keryx will tell you when it is finished, so you might want to go get some coffee.
You probably want to be able to install wxWidgets on your Ubuntu system, so that you can run the Keryx graphical interface on it. Near the top of the window, start typing “wxversion” in the search field. Because the Keryx package search tool is so amazingly fast, you’ll only need to type the first few letters before you see python-wxversion. Right-click this package and then click download. It has several dependencies that Keryx will tell you about, so go ahead and let the program download those as well.
With all your packages downloaded, close Keryx, safely remove your pen drive, and go back to your Ubuntu machine. When you plug the pen drive back into your Ubuntu machine, you’ll notice that the package are stored in “keryx-0.91/win32/packages,” if you downloaded the updates from a Windows machine. You’ll need to open up your terminal again, and navigate to this directory. Once there, run the following:
sudo dpkg -i –force-depends *.deb
This line will install and/or update all the packages in that directory. The “force-depends” parameter is necessary in this case, as we are installing the wxWidgets packages, which have a circular dependency. Without this parameter, dpkg will start whining at you. If you have as many packages as I had, this may take a while. Go refill your coffee, and by the time you get back, the install might be done. Thats all there is to it!
Despite already being a rather useful tool, there are a lot of enhancements planed for the near future with Keryx. Most of it’s features, including it’s package management support, are implemented via a very flexible plugin infrastructure. So if you are a Python hacker and would like to help implement some of the new features, or have some ideas of your own, feel free to check out the code and dive in!
If you run into any problems using Keryx, or would like to report a bug, check out the friendly forums.
- Support for more distributions, such as Fedora, Red Hat, Mandriva et al.
- Package management like support for downloading and installing useful Open Source Windows software.
- Built-in installation of downloaded packages, so the user need not mess with the CLI
- Pre-compiled self contained binaries for Linux and OSX (like what already exists in the win32 folder), so that no matter what OS a user is running, they will be able to simply plug in their USB drive and run the graphical interface.
- Improved documentation