Netpkg adds dependency checking
netpkg is a network-based maintenance utility for Zenwalk-specific packages. Thanks to netpkg, a user can now easily update and add new software to his system.
We are now pleased to announce that netpkg now includes a solution to handle package dependencies.
netpkg implements dependency checking differently than most existing solutions do. The existing mechanisms in others share a vital flaw in design. Their dependency information comes with the package itself which leaves the responsibility of signaling dependencies in the hands of the packager. We feel that this is a very unreliable way to approach dependency checking due to the growing number of package builders and building techniques.
Furthermore, most mechanisms also rely on version comparison, which in itself is a fairly fragile concept in the computer world. History shows us that relying on a computer to make a semantic analysis has proven to be a difficult task. Evidence can be found in the timestamp method RPM developers have implemented to check package versions. In essence, the timestamp is a second counter, using the birth of UNIX, 1st of January 1970, as the reference point.
Sadly, maintenance of such a dependency database is very difficult. The critical information is not stored in a structured and centralized way therefore it is not easily updated. The combination of those weak points can lead to problems like cyclic dependencies, which can be a real nightmare.
netpkg's internal mechanism aims to provide a simple solution to these problems. It uses a central, easily maintainable database, located in the package repository itself. The repository not only contains all the necessary dependencies any package in that repository might ever need, it also contains the correct version. This makes version checking obsolete. With a stable and well maintained database, system maintenance is a piece of cake.
The actions performed by the user are quite simple. The user can now allow netpkg to track and install the dependencies. Netpkg works by first downloading and processing the dependency database, it then compares the installed packages with the list of required dependencies and takes appropriate steps to resolve them. netpkg is able to replace non-Zenwalk packages, e.g. third-party Slackware packages, more reliably and without risk of destabilizing the system since the dependency management is designed to have no impact on existing packages.
This dependency management system is not intended to compete with complex systems (ie : RPM) but we expect it to cover 90% of the features that are really important for unexperienced users. We believe that target users of dependency checking are not advanced users (Zenwalk advanced users don't want this kind of installation helper). This is a simple system for simple things like installing KDE , inkscape, which have a lot of dependencies.
Freedom of choice is important to us, so in good Slackware tradition, dependency management is optional. netpkg can be easily configured to ignore dependency information therefore disabling this feature and allowing the user full control over package management.