a package managment system
Most programs for Linux (and other modern Unixes) come as source archive and
use some kind of 'make install' to deploy themselves in the system. That's
nothing wrong here, beside the fact that it's almost impossible to uninstall
such package from the system. They waste disk space even if they aren't in use.
Pkg, just like any other package managment system, is an approach to solve
this and some related problems.
It's main idea is to install each package in a separate directory and use
symlinks to deploy those file where they are expected to be. See how it works
Current release is 0.7
Project file list
It's hard to maintain two copies of docs in parallel, so there's no docs
on this site. Not yet. All pkg's documentation comes with the package
itself in form of man pages.
Some nifty things pkg system allows you to do:
- install packages and see what they have installed
(especially useful when dealing with some kind of proprietary shit ;)
- uninstall packages in a reliable way
- temporary remove packages from system without physically removing
them from disk
- as a consequence, have some different versions of a single package
and switch them quickly. And this can even be done with glibc.
- store some metadata with particular package
(say, ./configure command line or MD5 checksums list)
- make reliable and easy-to-use binary packages that can be installed
without having pkg on target machine.
- as a consequence, install new systems from one already running with
ability to choose packages
- tell which package given file belong to, if any, and get list of all
files given package have.
Some features of pkg system I'm trying to maintain:
- All information of package's files is stored in the filesystem itself.
There's no place for inconsistency in package database and filesystem
- Critical pkg executables (currently, _all_ pkg executables) require no
additional files/libs to run (or can be built in such way). They can be
used even on a hardly damaged system
- They way pkg stores packages and their metainfo allows you to
maintain package system _without_ pkg itself using only basic system
- At any given moment you may get rid of package managment, and this
requires nothing beside basic system utilites (even no pkg components
- Pkg can coexist with other package managment systems, it can manage
only some of installed packages. Each package can be put under package
managment or get off it separately.
- To install a new package into pkg system no knowledge is needed about
the way it installs, and no information about files it installs. It
may use closed-source binary installation program and install files
outside given prefix - this won't break pkg system. Pkg is developed
to manage packages that aren't ready for package managment and know
nothing about pkg.
Some features expected for a package managment system that pkg does
Just to say, none of this is an inherent shortcoming of choosen structure. This
features can be added lately or done via separate tools without breaking or
changing pkg itself.
- Dependency tracking
- Updates for binary distributions (like 'rpm -U' that keeps configs)
- Automated package/updates downloading (like 'apt-get')
- Verifying packages (like 'rpm -V')
Pkg system is a proof-of-concept, an implementation of an interesting idea rather
than a tool created to be used without backup on mission-critical servers.
There are some packages that require manual tweaking when used with pkg, there
are some packages that pkg-install refuses to install, there are still some
tasks that you have to do manually. There are situations when I say "You
should NOT use pkg here".
This page is incomplete and should be rewritten (hm...)
(also, there are lots of bugs in pkg itself)
Alex Suykov <firstname.lastname@example.org>
Feel free to submit your patches and ideas, though it's not guaranteed they
will be commited into the main branch of the project. Small size and simplicity
may be preferred over new features.
last update 18.08.2006