Frequently Asked Questions
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.
Are there any mailing lists for pkg-related discussion?
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:
&cprompt; echo subscribe listname | mail majordomo@NetBSD.org
Archives for all these mailing lists are available from
.
Where's the pkgviews documentation?
Pkgviews is tightly integrated with buildlink. You can find a
pkgviews User's guide in
pkgsrc/mk/buildlink3/PKGVIEWS_UG.
Utilities for package management (pkgtools)
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/pkgconflict: Find
packages that conflict but aren't marked as such.
pkgtools/pkg_comp: Build
packages in a chrooted area.
pkgtools/libkver: Spoof
kernel version for chrooted cross builds.
How to use pkgsrc as non-root
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.
How to resume transfers when fetching distfiles?
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 &man.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
How can I install/use XFree86 from pkgsrc?
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
How can I install/use X.org from pkgsrc?
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
How to fetch files from behind a firewall
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/
How do I tell make fetch to do passive FTP?
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.
How to fetch all distfiles at once
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 it's subdirectories, carry the
resulting list to your machine at work/school and use it there. If you
don't have a NetBSD-compatible &man.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
What does Don't know how to make
/usr/share/tmac/tmac.andoc
mean?
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 manpages.
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.
What does Could not find bsd.own.mk
mean?
You didn't install the compiler set, comp.tgz,
when you installed your NetBSD machine. Please get it 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).
Using 'sudo' with pkgsrc
When installing packages as non-root user and using the just-in-time
&man.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
How do I change the location of configuration files?
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.
Automated security checks
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:
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-package.