head 1.3;
access;
symbols
pkgsrc-2013Q2:1.3.0.46
pkgsrc-2013Q2-base:1.3
pkgsrc-2012Q4:1.3.0.44
pkgsrc-2012Q4-base:1.3
pkgsrc-2011Q4:1.3.0.42
pkgsrc-2011Q4-base:1.3
pkgsrc-2011Q2:1.3.0.40
pkgsrc-2011Q2-base:1.3
pkgsrc-2009Q4:1.3.0.38
pkgsrc-2009Q4-base:1.3
pkgsrc-2008Q4:1.3.0.36
pkgsrc-2008Q4-base:1.3
pkgsrc-2008Q3:1.3.0.34
pkgsrc-2008Q3-base:1.3
cube-native-xorg:1.3.0.32
cube-native-xorg-base:1.3
pkgsrc-2008Q2:1.3.0.30
pkgsrc-2008Q2-base:1.3
pkgsrc-2008Q1:1.3.0.28
pkgsrc-2008Q1-base:1.3
pkgsrc-2007Q4:1.3.0.26
pkgsrc-2007Q4-base:1.3
pkgsrc-2007Q3:1.3.0.24
pkgsrc-2007Q3-base:1.3
pkgsrc-2007Q2:1.3.0.22
pkgsrc-2007Q2-base:1.3
pkgsrc-2007Q1:1.3.0.20
pkgsrc-2007Q1-base:1.3
pkgsrc-2006Q4:1.3.0.18
pkgsrc-2006Q4-base:1.3
pkgsrc-2006Q3:1.3.0.16
pkgsrc-2006Q3-base:1.3
pkgsrc-2006Q2:1.3.0.14
pkgsrc-2006Q2-base:1.3
pkgsrc-2006Q1:1.3.0.12
pkgsrc-2006Q1-base:1.3
pkgsrc-2005Q4:1.3.0.10
pkgsrc-2005Q4-base:1.3
pkgsrc-2005Q3:1.3.0.8
pkgsrc-2005Q3-base:1.3
pkgsrc-2005Q2:1.3.0.6
pkgsrc-2005Q2-base:1.3
pkgsrc-2005Q1:1.3.0.4
pkgsrc-2005Q1-base:1.3
pkgsrc-2004Q4:1.3.0.2
pkgsrc-2004Q4-base:1.3
pkgsrc-base:1.1.1.1
TNF:1.1.1;
locks; strict;
comment @# @;
1.3
date 2004.11.20.13.11.36; author hubertf; state dead;
branches;
next 1.2;
1.2
date 2004.10.22.00.24.48; author hubertf; state Exp;
branches;
next 1.1;
1.1
date 2004.10.21.14.27.38; author grant; state Exp;
branches
1.1.1.1;
next ;
1.1.1.1
date 2004.10.21.14.27.38; author grant; state Exp;
branches;
next ;
desc
@@
1.3
log
@This file is unused for some time now. Remove.
@
text
@
FAQs & features of the package system
Packages using GNU autoconf
If your package uses GNU autoconf created configure scripts, add the following
to your package's Makefile:
GNU_CONFIGURE= yes
Note that this appends --prefix=${PREFIX}
to
CONFIGURE_ARGS, so you don't
have to do that yourself, but may not be desired.
Other distrib methods than .tar.gz
If your package uses a different distribution method from
.tar.gz, take a
look at the package for editors/sam, which uses a gzipped shell archive
(shar), but the quick solution is to set
EXTRACT_SUFX to the name after the
DISTNAME field, and add the following to your
package's Makefile:
EXTRACT_SUFX= .msg.gz
EXTRACT_CMD= zcat
EXTRACT_BEFORE_ARGS=
EXTRACT_AFTER_ARGS= |sh
Packages not creating their own subdirectory
Your package doesn't create a subdirectory for itself (like GNU software
does, for instance), but extracts itself in the current directory: see
editors/sam again, but the quick answer is:
WRKSRC= ${WRKDIR}
Please note that the old:
NO_WRKSUBDIR= yes
has been deprecated and should not be used.
Custom configuration process
Your package uses a weird Configure script, eg.
sysutils/top. The quick answer is:
HAS_CONFIGURE= yes
CONFIGURE_SCRIPT= Configure
CONFIGURE_ARGS+= netbsd13
Packages not building in their DISTNAME directory
Your package builds in a different directory from its base
DISTNAME (see lang/tcl and
x11/tk).
WRKSRC= ${WRKDIR}/${DISTNAME}/unix
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, 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
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/
If your patch contains an RCS ID
See for information on how to
remove RCS IDs from patch files.
How to pull in variables from /etc/mk.conf
The problem with package-defined variables that can be overridden via
MAKECONF or /etc/mk.conf is that make(1) expands a variable as it is
used, but evaluates preprocessor like statements (.if, .ifdef and
.ifndef) as they are read. So, to use any variable (which may be set
in /etc/mk.conf) in one of the .if* statements, the file
/etc/mk.conf
must be included before that .if* statement.
Rather than have a number of ad-hoc ways of including
/etc/mk.conf,
should it exist, or MAKECONF, should it exist, include the
pkgsrc/mk/bsd.prefs.mk file in the package Makefile before any
preprocessor-like .if, .ifdef, or .ifndef statements:
.include "../../mk/bsd.prefs.mk"
.if defined(USE_MENUS)
...
.endif
If you wish to set the CFLAGS variable in /etc/mk.conf please make sure
to use:
CFLAGS+= -your -flags
Using CFLAGS= (ie without the +
) may
lead to problems with packages that need to add their own flags. Also,
you may want to take a look at the devel/cpuflags package if
you're interested in optimization for the current CPU.
Is there a mailing list for pkg-related discussion?
Yes, tech-pkg@@NetBSD.org is the list for discussing package
related issues. To subscribe do:
% echo subscribe tech-pkg | mail majordomo@@NetBSD.org
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:
/usr/bin/fetch
${LOCALBASE}/bsd/bin/ftp
/usr/bin/ftp
On a default NetBSD install, 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.
Dependencies on other packages
Your package may depend on some other package being present - and there are
various ways of expressing this dependency. NetBSD supports the
BUILD_DEPENDS and DEPENDS definitions,
as well as dependencies via
buildlink3.mk (see ).
The basic difference between the two definitions is as follows: The
DEPENDS definition registers that pre-requisite in the binary package,
whilst the BUILD_DEPENDS definition does not.
This means that if you only need a package present whilst you are building,
it should be noted as a BUILD_DEPENDS.
The format for a BUILD_DEPENDS and a
DEPENDS definition is:
<pre-req-package-name>:../../<category>/<pre-req-package>
Please note that the pre-req-package-name
may include any of the wildcard
version numbers recognised by pkg_info(1).
If your package needs to use another package to build itself, this
is specified using the BUILD_DEPENDS definition.
BUILD_DEPENDS+= autoconf-2.13:../../devel/autoconf
If your package needs a library with which to link, this is specified
using the DEPENDS definition. An example of this is
the print/lyx
package, which uses the xpm library, version 3.4j to build.
DEPENDS+= xpm-3.4j:../../graphics/xpm
You can also use wildcards in package dependences:
DEPENDS+= xpm-[0-9]*:../../graphics/xpm
Note that such wildcard dependencies are retained when creating binary
packages. The dependency is checked when installing the binary
package and any package which matches the pattern will be used.
Wildcard dependencies should be used with care.
The -[0-9]* should be used instead of -* to avoid potentially
ambiguous matches such as tk-postgresql matching a tk-*
DEPENDS.
If your package needs some executable to be able to run correctly, this
is specified using the DEPENDS definition. The
print/lyx package needs
to be able to execute the latex binary from the teTeX package when it runs,
and that is specified:
DEPENDS+= teTeX-[0-9]*:../../print/teTeX
The comment about wildcard dependencies from previous paragraph
applies here, too.
If your package needs files from another package to build, see the
first part of the do-configure
target
print/ghostscript5 package
(it relies on the jpeg sources being present in source form during the
build):
if [ ! -e ${_PKGSRCDIR}/graphics/jpeg/${WRKDIR:T}/jpeg-6b ]; then \
cd ${_PKGSRCDIR}/../../graphics/jpeg && ${MAKE} extract; \
fi
If you build any other packages that way, please make sure the working
files are deleted too when this package's working files are cleaned up.
The easiest way to do so is by adding a pre-clean target:
pre-clean:
cd ${_PKGSRCDIR}/../../graphics/jpeg && ${MAKE} clean
Please also note the BUILD_USES_MSGFMT and
BUILD_USES_GETTEXT_M4 definitions,
which are provided as convenience definitions. The former works out whether
msgfmt(1) is part of the base system, and, if it isn't, installs the
devel/gettext package. The latter adds a build dependency on either an
installed version of an older gettext package, or if it isn't, installs the
devel/gettext-m4 package.
Conflicts with other packages
Your package may conflict with other packages a user might already have
installed on his system, e.g. if your package installs the same set of
files like another package in our pkgsrc tree.
In this case you can set CONFLICTS to a space separated
list of packages (including version string) your package conflicts with.
For example x11/Xaw3d and
x11/Xaw-Xpm install provide the
same shared library, thus you set in
pkgsrc/x11/Xaw3d/Makefile:
CONFLICTS= Xaw-Xpm-[0-9]*
and in pkgsrc/x11/Xaw-Xpm/Makefile:
CONFLICTS= Xaw3d-[0-9]*
Packages will automatically conflict with other packages with the name prefix
and a different version string. Xaw3d-1.5
e.g. will automatically conflict
with the older version Xaw3d-1.3
.
Software which has a homepage
The NetBSD packages system now supports a variable called
HOMEPAGE.
If the software being packaged has a home page, the Makefile should
include the URL for that page in the HOMEPAGE variable.
The definition of the variable should be placed immediately after the
MAINTAINER variable.
How to handle modified distfiles with the 'old' name
Sometimes authors of a software package make some modifications after the
software was released, and they put up a new distfile without changing the
package's version number. If a package is already in pkgsrc at that time,
the md5 checksum will no longer match. The correct way to work around this
is to update the package's md5 checksum to match the package on the master
site (beware, any mirrors may not be up to date yet!), and to remove the
old distfile from ftp.NetBSD.org's
/pub/NetBSD/packages/distfiles directory.
Furthermore, a mail to the package's author seems appropriate making sure
the distfile was really updated on purpose, and that no trojan horse or so
crept in.
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 on your machine
(nroff, ...). It is recommended to do that.
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.
How to handle incrementing versions when fixing an existing
package
When making fixes to an existing package it can be useful to change
the version number in PKGNAME. To avoid conflicting with
future versions
by the original author, a nb1
, nb2
, ... suffix
can be used on package
versions by setting PKGREVISION=1 (2,. ..). The
nb
is treated like a .
by the pkg tools. e.g.
DISTNAME= foo-17.42
PKGREVISION= 9
will result in a PKGNAME of foo-17.42nb9
.
When a new release of the package is released, the
PKGREVISION should be
removed. e.g. on a new minor release of the above package, things should
be like:
DISTNAME= foo-17.43
Could not find bsd.own.mk - what's wrong?
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).
Restricted packages
Some licenses restrict how software may be re-distributed. In order to
satisfy these restrictions, the package system defines five make variables
that can be set to note these restrictions:
RESTRICTED
This variable should be set whenever a restriction exists
(regardless of its kind). Set this variable to a string
containing the reason for the restriction.
NO_BIN_ON_CDROM
Binaries may not be placed on CD-ROM. Set this variable to
${RESTRICTED} whenever a binary package may not
be included on a CD-ROM.
NO_BIN_ON_FTP
Binaries may not be placed on an FTP server. Set this
variable to ${RESTRICTED} whenever a binary package
may not not be made available on the Internet.
NO_SRC_ON_CDROM
Distfiles may not be placed on CD-ROM. Set this variable to
${RESTRICTED} if re-distribution of the source code
or other distfile(s) is not allowed on CD-ROMs.
NO_SRC_ON_FTP
Distfiles may not be placed on FTP. Set this variable to
${RESTRICTED} if re-distribution of the source
code or other distfile(s) via the Internet is not allowed.
Please note that the use of NO_PACKAGE,
IGNORE, NO_CDROM, or other generic
make variables to denote restrictions is deprecated, because they
unconditionally prevent users from generating binary packages!
Packages using (n)curses
Some packages need curses functionality that wasn't present in NetBSD's own
curses prior to 1.4Y.
If ../../devel/ncurses/buildlink3.mk is included in
a package's Makefile,
then a curses library and headers with ncurses functionality are linked
into ${BUILDLINK_DIR} at pre-configure time. If
ncurses is actually required, then define USE_NCURSES
in the package's Makefile:
USE_NCURSES= # redrawwin
The comment should indicate which functions are missing.
Automated security check
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 audit-packages package is strongly recommended.
The following message is displayed as part of the audit-packages
installation procedure:
======================================================================
You may wish to have the vulnerabilities file downloaded daily so that
it remains current. This may be done by adding an appropriate entry
to the root users crontab(5) entry. For example the entry
# download vulnerabilities file
0 3 * * * ${PREFIX}/sbin/download-vulnerability-list >/dev/null 2>&1
will update the vulnerability list every day at 3AM.
In addition, you may wish to run the package audit from the daily
security script. This may be accomplished by adding the following
lines to /etc/security.local
if [ -x ${PREFIX}/sbin/audit-packages ]; then
${PREFIX}/sbin/audit-packages
fi
======================================================================
Note to package developers: When a vulnerability is found, this should be
noted in
localsrc/security/advisories/pkg-vulnerabilities, and after the
commit of that file, it should be copied to both
/pub/NetBSD/packages/distfiles/pkg-vulnerabilities
and
/pub/NetBSD/packages/distfiles/vulnerabilities on
ftp.NetBSD.org by
localsrc/security/advisories/Makefile.
What's the proper way to create an account from a package?
There are two make variables used to control the creation of package-specific
groups and users at pre-install time. The first is
PKG_GROUPS, which is a
list of group[:groupid] elements, where the groupid is optional. The second
is PKG_USERS, which is a list of elements of the form:
user:group[:[userid][:[description][:[home][:shell]]]]
where only the user and group are required, the rest being optional. A
simple example is:
PKG_GROUPS= foogroup
PKG_USERS= foouser:foogroup
A more complex example is that creates two groups and two users is:
PKG_GROUPS= group1 group2:1005
PKG_USERS= first:group1::First\\ User \
second:group2::Second\\ User:/home/second:${SH}
By default, a new user will have home directory
/nonexistent, and login shell
/sbin/nologin unless they are specified as part of
the user element.
The package Makefile must also set
USE_PKGINSTALL=YES. This will cause the users and groups
to be created at pre-install time, and the admin will be prompted to remove
them at post-deinstall time. Automatic creation of the users and groups
can be toggled on and off by setting the environment variable
PKG_CREATE_USERGROUP prior to package installation.
How to handle compiler bugs
Some source files trigger bugs in the compiler, based on combinations
of compiler version and architecture and almost always relation to
optimisation being enabled. Common symptoms are gcc internal errors
or never finishing compiling a file.
Typically a workaround involves testing the MACHINE_ARCH
and compiler version, disabling optimisation for that
file/MACHINE_ARCH/compiler
combination, and documenting it in doc/HACKS. See
doc/HACKS for examples.
Packages providing info files
Some packages install info files or use the makeinfo
or install-info
commands. Each of the info files:
is considered to be installed in the directory
${PREFIX}/${INFO_DIR},
is registered in the Info directory file
${PREFIX}/${INFO_DIR}/dir,
and must be listed as a filename in the
INFO_FILES variable in the package
Makefile.
INFO_DIR defaults to info
and can be
overridden in the package Makefile. INSTALL and
DEINSTALL scripts will be generated to handle
registration of the info files in the Info directory file. The
install-info
command used for the info files registration is
either provided by the system, or by a special purpose package
automatically added as dependency if needed.
A package which needs the makeinfo
command at build
time must define the variable USE_MAKEINFO in its
Makefile. If a minimum version of the makeinfo
command
is needed it should be noted with the TEXINFO_REQD
variable in the package Makefile. By default, a
minimum version of 3.12 is required. If the system does not provide a
makeinfo command or if it does not match the required
minimum, a build dependency on the devel/gtexinfo package
will be added automatically.
The build and installation process of the software provided by the package
should not use the install-info command as the
registration of info files is the task of the package
INSTALL script, and it must use the appropriate
makeinfo command.
To achieve this goal the pkgsrc infrastructure creates overriding scripts
for the install-info and makeinfo
commands in a directory listed early in PATH.
The script overriding install-info has no effect except
the logging of a message. The script overriding makeinfo
logs a message and according to the value of USE_MAKEINFO
and TEXINFO_REQD either run the appropriate
makeinfo command or exit on error.
Packages whose distfiles aren't available for plain downloading
If you need to download from a dynamic URL you can set
DYNAMIC_MASTER_SITES
and a make fetch will call
files/getsite.sh with the name of each file
to download as an argument, expecting it to output the URL of the directory
from which to download it. graphics/ns-cult3d is an example of this usage.
If the download can't be automated, because the user must submit personal
information to apply for a password, or must pay for the source, or whatever,
you can set _FETCH_MESSAGE to a macro which displays
a message explaining the situation. _FETCH_MESSAGE must
be executable shell commands, not just a message. (Generally, it executes
${ECHO}). As of this writing, the following
packages use this: audio/realplayer,
cad/simian, devel/ipv6socket,
emulators/vmware-module,
fonts/acroread-jpnfont,
sysutils/storage-manager,
www/ap-aolserver, www/openacs. Try to be consistent
with them.
Configuration files handling and placement
The global variable PKG_SYSCONFBASE (and some others)
can be set by the system administrator in /etc/mk.conf
to define the place where
configuration files get installed. Therefore, packages must be adapted to
support this feature. Keep in mind that you should only install files that
are strictly necessary in the configuration directory, files that can
go to $PREFIX/share should go there.
We will take a look at available variables first
(bsd.pkg.mk contains more
information). PKG_SYSCONFDIR is where the
configuration files for a package
may be found (that is, the full path, e.g. /etc
or /usr/pkg/etc). This
value may be customized in various ways:
PKG_SYSCONFBASE is the main config directory under
which all package configuration files are to be found. Users will
typically want to set it to /etc, or accept the
default location of $PREFIX/etc.
PKG_SYSCONFSUBDIR is the subdirectory of
PKG_SYSCONFBASE under which
the configuration files for a particular package may be found. Defaults
to ${SYSCONFBASE}.
PKG_SYSCONFVAR is the special suffix used to
distinguish any overriding values for a particular package
(see next item). It defaults to ${PKGBASE}, but
for a collection of related packages that should all have the same
PKG_SYSCONFDIR value, it can be set in each of
the package Makefiles to a common value.
PKG_SYSCONFDIR.${PKG_SYSCONFVAR} overrides the value of
${PKG_SYSCONFDIR} for packages with the same value
for PKG_SYSCONFVAR.
As an example, all the various KDE packages may want to set
PKG_SYSCONFVAR to kde
so admins can
set PKG_SYSCONFDIR.kde in
/etc/mk.conf to define where to install KDE
config files.
Programs' configuration directory should be defined during the configure
stage. Packages that use GNU autoconf can usually do this by using the
--sysconfdir
parameter, but this brings some problems as
we will see now.
When you change this pathname in packages, you should not allow them to
install files in that directory directly. Instead they need to install
those files under share/examples/${PKGNAME} so
PLIST can register them.
Once you have the required configuration files in place (under the
share/examples directory) the variable
CONF_FILES should be set to copy
them into PKG_SYSCONFDIR. The contents of this variable
is formed by pairs
of filenames; the first element of the pair specifies the file inside the
examples directory (registered by PLIST) and the
second element specifies
the target file. This is done this way to allow binary packages to place
files in the right directory using
INSTALL/DEINSTALL scripts which are
created automatically. The package Makefile must also
set USE_PKGINSTALL=YES to use
these automatically generated scripts. The automatic copying of config
files can be toggled by setting the environment variable
PKG_CONFIG prior to package installation.
Here is an example, taken from mail/mutt/Makefile:
EGDIR= ${PREFIX}/share/doc/mutt/samples
CONF_FILES= ${EGDIR}/Muttrc ${PKG_SYSCONFDIR}/Muttrc
As you can see, this package installs configuration files inside
EGDIR, which are registered by
PLIST. After that, the variable
CONF_FILES lists
the installed file first and then the target file. Users will also get an
automatic message when files are installed using this method.
Packages providing login shells
If the purpose of the package is to provide a login shell, the variable
PKG_SHELL should contain the full pathname of the
shell executable installed by this package. The package
Makefile must also set
USE_PKGINSTALL=YES to use the automatically generated
INSTALL/DEINSTALL scripts.
An example taken from shells/zsh:
USE_PKGINSTALL= YES
...
PKG_SHELL= ${PREFIX}/bin/zsh
The shell is registered into /etc/shells file automatically in the
post-install target by the generated INSTALL script
and removed in the deinstall
target by the DEINSTALL script.
Packages providing locale catalogues
If the package provides its own locale catalogues, the variable
USE_PKGLOCALEDIR should be defined. It will ensure
that the package's Makefile template files are fixed
and point to the correct locale directories
(which may vary, depending on OS), if necessary. See for details about PKGLOCALEDIR.
This functionality is buildlink3-only.
Using 'sudo' with pkgsrc
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:
SU_CMD=/usr/pkg/bin/sudo /bin/sh -c
Packages containing perl scripts
If your package contains interpreted perl scripts, set
REPLACE_PERL to ensure that the proper interpreter
path is set. REPLACE_PERL should contain a list of
scripts, relative to WRKSRC, that you want adjusted.
Packages with hardcoded paths to other interpreters
Your package may also contain scripts with hardcoded paths to other
interpreters besides (or as well as) perl. To correct the full
pathname to the script interpreter, you need to set the following
definitions in your Makefile (we shall use
tclsh in this example):
REPLACE_INTERPRETER+= tcl
_REPLACE.tcl.old= .*/bin/tclsh
_REPLACE.tcl.new= ${PREFIX}/bin/tclsh
_REPLACE_FILES.tcl= ...list of tcl scripts which need to be fixed,
relative to ${WRKSRC}, just as in REPLACE_PERL
Utilities for package management (pkgtools)
The directory pkgtools contains a number of useful utilities. 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):
x11-links
symlinks for use by buildlink
OS tool augmentation (automatically installed when needed):
digest
calculates SHA1 checksums (and other kinds)
libnbcompat
compat library for pkg tools
mtree
installed on non-BSD systems due to lack of native mtree
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):
pkg_tarup
create a binary package from an already-installed package.
used by 'make replace' to save the old package
xpkgwedge
put X11 packages someplace else (see above)
Utilities for keeping track of installed packages, being up to date, etc:
pkgchk
installs pkg_chk, which reports on packages whose installed
versions do not match the latest pkgsrc entries
pkgdep
makes dependency graphs of packages, to aid in choosing a
strategy for updating
pkgdepgraph
make graph from above (uses graphviz)
pkglint
This provides two distinct abilities:
check a pkgsrc entry for correctness (pkglint)
check for and remove out-of-date distfiles and binary
packages (lintpkgsrc)
pkgsurvey
report what packages you have installed
Utilities for people maintaining or creating individual packages:
pkgdiff
automate making and maintaining patches for a package
rpm2pkg, url2pkg
aids in converting to pkgsrc
gensolpkg
convert pkgsrc to a Solaris package
Utilities for people maintaining pkgsrc (or more obscure pkg utilities)
pkgconflict
find packages that conflict but aren't marked as such
pkgcomp
build packages in a chrooted area
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. Please see
this
message for more details.
Packages that cannot or should not be built
There are several reasons why a package might be instructed to not
build under certain circumstances. If the package builds and runs
on most platforms, the exceptions should be noted with
NOT_FOR_PLATFORM. If the package builds and runs on
a small handful of platforms, set ONLY_FOR_PLATFORM
instead. If the package should be skipped (for example, because it
provides functionality already provided by the system), set
PKG_SKIP_REASON to a descriptive message. If
the package should fail because some preconditions are not met,
set PKG_FAIL_REASON to a descriptive message.
IGNORE is deprecated because it didn't provide enough
information to determine whether the build should fail.
@
1.2
log
@ * Add section on editing the pkgsrc guide
* Fix capitalisation to be have only the first letter capitalized
* Mention the pkgsrc developers as contributors to the guide
@
text
@d1 1
a1 1
@
1.1
log
@Initial revision
@
text
@d1 1
a1 1
d424 1
a424 1
Software which has a WWW Home Page
@
1.1.1.1
log
@import The pkgsrc guide, the docbook conversion/replacement of
Packages.txt; Packages.txt will be going away.
this package contains the source files and a mechanism to install
pkgsrc/doc/pkgsrc.{html,txt} which are distributed with pkgsrc. it
uses the same docbook infrastructure that is used to build the
documentation on www.NetBSD.org.
@
text
@@