1aa3e09a6e
Changelog from AN-2021-01-05: - Bourne Shell: When we introduced ${.sh.path} in February 2020, we did use the "new" and POSIX-only function realpath() that is not present on e.g. Ultrix. We now use abspath() from libschily if realpath() is missing. Note that abspath() is better than realpath(), as it supports path names longer than PATH_MAX, but since ${.sh.path} is only used to return the absolute pathname for the current shell binary, this is not a problem and on the other side, we can avoid linking against libschily this way, so shell scripting with lazy linking is faster since less libraries need to be linked at startup. Changelog from AN-2021-04-21: - Bourne Shell: gmatch.c: The new version no longer aborts with an illegal multi byte sequence as "no match". As a result, the "*" now again matches any filename - even if the filename contains an illegal multi-byte sequence. This is a problem that did not exist on the original Bourne Shell from Solaris that used gmatch() from the AT&T libgen, but since we added our private portable gmatch.c. to get better portability. Thanks to Stephane Chazelas for reporting the problem related to multi-byte to wide character conversion and illegal multi byte sequences in the case statement and filesystem globbing. - Bourne Shell: word.c::readwc() no longer uses prwc() but rather a loop on the original multi-byte stream to print the "set -v" output. This permits to output the original input data in any case instead of stumbling over illegal multi-byte sequences. Thanks to Stephane Chazelas for reporting the general problem with input byte sequences that cause an EILSEQ error. - Bourne Shell: struct fileblk now remembers lastwc and the related input string as fileblk->mbs[] in order to avoid incorrect conversions via wctomb() in case that the input wide char was a result from an EILSEQ conversion and thus has no related multi byte string. An important visible result of that change is that input read by the builtin command read(1) correctly forwards input that caused an EILSEQ error. It could not be verified whether this covers all possible similar cases, but it is at least very close to a completely correct solution. Thanks to Stephane Chazelas for reporting the general problem with input byte sequences that cause an EILSEQ error. - Bourne Shell: xec.c: Cstyle changes - Bourne Shell: the Copyright messages now mention 2021 |
||
---|---|---|
archivers | ||
audio | ||
benchmarks | ||
biology | ||
bootstrap | ||
cad | ||
chat | ||
comms | ||
converters | ||
cross | ||
databases | ||
devel | ||
distfiles | ||
doc | ||
editors | ||
emulators | ||
filesystems | ||
finance | ||
fonts | ||
games | ||
geography | ||
graphics | ||
ham | ||
inputmethod | ||
lang | ||
licenses | ||
math | ||
mbone | ||
meta-pkgs | ||
misc | ||
mk | ||
multimedia | ||
net | ||
news | ||
packages | ||
parallel | ||
pkgtools | ||
regress | ||
security | ||
shells | ||
sysutils | ||
templates | ||
textproc | ||
time | ||
wm | ||
www | ||
x11 | ||
_NetBSD-pkgdb | ||
Makefile | ||
pkglocate | ||
README.md |
pkgsrc
pkgsrc is a framework for building software for a variety of UNIX-like systems.
It produces binary packages, which can be managed with tools such as
pkgin. pkgsrc is highly configurable, supporting
building packages for an arbitrary installation prefix (the default is
/usr/pkg
), allowing multiple branches to coexist on one machine, a
build options framework, and a compiler transformation framework, among
other advanced features. Unprivileged use and installation is also supported.
pkgsrc is the default package manager for NetBSD and SmartOS. It's also supported as a first-class option in OmniOS CE and Oasis Linux.
Bootstrapping
To use pkgsrc on operating systems other than NetBSD, you first need to bootstrap:
cd pkgsrc/bootstrap
./bootstrap
Note that this is only for the most simple case, using pkgsrc's defaults.
Please consult bootstrap/README
and bootstrap/README.OS
for detailed
information about bootstrapping.
Building packages
cd pkgsrc/category/package-name
$PREFIX/bin/bmake install
Where $PREFIX
is where you've chosen to install packages
(typically /usr/pkg
)
On NetBSD, bmake
is simply the built-in make
tool.
To build packages in bulk, tools such as pkgtools/pbulk
and
pkgtools/pkg_comp
can be used.
Troubleshooting
- Join the community IRC channel #pkgsrc @ freenode.
- Subscribe to the pkgsrc-users mailing list
- Send bugs and patches via web form (use the
pkg
category).
Latest sources
To fetch the main CVS repository:
cvs -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout -P pkgsrc
To work in the Git mirror, which is updated every few hours from CVS:
git clone https://github.com/NetBSD/pkgsrc.git
Additional links
- pkgsrc guide - the authoritative document on pkgsrc, also available as
doc/pkgsrc.txt
- pkgsrc in the NetBSD Wiki - miscellaneous articles and tutorials
- pkgsrc.se - a searchable web index of pkgsrc
- pkgsrc-wip - a project to get more people actively involved with creating packages for pkgsrc
- pkgsrc on Twitter - announcements to the world
- pkgsrcCon - we get together
- BulkTracker - a web application that tracks pkgsrc bulk builds