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 <command>make fetch</command> 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 @@