Table of Contents
This section contains hints, tips & tricks on special things in pkgsrc that we didn't find a better place for in the previous chapters, and it contains items for both pkgsrc users and developers.
The following mailing lists may be of interest to pkgsrc users:
pkgsrc-bugs: A list where problem reports related to pkgsrc are sent and discussed.
pkgsrc-bulk: A list where the results of pkgsrc bulk builds are sent and discussed.
pkgsrc-changes: A list where all commit messages to pkgsrc are sent.
tech-pkg: A general discussion list for all things related to pkgsrc.
To subscribe, do:
%
echo subscribelistname
| mail majordomo@NetBSD.org
Archives for all these mailing lists are available from http://mail-index.NetBSD.org/.
Pkgviews is tightly integrated with buildlink. You can
find a pkgviews User's guide in pkgsrc/mk/buildlink3/PKGVIEWS_UG
.
The pkgsrc/pkgtools
directory pkgtools
contains a number of useful utilities for both users and
developers of pkgsrc. This section attempts only to make the
reader aware of the utilities and when they might be useful,
and not to duplicate the documentation that comes with each
package.
Utilities used by pkgsrc (automatically installed when needed):
pkgtools/x11-links
: Symlinks for
use by buildlink.
OS tool augmentation (automatically installed when needed):
pkgtools/digest
: Calculates
various kinds of checksums (including SHA1).
pkgtools/libnbcompat
:
Compatibility library for pkgsrc tools.
pkgtools/mtree
: Installed on
non-BSD systems due to lack of native mtree.
pkgtools/pkg_install
: Up-to-date
replacement for /usr/sbin/pkg_install
, or for use on
operating systems where pkg_install is not present.
Utilities used by pkgsrc (not automatically installed):
pkgtools/pkg_tarup
: Create a
binary package from an already-installed package. Used
by make
replace to save the old package.
pkgtools/dfdisk
: Adds extra
functionality to pkgsrc, allowing it to fetch distfiles
from multiple locations. It currently supports the
following methods: multiple CD-ROMs and network
FTP/HTTP connections.
pkgtools/xpkgwedge
: Put X11
packages someplace else (enabled by default).
devel/cpuflags
: Determine the
best compiler flags to optimise code for your current
CPU and compiler.
Utilities for keeping track of installed packages, being up to date, etc:
pkgtools/pkg_chk
: Reports on
packages whose installed versions do not match the
latest pkgsrc entries.
pkgtools/pkgdep
: Makes dependency
graphs of packages, to aid in choosing a strategy for
updating.
pkgtools/pkgdepgraph
: Makes
graphs from the output of pkgtools/pkgdep
(uses
graphviz).
pkgtools/pkglint
: The pkglint(1)
program checks a pkgsrc entry for errors, lintpkgsrc(1)
does various checks on the complete pkgsrc system.
pkgtools/pkgsurvey
: Report what
packages you have installed.
Utilities for people maintaining or creating individual packages:
pkgtools/pkgdiff
: Automate making
and maintaining patches for a package (includes
pkgdiff, pkgvi, mkpatches, etc.).
pkgtools/rpm2pkg
, pkgtools/url2pkg
: Aids in
converting to pkgsrc.
pkgtools/gensolpkg
: Convert
pkgsrc to a Solaris package.
Utilities for people maintaining pkgsrc (or: more obscure pkg utilities)
pkgtools/pkg_comp
: Build packages
in a chrooted area.
pkgtools/libkver
: Spoof kernel
version for chrooted cross builds.
If you want to use pkgsrc as non-root user, you can set
some variables to make pkgsrc work under these conditions. At
the very least, you need to set UNPRIVILEGED
to “yes”; this will turn on unprivileged
mode and set multiple related variables to allow installation
of packages as non-root.
In case the defaults are not enough, you may want to tune
some other variables used. For example, if the automatic
user/group detection leads to incorrect values (or not the
ones you would like to use), you can change them by setting
UNPRIVILEGED_USER
and
UNPRIVILEGED_GROUP
respectively.
As regards bootstrapping, please note that the
bootstrap
script will ease non-root configuration when given the
“--ignore-user-check”
flag, as it will choose and use multiple default directories
under ~/pkg
as the installation targets.
These directories can be overriden by the “--prefix” flag provided by the script,
as well as some others that allow finer tuning of the tree
layout.
By default, resuming transfers in pkgsrc is disabled, but
you can enable this feature by adding the option PKG_RESUME_TRANSFERS=YES
into /etc/mk.conf
. If, during a fetch step, an
incomplete distfile is found, pkgsrc will try to resume
it.
You can also use a different program than the default
ftp(1) by
changing the FETCH_CMD
variable.
Don't forget to set FETCH_RESUME_ARGS
and FETCH_OUTPUT_ARGS
if you are not using
default values.
For example, if you want to use wget
to resume downloads, you'll have to
use something like:
FETCH_CMD= wget FETCH_BEFORE_ARGS= --passive-ftp FETCH_RESUME_ARGS= -c FETCH_OUTPUT_ARGS= -O
If you want to use XFree86 from pkgsrc instead of your
system's own X11 (/usr/X11R6
, /usr/openwin
, ...), you will have to add
the following line into /etc/mk.conf
:
X11_TYPE=XFree86
If you want to use X.org from pkgsrc instead of your
system's own X11 (/usr/X11R6
, /usr/openwin
, ...) you will have to add the
following line into /etc/mk.conf
:
X11_TYPE=xorg
The DragonFly operating system defaults to using this X.org X11 implementation from pkgsrc.
If you are sitting behind a firewall which does not allow direct connections to Internet hosts (i.e. non-NAT), you may specify the relevant proxy hosts. This is done using an environment variable in the form of a URL, e.g. in Amdahl, the machine “orpheus.amdahl.com” is one of the firewalls, and it uses port 80 as the proxy port number. So the proxy environment variables are:
ftp_proxy=ftp://orpheus.amdahl.com:80/ http_proxy=http://orpheus.amdahl.com:80/
This depends on which utility is used to retrieve
distfiles. From bsd.pkg.mk
, FETCH_CMD
is assigned the first available
command from the following list:
${LOCALBASE}/bin/ftp
/usr/bin/ftp
On a default NetBSD installation, this will be
/usr/bin/ftp
, which automatically tries
passive connections first, and falls back to active
connections if the server refuses to do passive. For the
other tools, add the following to your /etc/mk.conf
file: PASSIVE_FETCH=1
.
Having that option present will prevent /usr/bin/ftp
from falling back to active
transfers.
You would like to download all the distfiles in a single batch from work or university, where you can't run a make fetch. There is an archive of distfiles on ftp.NetBSD.org, but downloading the entire directory may not be appropriate.
The answer here is to do a make fetch-list in /usr/pkgsrc
or one of its subdirectories,
carry the resulting list to your machine at work/school and
use it there. If you don't have a NetBSD-compatible
ftp(1) (like
lukemftp) at work, don't forget to set FETCH_CMD
to something that fetches a
URL:
At home:
%
cd /usr/pkgsrc
%
make fetch-list FETCH_CMD=wget DISTDIR=/tmp/distfiles >/tmp/fetch.sh
%
scp /tmp/fetch.sh work:/tmp
At work:
%
sh /tmp/fetch.sh
then tar up /tmp/distfiles
and take it home.
If you have a machine running NetBSD, and you want to get all distfiles (even ones that aren't for your machine architecture), you can do so by using the above-mentioned make fetch-list approach, or fetch the distfiles directly by running:
%
make mirror-distfiles
If you even decide to ignore NO_{SRC,BIN}_ON_{FTP,CDROM}
, then you can
get everything by running:
%
make fetch NO_SKIP=yes
When compiling the pkgtools/pkg_install
package, you get
the error from make that it doesn't know how to make
/usr/share/tmac/tmac.andoc
? This indicates
that you don't have installed the “text” set (nroff, ...) from the NetBSD
base distribution on your machine. It is recommended to do
that to format man pages.
In the case of the pkgtools/pkg_install
package, you can
get away with setting NOMAN=YES
either in the environment or in /etc/mk.conf
.
You didn't install the compiler set, comp.tgz
, when you installed your NetBSD
machine. Please get and install it, by extracting it in
/
:
#
cd /
#
tar --unlink -zxvpf .../comp.tgz
comp.tgz
is part of every NetBSD
release. Get the one that corresponds to your release
(determine via uname
-r).
When installing packages as non-root user and using the
just-in-time
su(1) feature
of pkgsrc, it can become annoying to type in the root
password for each required package installed. To avoid this,
the sudo package can be used, which does password caching
over a limited time. To use it, install sudo (either as
binary package or from security/sudo
) and then put the
following into your /etc/mk.conf
:
.if exists(${LOCALBASE}/bin/sudo) SU_CMD= ${LOCALBASE}/bin/sudo /bin/sh -c .endif
As the system administrator, you can choose where
configuration files are installed. The default settings make
all these files go into ${PREFIX}/etc
or some of its
subdirectories; this may be suboptimal depending on your
expectations (e.g., a read-only, NFS-exported PREFIX
with a need of per-machine
configuration of the provided packages).
In order to change the defaults, you can modify the
PKG_SYSCONFBASE
variable (in
/etc/mk.conf
) to point to your preferred
configuration directory; some common examples include
/etc
or /etc/pkg
.
Furthermore, you can change this value on a per-package
basis by setting the PKG_SYSCONFDIR.${PKG_SYSCONFVAR}
variable.
PKG_SYSCONFVAR
's value usually
matches the name of the package you would like to modify,
that is, the contents of PKGBASE
.
Note that after changing these settings, you must rebuild and reinstall any affected packages.
Please be aware that there can often be bugs in
third-party software, and some of these bugs can leave a
machine vulnerable to exploitation by attackers. In an effort
to lessen the exposure, the NetBSD packages team maintains a
database of known-exploits to packages which have at one time
been included in pkgsrc. The database can be downloaded
automatically, and a security audit of all packages installed
on a system can take place. To do this, install the security/audit-packages
package. It has
two components:
download-vulnerability-list, an easy way to download a list of the security vulnerabilities information. This list is kept up to date by the NetBSD security officer and the NetBSD packages team, and is distributed from the NetBSD ftp server:
ftp://ftp.NetBSD.org/pub/NetBSD/packages/distfiles/pkg-vulnerabilities
audit-packages, an easy way to audit the current machine, checking each vulnerability which is known. If a vulnerable package is installed, it will be shown by output to stdout, including a description of the type of vulnerability, and a URL containing more information.
Use of the security/audit-packages
package is
strongly recommended! After “audit-packages” is installed, please
read the package's message, which you can get by running
pkg_info -D
audit-packages
.
If this package is installed, pkgsrc builds will use it to perform a security check before building any package. See Section 5.2, “Variables affecting the build process” for ways to control this check.