PKGSRC-SYNTH ============ This is a systematically modified version of pkgsrc (https://www.pkgsrc.org). It is constructed by applying an overlay to stock version and generated every six hours. The modification allows pkgsrc to create binary packages suitable for use by FreeBSD's pkg(8) binary package management tool (https://github.com/freebsd/pkg) rather than the older pkg_* tools. This in turn allows John Marino's local repository builder known as Synth (https://github.com/jrmarino/synth) to be adapted to pkgsrc. Differences between pkgsrc-synth and vanilla pkgsrc: 1. Adds pkgng format (Initial work by Pierre Pronchery) 2. Removes pkg_install dependency 3. Adds a very small pkgng_admin dependency for licenses and matching 4. Adds a very small indexindo dependency to handle GNU INFO pages 5. Contains several patches to support new pkgng format 6. Stores overlay sources at bootstrap/overlay 7. Omits the unreliable (and thus extra useless) docs/CHANGES-* and docs/TODO* files 8. Contains synth source (planned) ------------------------------------------------ Instructions to switch pkgsrc driver to pkg(8) ------------------------------------------------ Note 1: pkg(8) only works on ELF-based platforms. Note 2: pkg(8) is heavily tested on FreeBSD and DragonFly Note 3: pkg(8) is lightly tested on NetBSD Note 4: pkg(8) is untested on Linux but was designed for its use Note 5: pkg(8) is untested on SunOS. It would be amazing if it worked. SunOS support TODO Note 6: pkg(8) is untested on OpenBSD, MirBSD, Bitrig but may work Note 7: This framework does not currently support any OPSYS not mentioned above Non-NetBSD systems ------------------ Start with a pristine system with only native tools installed. Obtain a copy of this repository, e.g. 1. cd ~/ 2. fetch https://github.com/jrmarino/pkgsrc-synth/archive/master.zip 3. cd /usr 4. unzip ~/master.zip Use the provided bootstrap tool. After it completes, the system will have pkg(8) installed along with some fundamental packages. Example: /usr/pkgsrc-synth-master/bootstrap/bootstrap \ --prefix=/usr/pkg \ --pkgdbdir=/var/db/pkgsrc \ --workdir=/tmp/pkgsrc-bootstrap \ --make-jobs=6 \ --format=pkgng Note that all of those parameters are optional. The format defaults to pkgng and sane defaults exist for pkgdbdir, sysconfdir, varbase, etc. NetBSD systems ------------------ Start with a pristine system with only native tools installed. Obtain a copy of this repository (see the example above). In order to obtain a registered version of pkg(8) from source, we will have to build a few packages twice: The first version of pkg(8) and its fundamental dependencies will be installed to a temporary location using the old package tools, and then they will be rebuilt and reinstalled using the new format to the intended localbase. 1. mkdir -p /tmp/pkgngboot 2. use vi to add/change the following lines to mk.conf PKG_FORMAT= pkg LOCALBASE= /tmp/pkgngboot/ PKG_DBDIR= /tmp/pkgngboot/pkgdb PKGNG_DBDIR= /usr/pkg/pkgng-db 3. cd /usr/pkgsrc-synth-master/pkgtools/pkg 3. make install 4. make clean clean-depends 5. use vi to change the following line to mk.conf PKG_FORMAT= pkgng LOCALBASE= /usr/pkg # default; can remove line PKG_DBDIR= /usr/pkg/pkgng-db #PKGNG_DBDIR= /usr/pkg/pkgng-db 6. make PKG_CMD=/tmp/pkgngboot/sbin/pkg-static PKG_ADMIN=/tmp/pkgngboot/sbin/pkgng_admin install 7. rm -rf /tmp/pkgngboot If you've done everything correctly, "pkg info" should show that pkg has registered intself. Now use pkgsrc and pkg(8) normally. # pkg info cwrappers-20160908 pkgsrc compiler wrappers digest-20160304 Message digest wrapper utility pkg-1.9.99.2 Package management tool for FreeBSD