release: Enable installing packages as a non-root user
Provide variables, PKG_REPOS_DIR and PKG_REPO_NAME, to allow the user to configure the source package repository. Configure pkg to emit added files to a metalog which gets concatenated with the main metalog immediately before we build the root filesystem. Reviewed by: cperciva, emaste MFC after: 3 days Sponsored by: The FreeBSD Foundation Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D52453
This commit is contained in:
@@ -138,6 +138,9 @@ cw-${_CW:tl}-${_FS}-${_FMT}: ${QEMUTGT}
|
||||
EC2BASEIMG=${.OBJDIR}/${EC2-BASE${_FS:tu}${_FMT:tu}IMAGE} \
|
||||
${WITHOUT_QEMU:DWITHOUT_QEMU=true} \
|
||||
${NO_ROOT:DNO_ROOT=true} \
|
||||
PKG_CMD=${PKG_CMD:Upkg} \
|
||||
PKG_REPOS_DIR=${PKG_REPOS_DIR:U${.OBJDIR}/${.TARGET}/etc/pkg} \
|
||||
PKG_REPO_NAME=${PKG_REPO_NAME:UFreeBSD-ports} \
|
||||
PKG_INSTALL_EPOCH=${PKG_INSTALL_EPOCH:U${GITEPOCH}} \
|
||||
${.CURDIR}/scripts/mk-vmimage.sh \
|
||||
-C ${.CURDIR}/tools/vmimage.subr -d ${.OBJDIR}/${.TARGET} \
|
||||
@@ -191,6 +194,9 @@ vm-image: ${QEMUTGT}
|
||||
QEMUSTATIC=${QEMUSTATIC} \
|
||||
${WITHOUT_QEMU:DWITHOUT_QEMU=true} \
|
||||
${NO_ROOT:DNO_ROOT=true} \
|
||||
PKG_CMD=${PKG_CMD:Upkg} \
|
||||
PKG_REPOS_DIR=${PKG_REPOS_DIR:U${.OBJDIR}/${.TARGET}-${FORMAT}-${FS}/etc/pkg} \
|
||||
PKG_REPO_NAME=${PKG_REPO_NAME:UFreeBSD-ports} \
|
||||
PKG_INSTALL_EPOCH=${PKG_INSTALL_EPOCH:U${GITEPOCH}} \
|
||||
${.CURDIR}/scripts/mk-vmimage.sh \
|
||||
-C ${.CURDIR}/tools/vmimage.subr \
|
||||
|
||||
@@ -163,19 +163,32 @@ vm_extra_enable_services() {
|
||||
}
|
||||
|
||||
vm_extra_install_packages() {
|
||||
if [ -n "${WITHOUT_QEMU}" ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [ -z "${VM_EXTRA_PACKAGES}" ]; then
|
||||
return 0
|
||||
fi
|
||||
chroot ${DESTDIR} ${EMULATOR} env ASSUME_ALWAYS_YES=yes \
|
||||
/usr/sbin/pkg bootstrap -y
|
||||
for p in ${VM_EXTRA_PACKAGES}; do
|
||||
if [ -n "${NO_ROOT}" ]; then
|
||||
for pkg in ${VM_EXTRA_PACKAGES}; do
|
||||
INSTALL_AS_USER=yes \
|
||||
${PKG_CMD} \
|
||||
-o METALOG=${DESTDIR}/METALOG.pkg \
|
||||
-o REPOS_DIR=${PKG_REPOS_DIR} \
|
||||
-o PKG_DBDIR=${DESTDIR}/var/db/pkg \
|
||||
-r ${DESTDIR} \
|
||||
install -y -r ${PKG_REPO_NAME} $pkg
|
||||
done
|
||||
metalog_add_data ./var/db/pkg/local.sqlite
|
||||
else
|
||||
if [ -n "${WITHOUT_QEMU}" ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
chroot ${DESTDIR} ${EMULATOR} env ASSUME_ALWAYS_YES=yes \
|
||||
/usr/sbin/pkg install -y ${p}
|
||||
done
|
||||
/usr/sbin/pkg bootstrap -y
|
||||
for p in ${VM_EXTRA_PACKAGES}; do
|
||||
chroot ${DESTDIR} ${EMULATOR} env ASSUME_ALWAYS_YES=yes \
|
||||
/usr/sbin/pkg install -y ${p}
|
||||
done
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
@@ -219,6 +232,10 @@ vm_extra_pkg_rmcache() {
|
||||
buildfs() {
|
||||
local md tmppool
|
||||
|
||||
if [ -f ${DESTDIR}/METALOG.pkg ]; then
|
||||
cat ${DESTDIR}/METALOG.pkg >> ${DESTDIR}/METALOG
|
||||
fi
|
||||
|
||||
case "${VMFS}" in
|
||||
ufs)
|
||||
cd ${DESTDIR} && ${MAKEFS} ${MAKEFSARGS} -o label=rootfs -o version=2 -o softupdates=1 \
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.Dd May 20, 2025
|
||||
.Dd September 11, 2025
|
||||
.Dt RELEASE 7
|
||||
.Os
|
||||
.Sh NAME
|
||||
@@ -286,6 +286,19 @@ is expected to exist by alternative means.
|
||||
Include base system packages for use with
|
||||
.Xr pkg 8
|
||||
on the install media, instead of legacy tarball distribution sets.
|
||||
.It Va PKG_CMD
|
||||
A path to the
|
||||
.Xr pkg 8
|
||||
executable to use when installing packages in release images as a non-root user.
|
||||
.It Va PKG_REPOS_DIR
|
||||
An optional path to a directory containing
|
||||
.Xr pkg 8
|
||||
repository configuration files.
|
||||
These configuration files will be used when installing packages in release
|
||||
images as a non-root user.
|
||||
.It Va PKG_REPO_NAME
|
||||
The name of the repository configuration to use when installing packages in
|
||||
release images as a non-root user.
|
||||
.El
|
||||
.Sh EMBEDDED BUILDS
|
||||
The following
|
||||
|
||||
Reference in New Issue
Block a user