Home > linux, old, open source > easypkg

easypkg

A problem exists when it comes to package management. How does one resolve dependencies without an internet connection?

Package management has made the installation of linux software very easy. Tools such as dpkg, apt-get, yum and yast allow for the installation of packages with minimal hassle. No longer does one have to worry about configuring, compiling and installing with the familiar

~$ ./configure && make
~$ make install

Binary packages make it easy to distribute linux software, especially to people who aren’t very familiar with linux and want an easy solution for installing packages. However there is one problem with binary packages and general linux software installation…dependencies. Before I knew much about linux package management I would frequently run into dependency hell where every package had a long list of dependencies, and every dependency had dependencies, and it would go on forever[1]. Fortunately, most dependency issues nowadays are resolved by package management systems which just fetch the dependencies online and install them, without the end user having to worry much. But here arises a problem, especially in the developing world where internet access is scarce and expensive. What if the end user does not have internet access? It then becomes very hard to install linux software because there’s no easy way to resolve dependency issues. On several occasions I’ve driven to houses of friends who don’t have internet access to give them linux software binaries to install, only to get there to find they’re missing some crucial dependency making my trip a complete waste of time.

So I’ve come up with a solution, easypkg. Easypkg sets out to bridge the gap created when trying to install linux software when there’s a lack of internet access. At the moment it’s just an idea and I haven’t even started working on it, but I plan on starting soon because I see a definite advantage that can be gained from software of this type. I plan on first developing it for debian based systems first, and then if I see need, expanding it to others.

easypkg packages will be built in such a way that every package contains:
1. A standard debian binary package, and
2. The source code for (all) possible dependencies.
3. A dependency checking scheme

Here’s the logic. Debian binary packages are very quick and easy to install and therefore the main program which is being packaged will be in deb binary format. For the deb binary there maybe 1, 2 or even 10 dependencies. Some systems will have some of the dependencies installed, and other systems will have none of the dependencies installed. Because deb binary packages can get rather large it does not make sense to include all dependencies in binary form since the size of the easypkg package could become extremely large. Source code other other hand is usually nothing more than a couple of text files and generally quite small in size. Therefore, even if the source code for all the dependencies is included in the easypkg package, the final size will not be much greater than the size without it.

The dependency checking scheme will simply contain a logical way to check for dependencies on the host system.

An easypkg installation will then work as follows. The user has an easypkg package and tries to install it. The installation then start by checking for all required dependencies based on the dependency checking scheme. If it finds that a dependency is missing it adds it to a list of missing dependencies. Once the missing dependency list has been created, all the missing dependencies are compiled and installed. Then another dependency check takes place. If the dependency check passes then all missing dependencies were installed properly, and the installation of the deb binary can proceed as normal.

[1] See http://en.wikipedia.org/wiki/Dependency_hell for a detailed description of dependency hell.

Creative Commons License
This work, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-Share Alike 2.5 South Africa License.
Categories: linux, old, open source Tags:
  1. No comments yet.
  1. No trackbacks yet.