Automatically convert a FreeBSD system to use pkgbase.
Both the pkgbasify tool and pkgbase itself are experimental. Running pkgbasify may result in irreversible data loss and/or a system that fails to boot. It is highly recommended to make backups before running this tool.
That said, I am not aware of any bugs in pkgbasify and have used it to successfully upgrade test systems. If you find a bug in pkgbasify please open an issue!
pkgbasify performs the following steps:
- Make a copy of the etcupdate(8) current database (
/var/db/etcupdate/current
). This makes it possible for pkgbasify to merge config files after converting the system. - Select a repository based on the output of freebsd-version(1) and create
/usr/local/etc/pkg/repos/FreeBSD-base.conf
. - Select packages that correspond to the currently installed base system components.
- For example: if the lib32 component is not already installed, pkgbasify will skip installation of lib32 packages.
- Install the selected packages with pkg(8),
overwriting base system files and creating
.pkgsave
files as per standardpkg(8)
behavior. - Run a three-way-merge between the
.pkgsave
files (ours), the new files installed by pkg (theirs), and the old files in the copy of the etcupdate database.- If there are merge conflicts, an error is logged and manual intervention may be required.
.pkgsave
files without a corresponding entry in the old etcupdate database are skipped.
- If sshd(8) is running, restart the service.
- Run pwd_mkdb(8) and cap_mkdb(1).
- Remove
/boot/kernel/linker.hints
.