binary package management for CRUX
John McQuah
57f3b29e2e
update the html index too, when individual packages are given pkg-get docs: explain in more detail the effect of -r (alternate root) |
||
---|---|---|
doc | ||
scripts | ||
ChangeLog | ||
COPYING | ||
Makefile | ||
README | ||
TODO |
INTRODUCTION ---------------------------------------------------------------------------- pkg-get is a package / repository management tool for CRUX Linux. Syntax and features are very close to (often a carbon copy of) the ones found in the port management tool 'prt-get' by Johannes Winkelmann. In fact pkg-get was developed as a prt-get/ports drop-in replacement for systems in which it is preferable to handle binary packages instead of compiling ports. ARCHITECTURE ---------------------------------------------------------------------------- The client machines sync metadata files (available packages, readme files, dependencies, etc) from a remote server (http or ftp) OR a local path. Once the metadata files are on the client machine, the usual operations of installing, removing, getting info on packages are available. QUICK START ---------------------------------------------------------------------------- Server: A repository can be generated using 'pkg-repgen' in a dir containing packages. It will take a while since md5sums have to be calculated. Alternatively, you can pass one or more arguments to 'pkg-repgen', indicating the individual packages for which metadata will be created. Client: Adjust settings in /etc/pkg-get.conf, then use the 'pkg-get sync' command to gather metadata from the server (if remote). You can now use the commands as described in the manual, e.g.: pkg-get info apache pkg-get depinst qt6-base pkg-get listinst See the manual page for a detailed list of commands and options. REQUIREMENTS ---------------------------------------------------------------------------- For the client, nothing outside the CRUX 'core' collection For the server, prt-get LIMITATIONS ---------------------------------------------------------------------------- The client and the server must be configured to use the same pkgmk compression mode, otherwise the client will try to download a tarball with the wrong suffix. This is only a problem if you sometimes compile ports on the client machine and prefer a different compression mode (better suited to its less-powerful hardware?). By allowing you to maintain your client machine solely with binary packages, pkg-get makes the contents of /etc/pkgmk.conf mostly irrelevant, so you can simply put a verbatim copy of the server's pkgmk.conf on the client machine. The pkg-get configuration file does not offer as many settings as the one for prt-get. In particular, you cannot change "addcommand", "rmcommand", or "runscriptscommand"; these are hard-coded as /usr/bin/pkgadd, /usr/bin/pkgrm, and /bin/bash, respectively. There is also currently no mechanism to respect "preferhigher", when doing 'pkg-get diff' or 'pkg-get sysup'. 'pkg-get depends' and 'prt-get quickdep' do not handle more than one port, unlike the corresponding commands in prt-get. Therefore it is not as straightforward to preview the list of packages that would be installed, before running a 'depinst' operation with multiple targets. The limitation above would have been mitigated by a --test switch. Alas, such a switch is also absent from the design of pkg-get. Use the --test switch with prt-get itself, for the closest approximation of previewing the outcome from a 'pkg-get depinst' operation. 'pkg-get dependent' does not support the --recursive option. Other useful prt-get commands (grpinst, fsearch, deptree, listorphans, ls, cat, edit, cache) have no counterpart in pkg-get. Of these omissions, only the 'grpinst' command is of possible interest for binary package management; the unimplemented commands and options are just as easily delegated to prt-get itself. If you want a Perl implementation that does provide these missing commands, consider the script written by user farkuhar [1]. pkg-get only makes use of the hard dependencies listed by the port maintainer, not any of the eager linking that might have occurred on the build machine. As a result, 'pkg-get depinst foo' might omit some of the packages needed by 'foo'. User ppetrov^ has contributed some helper scripts to facilitate the fixing of these broken binaries; visit the site [2] to download them. [1] https://git.sdf.org/jmq/Documentation/src/branch/master/scripts/prt-auf [2] https://github.com/slackalaxy/depsck