News
- 2009-07-25: pkgmanager has not seen active maintenance for quite a while because I have not had a machine on which to
actively run pkgsrc. most of my machines run FreeBSD nowadays (the last remnands of other BSD:s went away
when ZFS became available on FreeBSD). Since I never had time to try to really make pkgsrc practically
useful on FreeBSD, I have not had any environment for use and development. That said, I hope pkgmanager is
still working, and I do hear once in a while from users. Bug reports/requests for help are still welcome,
but if you expect me to put in some actual development/debugging effort be prepared to provide me with
access to some kind of environment with emacs and pkgsrc sufficiently working.
- 2008-05-06: pkgmanager is now using Launchpad for bug reporting
and source code mirroring.
- 2008-05-06: I am officially dropping the chicken rewrite. The intent is to continue development of the original
version, possibly with some significant design changes, in an attempt to revive development.
- 2008-01-18: How time flies. If it was not obvious, things are a bit delayed. The project is not forgotten about, but
I cannot promise when there will be a new version.
- 2006-12-31: Public bug tracker is now up:
http://roundup.scode.org/pkgmanager
(no longer available).
- 2006-10-29: Re-write in Chicken in
progress to better satisfy portability/minimalist requirements. Project is not dead.
- 2006-06-11: pkgmanager 0.8.1 released
- 2006-05-01: pkgmanager 0.8.0 released
- 2006-02-12: pkgmanager 0.7.2 released
- 2006-02-12: pkgmanager 0.7.1 released
- 2005-11-28: pkgmanager 0.7.0 released
- 2005-10-16: pkgmanager 0.6.0 released
- 2005-09-27: pkgmanager 0.5.0 released
- 2005-08-15: pkgmangaer 0.4.0 released
- 2005-08-07: pkgmanager 0.3.0 released
- 2005-08-04: lang/clisp has now been updated pkgsrc; wip/pkgmanager works out of the box now.
pkgmanager - a package manager for pkgsrc
pkgmanager is a work-in-progress package manager for pkgsrc. Its primary
reason for existence is to enable the user to upgrade a pkgsrc installation
with a minimum of hassle.
Starting with version 0.8.0, pkgmanager now includes a proper man page
(src, txt,
html), which is now the authorative source
of documentation.
Installation/usage instructions
Install pkgsrc-wip if you haven't already.
make install in wip/pkgmanager.
Attempts to install it manually are not 'supported', as it is somewhat complicated.
At the moment wip/pkgmanager is somewhat of an ugly hack; in part because
the cl-port and cl-ppcre dependencies should be broken up into actual packages in pkgsrc-wip,
and in part because the installation of pkgmanager itself is klunky at best. This will be fixed
in the future.
Assuming you are starting with a system that already has a huge number of packages installed,
you now want to go through them manually and figure out which top-level packages you
are interested in and add them to the wanted list. For example:
pkgmanager want shells/zsh wm/ion3-devel editors/emacs net/lftp www/firefox www/opera multimedia/mplayer
It is important to note that the whole point of doing this is to list only those top-level
packages you actually want. If you were to script the addition of ALL packages to the wanted
list, pkgmanager would not function very well (for one thing it would break as soon as some
package is renamed or removed).
Please read the manpage for additional details.
When you are done, you can safely see what pkgmanager wants to do:
pkgmanager sync
It will prompt before actually doing anything destructive to your system. It would be good,
especially the first time you run pkgmanager, to perform some level of manual sanity checking
to make sure pkgmanager won't remove things you want that take hours to rebuild.
pkgmanager itself is safe to interrupt at any time during an upgrade. Simply re-running
pkgmanager again will cause the upgrade process to resume from where it left off. But
be aware:
- While pkgmanager is safe to interrupt, 'make replace' might not be when updating the
package database (todo: find out). If you must interrupt the process I suggest doing
so during a build phrase.
- An interrupted procedure will of course leave a half-upgraded system that may or
may not be fully working.
- While it is *safe* to interrupt pkgmanager at any time, it would be unpractical to do
so when upgrading itself or its dependencies (primarily lang/clisp). If this is done, you
may need to manually re-install wip/pkgmanager and/or lang/clisp and its dependencies.
TODO
Partial future TODO:
- [DONE] No hardcoded dependencies on pkgsrc locations and things like that.
- [DONE, I hope] Complete and accurate documentation (including man page)
- Full binary package backup support to facilitate rolling back a failed upgrade
- Clean up/normalize the code
- Streamline installation/setup procedure
- Real (non-trivial) command line parsing
- Eliminate dependency on pkg_info; generally oversee what we can do to make package database
inspection less 'kludgy'.
- Ability to upgrade individual packages only (and those affected)
- Ability to specify 'manual' dependencies for packages
- Ability to 'freeze' packages so that they will not be upgraded, either just that
package or that package and all dependencies
- Ability to do more than just upgrading; pkgmanager should handle install/uninstall
aswell (similar to FreeBSD's "portupgrade").
Other wishlist items:
- Portability: Support at least CLISP and SBCL (currently only CLISP is supported).
- Atomic mode: Upgrade by cloning the environment to a chroot, perform the upgrade there,
and then switch between the two when done.
Obtaining pkgmanager
The recommended method of installation is to use wip/pkgmanager (see
usage instructions above).
Development is version controlled
using bzr. Previously the code's
main repository was in darcs. That
repository was converted on 2008-05-06.
You may wish to use bzr to
branch/pull the main
development branch, or browse
a checked out
copy of it.
Versions / changelog
A detailed changelog is implicitly available in the darcs repository. Major changes
will be listed here.
NOTE: The use of wip/pkgmanager in pkgsrc-wip is strongly recommended (see above).
The tarballs require significant manual intervention to get working. If you still want to
get the tarballs, they are available here.
- 0.8.1
- Use correct filename for manpage.
- Unbreak want list dupe detection. Now supports priority changes correcty.
- 0.8.0
- Support package priorities in want list.
- Clean after install (not just after upgrade).
- Enforce certain core wants (e.g. pkg_install) priorities to be high.
- Honor PKGMANAGER_DEBUG environment variable.
- Rename 'showwants' command to 'show-wants' for consistency.
- Add a proper manpage.
- 0.7.2
- Detects and handles bmake exiting successfully despite an installation having
failed (e.g., because the package is not available for the platform). This
case is now handled as if the installation had failed.
- 0.7.1
- Works around a problem encountered on FreeBSD (and possibly present on other
platforms) where the pkgsrc bootstrap installed pkgtools/digest withou
properly filling in meta data.
- 0.7.0
- 'showwants' now prints a visually nicer and sorted list.
- Add -f flag to sync to supress confirmation dialog.
- Consider both /etc/mk.conf and $PREFIX/etc/mk.conf when detecting mk.conf
changes.
- Summary cache: Use recursively latest modification time instead of pkgsrc
directory modification time when deciding whether a summary needs to be
updated. This should eliminate some (or hopefully all) of the reported
cases where pkgmanager must be explicitly told to flush the summary cache
in order to pick up a dependency change (assuming strictly increasing
system time).
- 0.6.0
- pkgmanager now automatically adds core wants on first start (or when upgrading
from an older version). 'core wants' are those that are required for the operation
of pkgmanager itself.
- pkgmanager now warns if a user attempts to remove a core want from the want list.
- pkgmanager now warns if running a version of pkgmanager older than that of the
previously saved configuration.
- wrapper script modified to squash a character encoding issue (reported by one user)
- 0.5.0
- Should now work out-of-the-box on non-NetBSD platforms (use of alternate
makes and dbdirs/prefixes now supported).
- 0.4.0
- Summary cache now only refreshed on demand.
- Now refuses to add non-existing packages to want list
- fetch-* commands added for fetching distfiles for packages separately from building them
- 0.3.0
- Slight interface improvements
- pkgmanager now caches summary information for packages, which means it will run much
faster once the summary cache has been initially updated. The summary information is
used to determine the current version of a package in pkgsrc, aswell as build the
dependency graph. pkgmanager detects (based on mtime of the directory) when a
package has been updated in pkgsrc, and refreshes the cache. It also checks to see
whether /etc/mk.conf has been changed, and if it has, will prompt the user as to whether
or not to invalidate the summary cache (changes to /etc/mk.conf can affect the
dependency graph).
- Circular dependency checking and want list processing is now much faster (replaced old
silly implementation).
- It now uses a safer method of re-writing its own configuration, to prevent loss of
the config with an extremely untimed ctrl-c, or in the event of running out of
diskspace on the root filesystem.
- Various cleanups done on the code.
- 0.2.0
- New commands: 'install', 'uninstall'
- Renamed command: 'upgrade' is now 'sync' to better reflect its function
- Some slight cosmetic changes
- 0.1.1
- Fixed an infinite loop bug triggered by packages not in the dependency graph being installed by
other packages.
- 0.1.0 Initial release
Contact
Author: peter.schuller@infidyne.com