105 lines
4.8 KiB
Plaintext
105 lines
4.8 KiB
Plaintext
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 better handled
|
|
by 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.
|
|
|
|
In handling any new hard dependencies added by the maintainer since
|
|
the previous version of a package, pkg-get performs a sysup in the same
|
|
manner as the original prt-get (i.e., new dependencies are not injected
|
|
by default). Perhaps in future versions it will be the default to perform
|
|
automatic injection of new dependencies, which is easy with binary packages
|
|
since there's no need to carry out the installation in any particular order.
|
|
In the meantime, you can check the output of
|
|
'pkg-get depends $mypkg | grep "\[ \]"'
|
|
for each package affected by a sysup, in order to see whether the
|
|
maintainer has added new dependencies.
|
|
|
|
[1] https://git.sdf.org/jmq/Documentation/src/branch/master/scripts/prt-auf
|
|
[2] https://github.com/slackalaxy/depsck
|