# HG changeset patch # User Franz Glasner # Date 1718346635 -7200 # Node ID c8abd9d7aac752c8153506935daf78eefd4385da # Parent 45d95fee080403f0e1fd8d7bcd857891f4e86e61# Parent f1e00e5b2f2dd6757f3e3caf5b50091833886b9d MERGE: rc.d/bhyve from origin into fbhyve diff -r f1e00e5b2f2d -r c8abd9d7aac7 .hgignore --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.hgignore Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,6 @@ +syntax: regexp + +^work/ +^docs/_build/ +^docs/_venv.*/ +^_venv.*/ diff -r f1e00e5b2f2d -r c8abd9d7aac7 .hgsigs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.hgsigs Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,29 @@ +3c2277cd59064674727d562557f9dd3d766b769b 0 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 diff -r f1e00e5b2f2d -r c8abd9d7aac7 .hgtags --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.hgtags Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,34 @@ +eda93dcde2e9cff7b999614ac5ea000168d4be37 v0.1 +17b6ee513928cf00d63c6956059bf9def5c45e1e v0.2 +c4ea6a7f68484bcb8a94eec0dd81fa7f6b87ce4b v0.2.1 +0faf9da3718673483cb08ed7dffe3ab6e3c314cf v0.3 +719f8042990a30f20ec99dd2ffe95b1494b16d0a v0.4 +18097b849df368ee511675536b641f26f3d9c4ae v0.5 +edd49e4887dd1db594645fe2661cb515d3863913 v0.6 +78a0f6c19da3c79c7b2bac3911e3c2e0321655a6 v0.7 +8f91de3c121b5db6865c0c381591e7125812e2b3 v0.8 +d6e5c90f50de8b1c553f602b38ba4a807cb5a8bc v0.9 +00a17d4b6dfeff25c3e74501efbeab71274b29a7 v0.10 +41fe82b4a5b096f09fa21572ec562c16428072b8 v0.11 +80b739e9d01f58ce2de8e32ea64e4b978f252a99 v0.12 +daca573155ac1511be07894ddf9fcc78a209eb79 v0.13 +1696158a0628276be0a116467d9ba1c6b836629d v0.13.1 +b729fa681eb56b2e6bbcd5097f2c4083ca52b7a0 v0.14 +0ad969bd3c19b5b895c9d3dd31740d4c869f6a44 v0.15 +acb31b51a897c072d7b62e6da0caa8369e0a3e60 v0.16 +c7a6537995cf9811544047d790c361e2b9526c8f v0.16.1 +16feee945857a8a3ff52222bfd8b9316854512d8 v0.17 +9163fc9c7597585b85c4482ac119dd333a9bb327 v0.18 +a0186e0b980b7ca9c22f18968d1fd478ac2f4ecd v0.18.1 +ccf4c765311223a552ddbb8cef099b6b0efc5646 v0.18.2 +61c6479221fcb8888879e6a8b9805507d706431d v0.19 +88991b4731c95653fb9345da14b6e096983decbe v0.19.1 +dc47c5a49a5c1b6b4c57bce92631fa716fc2cdd0 v0.20 +da77f8d84d711459a392f7a7a602052603c7ed9f v0.21 +73bc78d8cb3f93fd808ee18f2f2605eaa7dd30fe v0.21.1 +d0ee2d9b85137a47b91ce50de14928d5ad4d3819 v0.22 +06fbd3c0f566c2b88305af2a7a11b86270630c24 v0.23 +def510fe4e31ce890ccd04bbf6c083246087de45 v0.24 +baa039348277a49e2858e5ecfda23960050135b9 v0.24.1 +e131280d4b095921cffb20f3ab35d81a8b7a1a19 v0.24.2 +4da3377f4139c17e4ea6e759127adea593dc5913 v0.25 diff -r f1e00e5b2f2d -r c8abd9d7aac7 Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Makefile Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,117 @@ +# Created by: Franz Glasner + +PORTNAME= local-bsdtools +PORTVERSION= 0.25 +CATEGORIES= sysutils +MASTER_SITES= # none +DISTFILES= # none + +MAINTAINER= freebsd-dev@dom66.de +COMMENT= Collection of private system management tools + +LICENSE= BSD3CLAUSE + +EXTRACT_DEPENDS= hg:devel/mercurial +RUN_DEPENDS= pkg:ports-mgmt/pkg + +NO_ARCH= yes +WRKSRC= ${WRKDIR}/local-bsdtools + +OPTIONS_DEFINE= DOCS +OPTIONS_SUB= yes + +DOCS_BUILD_DEPENDS= sphinx-build:textproc/py-sphinx +DOCS_VARS_OFF= NO_BUILD=yes + +USE_RC_SUBR= fbhyve fwireguard + +SUB_LIST= SIMPLEVERSIONTAG="${SIMPLEVERSIONTAG}" + +.include + +SRC= ${.CURDIR} + +MANPAGES5= ${:!${LS} -1 "${.CURDIR}/docs/man/man5"!} +MANPAGES8= ${:!${LS} -1 "${.CURDIR}/docs/man/man8"!} + +HGCANONICALPATH?= default +HGREVISION= ${:!hg id -R "${SRC}" -q!} +HGDATE= ${:!hg log -R "${SRC}" -r "${HGREVISION:S/+//}" --template '{date|isodatesec}'!} +HGAUTHOR= ${:!hg log -R "${SRC}" -r "${HGREVISION:S/+//}" --template '{author|person}' | ${TR} ' ' '+'!} +HGPATH= ${:!hg --config ui.paginate=never path -R "${SRC}" ${HGCANONICALPATH} || echo "file://\$$\(hg root)"!} +HGPHASE= ${:!hg phase!:[2]} +SIMPLEVERSIONSTR= v${PKGVERSION} (rv:${HGREVISION}) +SIMPLEVERSIONTAG= ${PKGORIGIN} v${PKGVERSION} (rv:${HGREVISION}) +VERSIONTAG= ${PKGORIGIN} v${PKGVERSION} (rv:${HGREVISION} with repo at ${HGPATH}) + +do-extract: + ${MKDIR} ${WRKSRC}/bin + ${MKDIR} ${WRKSRC}/sbin + ${CP} Makefile ${WRKSRC}/Makefile +.for _rp in sbin/check-ports sbin/fjail sbin/ftjail sbin/fzfs sbin/fpkg sbin/bsmtp2dma + ${CP} -v ${SRC}/${_rp} ${WRKSRC}/${_rp} + ${SED} -i "" -e "s|@@VERSION@@|${PORTVERSION}|" ${WRKSRC}/${_rp} + ${SED} -i "" -e "s|@@ETCDIR@@|${ETCDIR}|" ${WRKSRC}/${_rp} + ${SED} -i "" -e "s|@@VERSIONTAG@@|${VERSIONTAG}|" ${WRKSRC}/${_rp} + ${SED} -i "" -e "s|@@SIMPLEVERSIONTAG@@|${SIMPLEVERSIONTAG}|" ${WRKSRC}/${_rp} + ${SED} -i "" -e "s|@@SIMPLEVERSIONSTR@@|${SIMPLEVERSIONSTR}|" ${WRKSRC}/${_rp} +.endfor + ${MKDIR} ${WRKSRC}/etc/periodic/daily +.for _ef in etc/package-mapping.conf.sample etc/pkgtools.conf.sample etc/bsmtp2dma.conf.sample etc/periodic/daily/800.local-ipv6-refresh etc/periodic/daily/750.local-trim-zfs etc/periodic/daily/720.local-triggered-action + ${CP} -v ${SRC}/${_ef} ${WRKSRC}/${_ef} + ${SED} -i "" -e "s|@@SIMPLEVERSIONTAG@@|${SIMPLEVERSIONTAG}|" ${WRKSRC}/${_ef} +.endfor + ${MKDIR} ${WRKSRC}/share/${PORTNAME} +.for _df in share/local-bsdtools/common.subr + ${CP} -v ${SRC}/${_df} ${WRKSRC}/${_df} + ${SED} -i "" -e "s|@@SIMPLEVERSIONTAG@@|${SIMPLEVERSIONTAG}|" ${WRKSRC}/${_df} +.endfor + ${MKDIR} ${WRKSRC}/share/examples/${PORTNAME} +.for _sf in share/examples/local-bsdtools/freebsd-update-ftjail-template.sh share/examples/local-bsdtools/freebsd-update-ftjail.sh + ${CP} -v ${SRC}/${_sf} ${WRKSRC}/${_sf} +.endfor + +post-extract-DOCS-on: + ${MKDIR} ${WRKSRC}/docs + (${TAR} -C ${.CURDIR}/docs -c --exclude ./_build -f - . | ${TAR} -C ${WRKSRC}/docs -x -f - ) +.for _mp in man/man8/local-bsdtools.rst + ${SED} -i "" -e "s|@@SIMPLEVERSIONTAG@@|${SIMPLEVERSIONTAG}|" ${WRKSRC}/docs/${_mp} + ${SED} -i "" -e "s|\\\$$HGid\\\$$|\$$HGid: ${HGPATH}/docs/${_mp} ${HGREVISION} ${HGDATE} ${HGAUTHOR} ${HGPHASE} \$$|" ${WRKSRC}/docs/${_mp} +.endfor + +.if ${PORT_OPTIONS:MDOCS} +do-build: + (cd ${WRKSRC}/docs && sphinx-build -M man . _build) + (cd ${WRKSRC}/docs && sphinx-build -M html . _build) +.endif + +do-install: +.for _rp in sbin/check-ports sbin/fjail sbin/ftjail sbin/fzfs sbin/fpkg sbin/bsmtp2dma + ${INSTALL_SCRIPT} ${WRKSRC}/${_rp} ${STAGEDIR}${PREFIX}/${_rp} +.endfor + ${MKDIR} ${STAGEDIR}${ETCDIR} +.for _ef in package-mapping.conf.sample pkgtools.conf.sample bsmtp2dma.conf.sample + ${INSTALL_DATA} ${WRKSRC}/etc/${_ef} ${STAGEDIR}${ETCDIR}/${_ef} +.endfor + ${MKDIR} ${STAGEDIR}${PREFIX}/etc/periodic/daily +.for _ps in 800.local-ipv6-refresh 750.local-trim-zfs 720.local-triggered-action + ${INSTALL_SCRIPT} ${WRKSRC}/etc/periodic/daily/${_ps} ${STAGEDIR}${PREFIX}/etc/periodic/daily +.endfor + ${MKDIR} ${STAGEDIR}${DATADIR} +.for _df in common.subr + ${INSTALL_DATA} ${WRKSRC}/share/${PORTNAME}/${_df} ${STAGEDIR}${DATADIR} +.endfor + ${MKDIR} ${STAGEDIR}${EXAMPLESDIR} +.for _exf in freebsd-update-ftjail-template.sh freebsd-update-ftjail.sh + ${INSTALL_DATA} ${WRKSRC}/share/examples/${PORTNAME}/${_exf} ${STAGEDIR}${EXAMPLESDIR} +.endfor + +post-install-DOCS-on: +.for _mp in ${MANPAGES5:R} + ${INSTALL_MAN} ${WRKSRC}/docs/_build/man/${_mp}.5 ${STAGEDIR}${PREFIX}/share/man/man5 +.endfor +.for _mp in ${MANPAGES8:R} + ${INSTALL_MAN} ${WRKSRC}/docs/_build/man/${_mp}.8 ${STAGEDIR}${PREFIX}/share/man/man8 +.endfor + +.include diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/Makefile Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/_static/_dummy diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/_templates/_dummy diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/_test_create_thin_jail.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/_test_create_thin_jail.sh Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,27 @@ +#!/bin/sh + +# How to create the basic template datasets for thin jails + +_symlink="-P" + +FTJAIL="/home/fag/work/ports/sysutils/local-bsdtools/sbin/ftjail" + +"$FTJAIL" datasets-tmpl $_symlink zpool/var/tmp/jails/base-ro zpool/var/tmp/jails/skel-rw test1 + +"$FTJAIL" mount-tmpl $_symlink zpool/var/tmp/jails/base-ro/test1 zpool/var/tmp/jails/skel-rw/test1 /var/tmp/T1 + +zfs list -r -o name,canmount,atime,sync,exec,setuid,compression,mountpoint zpool/var/tmp/jails + +mount + +"$FTJAIL" populate-tmpl $_symlink /var/tmp/T1 /root/pkg/base-12.3.txz + +if [ "$_symlink" = "-L" ]; then + "$FTJAIL" interlink-tmpl /var/tmp/T1 +fi + +"$FTJAIL" snapshot-tmpl zpool/var/tmp/jails/base-ro/test1 zpool/var/tmp/jails/skel-rw/test1 12.3-RELEASE + +# Create the jail root filesystem by cloning the base RO in read-only mode +# zfs clone -o readonly=on -o mountpoint=/here/are/my/jails/the-jail -o canmount=noauto|on zpool/var/tmp/jails/base-ro/test1@12.3-RELEASE zpool/var/tmp/jails/the-jail + diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/_test_destroy_thin_jail.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/_test_destroy_thin_jail.sh Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,10 @@ +#!/bin/sh + +FTJAIL="/home/fag/work/ports/sysutils/local-bsdtools/sbin/ftjail" + +"$FTJAIL" umount-tmpl zpool/var/tmp/jails/base-ro/test1 zpool/var/tmp/jails/skel-rw/test1 + +zfs destroy -rv zpool/var/tmp/jails/skel-rw/test1 +zfs destroy -rv zpool/var/tmp/jails/base-ro/test1 + +zfs list -r -o name,canmount,atime,sync,exec,setuid,compression,mountpoint zpool/var/tmp/jails diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/conf.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/conf.py Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,115 @@ +# Configuration file for the Sphinx documentation builder. +# +# This file only contains a selection of the most common options. For a full +# list see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +import os +import re +# import sys +# sys.path.insert(0, os.path.abspath('.')) + + +# -- Project information ----------------------------------------------------- + +project = 'local-bsdtools' +copyright = '2017-2024, Franz Glasner' +author = 'Franz Glasner' + +# The full version, including alpha/beta/rc tags +with open(os.path.join(os.path.dirname(__file__), + "..", + "Makefile"), "rb") as f: + release = re.search(b"^PORTVERSION\s*=\s*(\S+)", + f.read(), + re.MULTILINE).group(1).decode("ascii") + + +# -- General configuration --------------------------------------------------- + +master_doc = "index" + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'haiku' + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +html_show_sourcelink = False + +# For the Haiku title +html_short_title = "%s %s" % (project, release) + + +# -- Options for manual page output ------------------------------------------ + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + ("man/man5/bsmtp2dma.conf", "bsmtp2dma.conf", 'Configuration of bsmtp2dma', [author], 5), + ("man/man5/package-mapping.conf", "package-mapping.conf", 'Configuration of check-ports', [author], 5), + ("man/man5/pkgtools.conf", "pkgtools.conf", 'Configuration for pkgtools and check-ports', [author], 5), + ("man/man5/local-bsdtools-periodic", "local-bsdtools-periodic", 'Configuration of periodic scripts installed by local-bsdtools v%s' % release, [author], 5), + ("man/man8/local-bsdtools", "local-bsdtools", 'FreeBSD administration helper tools v%s' % release, [author], 8), + ("man/man8/bsmtp2dma", "bsmtp2dma", "Bacula compatible mail submission program", [author], 8), + ("man/man8/check-ports", "check-ports", "Report the version status of installed packages and check for them also in repositories", [author], 8), + ("man/man8/fjail", "fjail", "Management of jails", [author], 8), + ("man/man8/fjail-configure", "fjail-configure", "Basic configuration of jails", [author], 8), + #("man/man8/fjail-copy", "fjail-copy", "Recursively copy ZFS datasets including all properties", [author], 8), + #("man/man8/fjail-datasets", "fjail-datasets", "Create a new tree of ZFS datasets that will encompass a jail", [author], 8), + ("man/man8/fjail-freebsd-update", "fjail-freebsd-update", "A checked \"freebsd-update\"", [author], 8), + ("man/man8/fjail-hostid", "fjail-hostid", "Generate a proposal for a new BSD Host UUID and ID", [author], 8), + #("man/man8/fjail-mount", "fjail-mount", "Recursively mount a ZFS dataset and its children", [author], 8), + #("man/man8/fjail-populate", "fjail-populate", "Populate a directory with content from a FreeBSD base.txz", [author], 8), + #("man/man8/fjail-privs", "fjail-privs", "Adjust some privileges within a mounted jail", [author], 8), + #("man/man8/fjail-umount", "fjail-umount", "Recursively unmount a ZFS datasets and its children", [author], 8), + ("man/man8/fpkg", "fpkg", "A frontend for some pkg(8) commands that also operate on running jails", [author], 8), + ("man/man8/ftjail", "ftjail", "Management of Thin Jails", [author], 8), + ("man/man8/ftjail-build-etcupdate-current-tmpl", "ftjail-build-etcupdate-current-tmpl", "Build a \"current\" tree suitable for the default and extract mode of \"etcupdate\"", [author], 8), + ("man/man8/ftjail-copy-skel", "ftjail-copy-skel", "Recursively copy skeleton contents from the template tree into a jail-specific ZFS datasets", [author], 8), + ("man/man8/ftjail-datasets-tmpl", "ftjail-datasets-tmpl", "Create ZFS datasets for new Thin Jails using base and skeleton", [author], 8), + ("man/man8/ftjail-freebsd-update", "ftjail-freebsd-update", "A freebsd-update implementation for a Thin Jail", [author], 8), + ("man/man8/ftjail-interlink-tmpl", "ftjail-interlink-tmpl", "Create proper symlinks for \"skeleton\" style Thin Jails", [author], 8), + ("man/man8/ftjail-mount-tmpl", "ftjail-mount-tmpl", "Canonically mount the RO base and the RW skeleton of a Thin Jail", [author], 8), +("man/man8/ftjail-populate-tmpl", "ftjail-populate-tmpl", "Populate a prepared directory structure with the contents of a FreeBSD base system", [author], 8), + ("man/man8/ftjail-snapshot-tmpl", "ftjail-snapshot-tmpl", "Recursively create ZFS snapshots of the RO base datasets and the RW skeleton datasets", [author], 8), + ("man/man8/ftjail-umount-tmpl", "ftjail-umount-tmpl", "Unmount mounted Thin Jail template datasets", [author], 8), + ("man/man8/fwireguard", "fwireguard", "Manage Wireguard interfaces", [author], 8), + ("man/man8/fzfs", "fzfs", "A ZFS management helper tool", [author], 8), + ("man/man8/fzfs-copy-tree", "fzfs-copy-tree", "Copy a ZFS dataset tree based on an existing tree", [author], 8), + ("man/man8/fzfs-create-tree", "fzfs-create-tree", "Create a ZFS dataset tree structure based on an existing tree", [author], 8), + ("man/man8/fzfs-mount", "fzfs-mount", "Recursively mount a ZFS dataset and its children", [author], 8), + ("man/man8/fzfs-umount", "fzfs-umount", "Recursively unmount a ZFS datasets and its children", [author], 8), +] + + +# -- Link to manual pages ---------------------------------------------------- + +manpages_url = "https://www.freebsd.org/cgi/man.cgi?query={page}&sektion={section}" diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/index.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/index.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,12 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +.. local-bsdtools documentation master file, created by + sphinx-quickstart on Sat Sep 17 21:32:09 2022. + + +Dokumentation +============= + +.. toctree:: + + man/index diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/make.bat --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/make.bat Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=. +set BUILDDIR=_build + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.https://www.sphinx-doc.org/ + exit /b 1 +) + +if "%1" == "" goto help + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/index.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/index.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,45 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +Collection of Manual Pages +========================== + +System Administration Tools +--------------------------- + +.. toctree:: + + man8/local-bsdtools + man8/bsmtp2dma + man8/check-ports + man8/fjail + man8/fjail-configure + man8/fjail-freebsd-update + man8/fjail-hostid + man8/fpkg + man8/fwireguard + man8/ftjail + man8/ftjail-build-etcupdate-current-tmpl + man8/ftjail-copy-skel + man8/ftjail-datasets-tmpl + man8/ftjail-freebsd-update + man8/ftjail-interlink-tmpl + man8/ftjail-mount-tmpl + man8/ftjail-populate-tmpl + man8/ftjail-snapshot-tmpl + man8/ftjail-umount-tmpl + man8/fzfs + man8/fzfs-copy-tree + man8/fzfs-create-tree + man8/fzfs-mount + man8/fzfs-umount + + +Configuration +------------- + +.. toctree:: + + man5/bsmtp2dma.conf + man5/local-bsdtools-periodic + man5/package-mapping.conf + man5/pkgtools.conf diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/man5/bsmtp2dma.conf.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/man5/bsmtp2dma.conf.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,25 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +bsmtp2dma.conf +============== + +Description +----------- + +Used by :manpage:`bsmtp2dma(8)`. + +It is a shell style configuration file which is sourced in at program start. + +The following configuration settings are currently supported: + + ``MAILER`` + + The absolute path to the underlying mail command. + + The default is :command:`/usr/sbin/sendmail`. + + +See Also +-------- + +:manpage:`bsmtp2dma(8)` diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/man5/local-bsdtools-periodic.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/man5/local-bsdtools-periodic.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,167 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + + +local-bsdtools-periodic +======================= + +Synopsis +-------- + +**daily/720.local-triggered-action** + +**daily/750.local-trim-zfs** + +**daily/800.local-ipv6-refresh** + + +Description +----------- + +The package contains a set of periodic scripts. + +All scripts are disabled by default. + +As all :manpage:`periodic(8)` scripts given scripts can be configured +in :manpage:`periodic.conf(5)`. + + +Daily Scripts +~~~~~~~~~~~~~ + +**720.local-triggered-action** + + Take actions triggered by the existence of given files. + + **daily_local_triggered_action_enable** (bool) + Set it to ``YES`` to enable this script. + + **daily_local_triggered_action_files** (str) + The readability of any of the given files triggers the action. + + **daily_local_triggered_action_condition** (str) + A condition to check before executing the action. + + May be a Shell expression. + + The list of existing trigger files -- which is a subset of + `daily_local_triggered_action_files` -- is available in the Shell + variable `TRIGGER_FILES`. + + **daily_local_triggered_action_action** (str) + The action to execute to. + + May be a Shell expression. + + The list of existing trigger files -- which is a subset of + `daily_local_triggered_action_files` -- is available in the Shell + variable `TRIGGER_FILES`. + + **daily_local_triggered_action_files_remove** (bool) + By default all existing trigger files given in + `daily_local_triggered_action_files` are deleted when the action + has been executed successfully. + + Set to ``NO`` to disable this behaviour. + + **daily_local_triggered_action_profiles** (str) + If a non-empty value is given the script executes in profile-mode. + + If profiles are defined this script is re-executed once for for + every profile with the profile as parameter. + + No other global option as `daily_local_triggered_action_enable` + is used. + + Instead profile level configurations which are named after the + profile are used. The configuration variables have the form + `daily_local_triggered_action_${profile}_{files,condition,action,files_remove}`. + + For the sake of variable evaluation some special characters in a given + profile are mapped to the underscore ``_``. + +**750.local-trim-zfs** + + If enabled it automatically trims ZFS pools at regular invervals by + calling :command:`zpool trim`. + + **daily_local_trim_zfs_enable** (bool) + Set to ``YES`` to enable this script. + + **daily_local_trim_zfs_pool** (str) + The list of ZFS pool to trim to. + + If empty then all known pool are trimmed. + + **daliy_local_trim_zfs_default_threshold** (int) + The number of days between trims. + + Default: 35 + +**800.local-ipv6-refresh** + + On some networks there are issuses of loosing IPv6 connectivity + after some uptime with BSD kernels. + + This scripts helps to keep connectivity. It updates the IPv6 + neighbour cache to ensure proper IPv6 connectivity by calling + :command:`traceroute6` at regular intervals. + + **daily_local_ipv6_refresh_enable** (bool) + Set to `YES` to enable this script. + + **daily_local_ipv6_refresh_flags** (str) + A list of flags given to :manpage:`traceroute(8)`. + + Default: -n -w2 -q2 -m1 -I + + **daily_local_ipv6_refresh_target** (str) + The target of :manpage:`traceroute6(8)`. + + If empty then `ipv6_defaultrouter` as given by :manpage:`sysrc(8)` + is used -- if available. + + +Examples +-------- + +Conditions and actions can be complex Shell expressions. They are evauluated +with `eval` in the Shell:: + + daily_local_triggered_action_condition="service nginx onestatus || service apache2 onestatus" + + daily_local_triggered_action_action="{ service nginx onereload && service apache2 onereload ; } || true" + +Profiles:: + + daily_local_triggered_action_enable=YES + + daily_local_triggered_action_profiles="p1 p2-1" + + # If the file exists this is executed daily because it is not removed + daily_local_triggered_action_p1_files="trigger-for-p1.txt" + daily_local_triggered_action_p1_condition="true" + daily_local_triggered_action_p1_action="cat \${TRIGGER_FILES} | mail -s ALERT root" + daily_local_triggered_action_p1_remove_files="NO" + + daily_local_triggered_action_p2_1_files="trigger-for-p2.txt" + daily_local_triggered_action_p2_1_condition="true" + daily_local_triggered_action_p2_1_action="echo 'something happened' | mail -s ALERT root" + +Note that the use of `TRIGGER_FILES` must be quoted in condition and +action definitions because they are executed indirectly in the context +of the Shell's `eval`. + + +See Also +-------- + +:manpage:`local-bsdtools(8)`, :manpage:`periodic(8)`, +:manpage:`periodic.conf(5)`, :manpage:`rc.conf(5)`, :manpage:`sysrc(8)`, +:manpage:`zpool-trim(8)`, :manpage:`traceroute(8)` + + +Bugs +---- + +For a given profile "p1" there is no evaluation of something like +"daily_local_triggered_action_p1_enable". diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/man5/package-mapping.conf.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/man5/package-mapping.conf.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,43 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +package-mapping.conf +==================== + +Description +----------- + +Used by :manpage:`check-ports(8)`. + +This is a textfile where every line contains two words -- each being +a package names:: + + package-name mapped-package-name + +When :command:`check-ports` determines the package status for +`mapped-package-name` then the repositories are checked with regard to +`package-name` also. + +This is useful when the update status of renamed (private) forks should be +checked against the original parent package also. + + +Examples +-------- + +Assume that package ``pack-orig`` is forked into a local package with +a different name ``my-forked-pack``. To let the :command:`check-ports` tool +to take this into account use:: + + pack-orig my-forked-pack + + +See Also +-------- + +:manpage:`check-ports(8)` + + +Bugs +---- + +Comments in the file are currently not allowed. diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/man5/pkgtools.conf.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/man5/pkgtools.conf.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,15 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +pkgtools.conf +============= + +Description +----------- + +Sourced in by :manpage:`fpkg(8)` and :manpage:`check-ports(8)`. + + +See Also +-------- + +:manpage:`check-ports(8)`, :manpage:`fpkg(8)` diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/man8/bsmtp2dma.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/man8/bsmtp2dma.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,102 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +bsmtp2dma +========= + +Synopsis +-------- + +**bsmtp2dma** **-V** + +**bsmtp2dma** [**-8**] [**-c** `address`] [**-d** `n`] [**-f** `address`] [**-h** `mailhost:port`] [**-l** `number`] [**-r** `address`] [**-s** `subject`] `recipient` ... + + +Description +----------- + +A Bacula compatible mail submission programm and an alternative to Bacula's +:command:`bsmtp` SMTP client. + +Bacula's :command:`bsmtp` needs an underlying mailer that listens on a +TCP port. :command:`bsmtp2dma` can be used if the underlying mailer does `not` +listen to an SMTP port (e.g. :manpage:`dma(8)`, :command:`ssmtp` et al.). + +The underlying mailer should be compatible to :command:`sendmail`. + + +Options +------- + +.. program:: bsmtp2dma + +.. option:: -V + + Show the program version and usage and exit. + +.. option:: -8 + + Does nothing. Act as a compatibility option for :command:`bsmtp`. + +.. option:: -c address + + Set the ``CC:`` header to `address` + +.. option:: -d n + + Does nothing. Act as a compatibility option for :command:`bsmtp`. + +.. option:: -f address + + Set the ``FROM:`` header to `address`. + + If not given it it set to the sender's address. + +.. option:: -h mailhost:port + + Does nothing. Act as a compatibility option for :command:`bsmtp`. + +.. option:: -l number + + Does nothing. Act as a compatibility option for :command:`bsmtp`. + +.. option:: -r address + + Set the ``Reply-To:`` header to `address`. + +.. option:: -s subject + + Set the "Subject:" header to `subject`. + + +Implementation Notes +-------------------- + +The body of the email message is read from standard input. Message is +terminated by sending the ``EOF`` character (:kbd:`Control-d` on many +systems) on the start of a new line, much like many :command:`mail` +commands. + +The message is collected into a temporary file and send to all given +recipients by using the configured underlying mail command. + + +Files +----- + +:command:`bsmtp2dma` reads a configuration file -- if available -- from +:file:`/usr/local/etc/local-bsdtools/bsmtp2dma.conf`. + +It is a shell style configuration file which is sourced in at program start. + +The following configuration settings are currently supported: + + ``MAILER`` + The absolute path to the underlying mail command. + + The default is :command:`/usr/sbin/sendmail`. + + +See Also +-------- + +:manpage:`bsmtp2dma.conf(5)` diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/man8/check-ports.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/man8/check-ports.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,234 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +check-ports +=========== + +Synopsis +-------- + +**check-ports -hV** + +**check-ports** **-n** `package` ... + + +Description +----------- + +Report and check the version status of installed packages and compare +them to version in remote repositories and the local ports index. + +By default (without any option) the status of every package is +printed with respect to repositories that have the package and have +differing versions. This includes the ports INDEX. + +.. program:: check-ports + +.. option:: -h + + Print a short usage message to stdout and exit. + +.. option:: -V + + Print the program name and version number to stdout and exit. + +.. option:: -A + + Print for every package the status of all repositories. + +.. option:: -a + + Print the data of all repos that have the package. + +.. option:: -n + + Print the status of given packages in `package` in all details. + No other options are respected. + +.. option:: -s + + Print the status of all packages that need some attention; + version differences with regard to the ports INDEX only are to be ignored. + +.. option:: -v + + Print the title and repository of every installed package always. + + +Environment +----------- + +.. envvar:: INDEXDIR + + If set, the directory to search for `INDEXFILE`. If unset, + :envvar:`PORTSDIR` will be used instead. + +.. envvar:: INDEXFILE + + The filename of the ports index, search for in :envvar:`INDEXDIR` or + :envvar:`PORTSDIR`. + Default: `INDEX-N` where `N` is the OS major version number. + +.. envvar:: PORTSDIR + + Specifies the location to the Ports directory. + Default: :file:`/usr/ports`. + + +Files +----- + +:file:`/usr/local/etc/local-bsdtools/package-mapping.conf` + +:file:`/usr/local/etc/local-bsdtools/pkgtools.conf` + + +Examples +-------- + +Report the status of all installed packages with respect to all configured +repositories and the ports index (if available):: + + # check-ports -A + tdb 1.4.3,1 (FreeBSD) + INDEX : 1.4.7,1 < needs updating (index has 1.4.7,1) + FreeBSD : 1.4.7,1 < needs updating (remote has 1.4.7,1) + LocalBSDPorts : ? + SharedLocalRepo: ? + LocalRepo : ? + teckit 2.5.11 (FreeBSD) + INDEX : 2.5.11 = up-to-date with index + FreeBSD : 2.5.11 = up-to-date with remote + LocalBSDPorts : ? + SharedLocalRepo: ? + LocalRepo : ? + tevent 0.10.2_1 (FreeBSD) + INDEX : 0.13.0_1 < needs updating (index has 0.13.0_1) + FreeBSD : 0.13.0 < needs updating (remote has 0.13.0) + LocalBSDPorts : ? + SharedLocalRepo: ? + LocalRepo : ? + tex-basic-engines 20210325 (FreeBSD) + INDEX : 20210325 = up-to-date with index + FreeBSD : 20210325 = up-to-date with remote + LocalBSDPorts : ? + SharedLocalRepo: ? + LocalRepo : ? + # + +Report the status of all installed packages with respect to all configured +repositories that provide the package:: + + # check-ports -a + tdb 1.4.3,1 (FreeBSD) + INDEX : 1.4.7,1 < needs updating (index has 1.4.7,1) + FreeBSD : 1.4.7,1 < needs updating (remote has 1.4.7,1) + teckit 2.5.11 (FreeBSD) + INDEX : 2.5.11 = up-to-date with index + FreeBSD : 2.5.11 = up-to-date with remote + tevent 0.10.2_1 (FreeBSD) + INDEX : 0.13.0_1 < needs updating (index has 0.13.0_1) + FreeBSD : 0.13.0 < needs updating (remote has 0.13.0) + tex-basic-engines 20210325 (FreeBSD) + INDEX : 20210325 = up-to-date with index + FreeBSD : 20210325 = up-to-date with remote + # + +The standard output considers installed packages with versions that differ in any of +the configured repositories *including* a ports INDEX:: + + # check-ports + tdb 1.4.3,1 (FreeBSD) + INDEX : 1.4.7,1 < needs updating (index has 1.4.7,1) + FreeBSD : 1.4.7,1 < needs updating (remote has 1.4.7,1) + tevent 0.10.2_1 (FreeBSD) + INDEX : 0.13.0_1 < needs updating (index has 0.13.0_1) + FreeBSD : 0.13.0 < needs updating (remote has 0.13.0) + tex-xetex 0.99993_1 (FreeBSD) + INDEX : 0.99993_2 < needs updating (index has 0.99993_2) + FreeBSD : 0.99993_1 = up-to-date with remote + texlive-base 20210325_5 (FreeBSD) + INDEX : 20210325_10 < needs updating (index has 20210325_10) + FreeBSD : 20210325_8 < needs updating (remote has 20210325_8) + # + +The effect of an additional :option:`-v` on :command:`check-ports` is:: + + # check-ports -v + tdb 1.4.3,1 (FreeBSD) + INDEX : 1.4.7,1 < needs updating (index has 1.4.7,1) + FreeBSD : 1.4.7,1 < needs updating (remote has 1.4.7,1) + teckit 2.5.11 (FreeBSD) + tevent 0.10.2_1 (FreeBSD) + INDEX : 0.13.0_1 < needs updating (index has 0.13.0_1) + FreeBSD : 0.13.0 < needs updating (remote has 0.13.0) + tex-basic-engines 20210325 (FreeBSD) + tex-dvipdfmx 20210325 (FreeBSD) + tex-dvipsk 2021.1 (FreeBSD) + tex-formats 20210325_1 (FreeBSD) + tex-jadetex 3.13_4 (FreeBSD) + tex-kpathsea 6.3.3 (FreeBSD) + tex-libtexlua 5.3.6 (FreeBSD) + tex-libtexluajit 2.1.0 (FreeBSD) + tex-luatex 1.12.0 (FreeBSD) + tex-ptexenc 1.3.9 (FreeBSD) + tex-synctex 2.0.0_1 (FreeBSD) + tex-web2c 20210325 (FreeBSD) + tex-xdvik 22.87.06 (FreeBSD) + tex-xetex 0.99993_1 (FreeBSD) + INDEX : 0.99993_2 < needs updating (index has 0.99993_2) + FreeBSD : 0.99993_1 = up-to-date with remote + tex-xmltex 1.9_3 (FreeBSD) + texlive-base 20210325_5 (FreeBSD) + INDEX : 20210325_10 < needs updating (index has 20210325_10) + FreeBSD : 20210325_8 < needs updating (remote has 20210325_8) + # + +The :option:`-s` suppresses the output if only the version of a ports INDEX differs:: + + # check-ports -s + tdb 1.4.3,1 (FreeBSD) + INDEX : 1.4.7,1 < needs updating (index has 1.4.7,1) + FreeBSD : 1.4.7,1 < needs updating (remote has 1.4.7,1) + tevent 0.10.2_1 (FreeBSD) + INDEX : 0.13.0_1 < needs updating (index has 0.13.0_1) + FreeBSD : 0.13.0 < needs updating (remote has 0.13.0) + texlive-base 20210325_5 (FreeBSD) + INDEX : 20210325_10 < needs updating (index has 20210325_10) + FreeBSD : 20210325_8 < needs updating (remote has 20210325_8) + # + +The effect of an additional :option:`-v` on :command:`checkports -s` is:: + + # check-ports -sv + tdb 1.4.3,1 (FreeBSD) + INDEX : 1.4.7,1 < needs updating (index has 1.4.7,1) + FreeBSD : 1.4.7,1 < needs updating (remote has 1.4.7,1) + teckit 2.5.11 (FreeBSD) + tevent 0.10.2_1 (FreeBSD) + INDEX : 0.13.0_1 < needs updating (index has 0.13.0_1) + FreeBSD : 0.13.0 < needs updating (remote has 0.13.0) + tex-basic-engines 20210325 (FreeBSD) + tex-dvipdfmx 20210325 (FreeBSD) + tex-dvipsk 2021.1 (FreeBSD) + tex-formats 20210325_1 (FreeBSD) + tex-jadetex 3.13_4 (FreeBSD) + tex-kpathsea 6.3.3 (FreeBSD) + tex-libtexlua 5.3.6 (FreeBSD) + tex-libtexluajit 2.1.0 (FreeBSD) + tex-luatex 1.12.0 (FreeBSD) + tex-ptexenc 1.3.9 (FreeBSD) + tex-synctex 2.0.0_1 (FreeBSD) + tex-web2c 20210325 (FreeBSD) + tex-xdvik 22.87.06 (FreeBSD) + tex-xetex 0.99993_1 (FreeBSD) + tex-xmltex 1.9_3 (FreeBSD) + texlive-base 20210325_5 (FreeBSD) + INDEX : 20210325_10 < needs updating (index has 20210325_10) + FreeBSD : 20210325_8 < needs updating (remote has 20210325_8) + # + + +See Also +-------- + +:manpage:`fpkg(8)` diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/man8/fjail-configure.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/man8/fjail-configure.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,65 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +fjail-configure +=============== + +Synopsis +-------- + +**fjail configure** [**-d**] `mountpoint` + + +Description +----------- + +Configure some basic settings of a jail that is mounted at `mountpoint`. + +.. program:: fjail configure + +.. option:: -d + + Temporarily also mount a standard devfs filesystem at `mountpoint`/dev. + +The following configuration settings are applied: + + The "root" account within the jail is deactivated. + + In the jail's :file:`/etc/rc.conf`:: + + sendmail_enable="NONE" + clear_tmp_enable="YES" + clear_tmp_X="NO" + syslogd_flags="-ss" + bsdstats_enable="NO" + + The timezone is set to "Europe/Berlin" if not yet set. + + The :file:`/etc/resolv.conf` is copied from the host into the jail if + the target does not exist yet. + + :command:`/usr/bin/newaliases` is called within the jail. + + In the jail's :file:`/etc/periodic.conf.local`:: + + daily_ntpd_leapfile_enable="NO" + daily_status_zfs_zpool_list_enable="NO" + daily_status_disks_enable="NO" + daily_status_uptime_enable="NO" + +This command can be used for all sort of jails (normal, thin). + +A proposal for a hostid suitable for use within the jail is printed to +stdout also; this is done by calling :command:`fjail hostid`. + + +Implementation Notes +-------------------- + +A populated and working dev filesystem within the jail is needed to +work properly. This is checked for. + + +See Also +-------- + +:manpage:`fjail(8)`, :manpage:`ftjail(8)`, :manpage:`fjail-hostid(8)` diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/man8/fjail-freebsd-update.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/man8/fjail-freebsd-update.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,41 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +fjail-freebsd-update +==================== + +Synopsis +-------- + +**fjail freebsd-update** [**-c** `currently-running`] `directory` + + +Description +----------- + +A checked :manpage:`freebsd-update(8)` for a system located or mounted +at `directory`. A corresponding jail may or may not be running. + +.. program:: fjail freebsd-update + +.. option:: -c currently-running + + Do not assume that the system at `directory` is currently running + the host's FreeBSD version but the version given in + `currently-running`. + + This will also be checked by :manpage:`freebsd-version(1)` for + `directory`. + + +Environment +----------- + +All environment variables that affect :manpage:`freebsd-update` are +effective also. + + +See Also +-------- + +:manpage:`fjail(8)`, :manpage:`freebsd-update(8)`, +:manpage:`freebsd-version(1)` diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/man8/fjail-hostid.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/man8/fjail-hostid.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,35 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +fjail-hostid +============ + +Synopsis +-------- + +**fjail hostid** + + +Description +----------- + +Generate a proposal for a new BSD host UUID and ID and print it to stdout. + +The output is suitable for inclusion in a :file:`/etc/jail.conf`. + + +Examples +-------- + +:: + + # fjail hostid + Proposed hostuuid/hostid: + host.hostuuid = "868be13d-6fc0-11ed-827f-74d435fd3892"; + host.hostid = 582606249; + # + + +See Also +-------- + +:manpage:`fjail(8)`, :manpage:`ftjail(8)` diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/man8/fjail.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/man8/fjail.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,92 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +ftjail +====== + +Synopsis +-------- + +**fjail -hV** + +**fjail subcommand** + + +Description +----------- + +Management tool for Jails: creation of ZFS dataset hierarchies, mount, +population and configuration helpers. + +The following global options are implemented: + +.. program:: fjail + +.. option:: -h + + Print a short usage message to stdout and exit. + +.. option:: -V + + Print the program name and version number to stdout and exit. + + +Subcommands +----------- + +:manpage:`fjail-configure(8)` + + Do some basic configuration of an already populated and mounted + jail + +:manpage:`fjail-copy(8)` + + Recursively copy ZFS datasets including all properties + +:manpage:`fjail-datasets(8)` + + Create a new tree of ZFS datasets that will encompass a jail + +:manpage:`fjail-freebsd-update(8)` + + Do a :manpage:`freebsd-update(8)` with some additional + compatibility checks + +:manpage:`fjail-hostid(8)` + + Generate a proposal for a new BSD host UUID and ID + +:manpage:`fjail-mount(8)` + + Recursively mount a ZFS dataset and its children. + + It is just an alias for :command:`fzfs mount` + (see :manpage:`fzfs-mount(8)`). + +:manpage:`fjail-populate(8)` + + Populate a directory with content from a FreeBSD base.txz + +:manpage:`fjail-privs(8)` + + Adjust some privileges within a mounted jail + +:manpage:`fjail-umount(8)` + + Recursively unmount a ZFS datasets and its children. + + It is just an alias for :command:`fzfs umount` + (see :manpage:`fzfs-umount(8)`). + + +Implementation Notes +-------------------- + +Some commands require ZFS as filesystem. + +Some commands are suitable for Thin Jails also. + + +Environment +----------- + +All environment variables that affect :command:`zfs` are effective also. diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/man8/fpkg.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/man8/fpkg.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,136 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +fpkg +==== + +Synopsis +-------- + +**fpkg -hV** + +**fpkg subcommand** + + +Description +----------- + +A :manpage:`pkg(8)` frontend for common operations that also operates +in all running and compatible jails. + +A "compatible jail" is a jail that's output of +:command:`freebsd-version -u` is the same as the host's. + +The following global options are implemented: + +.. program:: fpkg + +.. option:: -h + + Print a short usage message to stdout and exit. + +.. option:: -V + + Print the program name and version number to stdout and exit. + + +Subcommands +----------- + +:manpage:`fpkg-audit(8)` + + Call :command:`pkg audit` on the local host and all running + visible and compatible jails. + +:manpage:`fpkg-check-fast-track(8)` + + Check packages installed from the LocalBSDPorts repository against + the repositories `FreeBSD` and `LocalBSDPorts` on the local host + and all visible and compatible jails + +:manpage:`fpkg-check-upgrade(8)` + + Call :command:`pkg upgrade -n` on the local host and all running + visible and compatible jails. + +:manpage:`fpkg-config(8)` + + Retrieve the value of a given :manpage:`pkg(8)` configuration + option on the local host and all running visible and + compatible jails (:command:`pkg config`). + +:manpage:`fpkg-update(8)` + + Call :command:`pkg update` on the local host and all running + visible and compatible jails. + +:manpage:`fpkg-upgrade(8)` + + Call :command:`pkg upgrade` on the local host and all running + visible and compatible jails. + +:manpage:`fpkg-uversion(8)` + + Call :command:`freebsd-version -u` on the local host and all + running visible and compatible jails. + +:manpage:`fpkg-vv(8)` + + Call :command:`pkg -vv` on the local host and all running visible + and compatible jails. + + +Environment +----------- + +.. envvar:: FPKG_AUDIT_FLAGS + + Additional flags given to :command:`pkg audit` (Default: ``-Fr``). + +.. envvar:: FPKG_UPDATE_FLAGS + + Additional flags given to :command:`pkg update` (Default: empty). + +.. envvar:: FPKG_UPGRADE_FLAGS + + Additional flags given to :command:`pkg upgrade` and + :command:`pkg upgrade -n` (Default: empty). + +.. envvar:: FPKG_SIGN + + Marker for the begin of an output group (local host or jail) + (Default: "===> "). + +.. envvar:: FPKG_SKIPSIGN + + Marker for the begin of a skipped output group (Default: "----> "). + +.. envvar:: FREEBSD_REPO + + The name of the (official) FreeBSD package repository (Default: + ``FreeBSD``). + +.. envvar:: LOCALBSDPORTS_REPO + + Repository with ports with default port OPTIONS (i.e. unchanged) + but with newer package versions as the "FreeBSD" repository. Some sort + of fast-track repository. + +All other environment variables that affect :manpage:`pkg(8)` are +effective also. + + +Files +----- + +If there is a :file:`/usr/local/etc/local-bsdtools/pkgtools.conf` then +this file is sourced in. All environment variables that are documented +in `Environment`_ can be set in this file also. + +This configuration file is a Bourne shell (:command:`/bin/sh`) +compatible file. + + +See Also +-------- + +:manpage:`check-ports(8)` diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/man8/ftjail-build-etcupdate-current-tmpl.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/man8/ftjail-build-etcupdate-current-tmpl.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,39 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +ftjail-build-etcupdate-current-tmpl +=================================== + +Synopsis +-------- + +**ftjail build-etcupdate-current-tmpl** `directory` `tarball` + + +Description +----------- + +Build a tarball in `tarball` of a "current" tree from the template +mounted at `directory`. + +This tarball can be used by the default and extract modes of +:command:`etcupdate`. Using a tarball can allow :command:`etcupdate` +to perform a merge without requiring a source tree that matches the +currently installed world. The tarball argument specifies the name of +the file to create. The file will be a :manpage:`tar(5)` file compressed with +:manpage:`bzip2(1)`. + +Within `directory` the default database locations are assumed. They are +:file:`{directory}/var/db/etcupdate/current`. + + +Environment +----------- + +All environment variables that affect :manpage:`tar(1)` are effective also. + + +See Also +-------- + +:manpage:`ftjail(8)`, :manpage:`etcupdate(8)`, +:manpage:`tar(1)`, :manpage:`tar(5)` diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/man8/ftjail-copy-skel.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/man8/ftjail-copy-skel.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,66 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +ftjail-copy-skel +================ + +Synopsis +-------- + +**ftjail copy-skel** [**-A**] [**-L**] [**-M** `mountpoint`] [**-P**] [**-u**] `source-dataset` `snapshot-name` `target-dataset` + + +Description +----------- + +Recursively copy the snapshot `snapshot-name` of the RW skeleton dataset +`source-dataset` into dataset `target-dataset`. + +Apply knowledge of the type and typical layout of the RW skeleton +(e.g. handle the intermediate dataset of :file:`/usr` properly). + + +Options +------- + +.. program:: ftjail copy-skel + +.. option:: -A + + Set the ZFS property `canmount=noauto` for all datasets in the + target dataset. + +.. option:: -D + + Just copy the dataset tree including properties but no filesystem + data. This option is incompatible to option :option:`-L`. + +.. option:: -L + + Copy dataset properties optimized for employing a :file:`skeleton` + subdirectory. + +.. option:: -M mountpoint + + Set the `mountpoint` property for the TARGET-DS to `mountpoint`. + All children will be set to inherit it. + +.. option:: -P + + Copy dataset properties optimized for direct mounts of skeleton + children over an already mounted base. + +.. option:: -u + + Do not mount the target dataset `target-dataset` automatically. + + +Environment +----------- + +All environment variables that affect :command:`zfs` are effective also. + + +See Also +-------- + +:manpage:`ftjail(8)` diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/man8/ftjail-datasets-tmpl.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/man8/ftjail-datasets-tmpl.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,53 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +ftjail-datasets-tmpl +==================== + +Synopsis +-------- + +**ftjail datasets-tmpl** [**-L**] `dataset-parent-base` `dataset-parent-skeleton` `name` + +**ftjail datasets-tmpl** [**-P**] `dataset-parent-base` `dataset-parent-skeleton` `name` + + +Description +----------- + +Create ZFS template datasets, i.e. the ro base and the rw skeleton to +be used within Thin Jails. + +The ZFS datasets `dataset-parent-base` and `dataset-parent-skeleton` +must exist already. + +A child with name `name` must not exist already for both given parent +datasets. + + +Options +------- + +.. program:: ftjail datasets-tmpl + +.. option:: -L + + Create dataset properties optimized for employing a + :file:`skeleton` subdirectory (i.e. Thin Jails using symbolic links + from a (read-only) root into the writeable parts of the system). + +.. option:: -P + + Create ZFS dataset properties optimized for direct mounts of skeleton + children over an already mounted base. + + +Environment +----------- + +All environment variables that affect :command:`zfs` are effective also. + + +See Also +-------- + +:manpage:`ftjail(8)`, :manpage:`ftjail-mount-tmpl(8)`, diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/man8/ftjail-freebsd-update.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/man8/ftjail-freebsd-update.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,60 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +ftjail-freebsd-update +===================== + +Synopsis +-------- + +**ftjail freebsd-update** [**-k**] [**-o** `old-origin`] `directory` `new-origin` [`etcupdate-tarball`] + + +Description +----------- + +A :manpage:`freebsd-update(8)` for a Thin Jail. + +Make the ZFS dataset mounted at `directory` a read-only clone of `new-origin`. + +If `etcupdate-tarball` is given also call :manpage:`etcupdate(8)` on +the fully re-mounted directory tree that is rooted at `directory` +using `etcupdate-tarball` as the new "current". + + +Options +------- + +.. program:: ftjail freebsd-update + +.. option:: -k + + Keep all temporary files. + + .. note:: On unexpected errors temp files are automatically kept. + +.. option:: -o old-origin + + In addition to check that `directory` is a ZFS clone also check that + its origin is equal to `old-origin`. + + Note that a check that `directory` is a ZFS clone with some origin + is done by default. + + +Environment +----------- + +All environment variables that affect :command:`zfs` are effective also. + + +Files +----- + +A unique temporary directory is created within :file:`/var/tmp`. All +temporary files are created within this directory. + + +See Also +-------- + +:manpage:`ftjail(8)`, :manpage:`freebsd-update(8)`, :manpage:`etcupdate(8)` diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/man8/ftjail-interlink-tmpl.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/man8/ftjail-interlink-tmpl.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,27 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +ftjail-interlink-tmpl +===================== + +Synopsis +-------- + +**ftjail interlink-tmpl** `directory` + + +Description +----------- + +Create symbolic links between the RO base and the RW skeleton in +:file:`skeleton`. + +Base and skeleton must be canonically mounted already into +:file:`directory` (e.g. using :manpage:`ftjail-mount-tmpl(8)`). + +Only applicable to Thin Jails with the :file:`skeleton` symlink layout. + + +See Also +-------- + +:manpage:`ftjail(8)`, :manpage:`ftjail-mount-tmpl(8)` diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/man8/ftjail-mount-tmpl.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/man8/ftjail-mount-tmpl.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,57 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +ftjail-mount-tmpl +================= + +Synopsis +-------- + +**ftjail mount-tmpl** [**-L**] [**-n**] [**-u**] `dataset-base-ro` `dataset-skeleton-rw` `mountpoint` + +**ftjail mount-tmpl** [**-P**] [**-n**] [**-u**] `dataset-base-ro` `dataset-skeleton-rw` `mountpoint` + + +Description +----------- + +Canonically mount a Thin Jail template with its base in `dataset-base-ro` +and its skeleton in `dataset-skeleton-rw` at mountpoint `mountpoint`. + +All children that can be mounted will also mounted properly. + + +Options +------- + +.. program:: ftjail mount-tmpl + +.. option:: -L + + Mount `dataset-skeleton-rw` into a :file:`skeleton` subdirectory. + +.. option:: -P + + Recursively mount only the children of the skeleton dataset + `dataset-skeleton-rw` directly over the base -- skipping + just the parent dataset in `dataset-skeleton-rw`. + +.. option:: -n + + Do not really mount anything but show what would be mounted where. + +.. option:: -u + + Alias of :option:`-n` + + +Environment +----------- + +All environment variables that affect :command:`zfs` are effective also. + + +See Also +-------- + +:manpage:`ftjail(8)`, :manpage:`ftjail-umount-tmpl(8)`, +:manpage:`ftjail-datasets-tmpl(8)` diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/man8/ftjail-populate-tmpl.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/man8/ftjail-populate-tmpl.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,54 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +ftjail-populate-tmpl +==================== + +Synopsis +-------- + +**ftjail populate-tmpl** [**-b**] **-L** `directory` `path/to/base.txz` [`path/to/kernel.txz`] + +**ftjail populate-tmpl** [**-b**] **-P** `directory` `path/to/base.txz` [`path/to/kernel.txz`] + + +Description +----------- + +Populate the directory in `directory` with a FreeBSD base system. +The base system's archive ist in `path/to/base.txz`. + +Optionally a FreeBSD kernel can be extracted also. + +The directory in `directory` must already have a proper +directory layout. +This can be accomplished by :manpage:`ftjail-mount-tmpl(8)`. + +Apply knowledge of the type and typical layout of the RW skeleton +(e.g. handle the :file:`skeleton` symlink properly). + + +Options +------- + +.. program:: ftjail populate-tmpl + +.. option:: -L + + Copy dataset properties optimized for employing a :file:`skeleton` + subdirectory. + +.. option:: -P + + Copy dataset properties optimized for direct mounts of skeleton + children over an already mounted base. + +.. option:: -b + + Do not empty the ``/boot`` folder in `directory` but preserve it. + This option is implied if a `path/to/kernel.txz` is given. + + +See Also +-------- + +:manpage:`ftjail(8)`, :manpage:`ftjail-mount-tmpl(8)` diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/man8/ftjail-snapshot-tmpl.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/man8/ftjail-snapshot-tmpl.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,29 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +ftjail-snapshot-tmpl +==================== + +Synopsis +-------- + +**ftjail snapshot-tmpl** `dataset-ro-base` `dataset-skeleton-rw` `snapshot-name` + + +Description +----------- + +Recursively create ZFS snapshots of `dataset-ro-base` and +`dataset-skeleton-rw` and all its children. The snapshot has the snapshot +name `snapshot-name` and must not exist already. + + +Environment +----------- + +All environment variables that affect :command:`zfs` are effective also. + + +See Also +-------- + +:manpage:`ftjail(8)` diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/man8/ftjail-umount-tmpl.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/man8/ftjail-umount-tmpl.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,30 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +ftjail-umount-tmpl +================== + +Synopsis +-------- + +**ftjail umount-tmpl** `dataset-base-ro` `dataset-skeleton-rw` + +**ftjail unmount-tmpl** `dataset-base-ro` `dataset-skeleton-rw` + + +Description +----------- + +Unmount the mounted ZFS datasets `dataset-skeleton-rw` and +`dataset-base-ro` and all their mounted children. + + +Environment +----------- + +All environment variables that affect :command:`zfs` are effective also. + + +See Also +-------- + +:manpage:`ftjail(8)`, :manpage:`ftjail-mount-tmpl(8)` diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/man8/ftjail.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/man8/ftjail.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,86 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +ftjail +====== + +Synopsis +-------- + +**ftjail -hV** + +**ftjail subcommand** + + +Description +----------- + +Management tool for Thin Jails: creation of base and skeleton datasets, +mount and population helpers. + +The following global options are implemented: + +.. program:: ftjail + +.. option:: -h + + Print a short usage message to stdout and exit. + +.. option:: -V + + Print the program name and version number to stdout and exit. + + +Subcommands +----------- + +:manpage:`ftjail-build-etcupdate-current-tmpl(8)` + + Build a "current" tree suitable for the default and extract mode + of \"etcupdate\" + +:manpage:`ftjail-copy-skel(8)` + + Recursively copy template skeleton contents into jail-specific datasets + +:manpage:`ftjail-datasets-tmpl(8)` + + Create ZFS template datasets for new Thin Jails using base and skeleton + +:manpage:`ftjail-freebsd-update(8)` + + A :manpage:`freebsd-update(8)` implementation for Thin Jails + +:manpage:`ftjail-mount-tmpl(8)` + + Canonically mount the RO base and the RW skeleton of a Thin Jail + +:manpage:`ftjail-umount-tmpl(8)` + + Unmount mounted Thin Jail template datasets + +:manpage:`ftjail-interlink-tmpl(8)` + + Create proper symlinks for "skeleton" style Thin Jails + +:manpage:`ftjail-populate-tmpl(8)` + + Populate a prepared directory structure with the contents of a + FreeBSD base system + +:manpage:`ftjail-snapshot-tmpl(8)` + + Recursively create ZFS snapshots of the RO base datasets and the RW + skeleton datasets + + +Implementation Notes +-------------------- + +All commands with the exception of :command:`ftjail populate-tmpl` and +:command:`ftjail interlink-tmpl` require ZFS as filesystem. + + +Environment +----------- + +All environment variables that affect :command:`zfs` are effective also. diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/man8/fwireguard.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/man8/fwireguard.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,46 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +fwireguard +========== + +Synopsis +-------- + +**service fwireguard** [ **start** | **stop** | **reload** | **status** ] + + +Description +----------- + +An :file:`rc.d` script to manage and configure Wireguard interfaces. + + +Configuration Variables +~~~~~~~~~~~~~~~~~~~~~~~ + +`fwireguard_enable` + Default: NO + +`fwireguard_wait` + Sleep the given amount of time between configuring the interface and + calling the post-start script. + Default: 2s + + +`fwireguard_configdir` + Default: /usr/local/etc/fwireguard + + +Files +----- + +- :file:`/usr/local/etc/fwireguard` + + Default-directory where all the configuration files for all wireguard + interfaces are looked up. + + +See also +-------- + +:manpage:`wg(8)`, `rc.conf(5)` diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/man8/fzfs-copy-tree.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/man8/fzfs-copy-tree.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,71 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +fzfs-copy-tree +============== + +.. program:: fzfs copy-tree + + +Synopsis +-------- + +**fzfs copy-tree** [**-A**] [**-M** `mountpoint`] [**-k**] [**-n**] [**-u**] `source-dataset` `dest-dataset` + + +Description +----------- + +Copy the ZFS filesystem or snapshot that is rooted at `source-dataset` +and all descendent datasets to the destination rooted at `dest-dataset`. + +The structure and content of the filesystems is copied. + +If `source-dataset` is a snapshot then all of its child datasets also must +have a snapshot with the same snapshot name. + +`dest-dataset` must not exist already. + +By default `canmount` is also copied. But this can be modified with +option :option:`-A`. + + +Options +------- + +.. option:: -A + + Unconditionally set the ZFS property `canmount=noauto` for all + created datasets in the destination tree, unless the source dataset + has `canmount=off`. + +.. option:: -M mountpoint + + Set the `mountpoint` property for the root `dest-dataset` to `mountpoint`. + All children will be set to inherit it. + +.. option:: -k + + When copying from a snapshot source a corresponding snapshot will be + copied to the target dataset. By default this snapshot will be + deleted. With this option this snapshot is kept. + +.. option:: -n + + Dry-run. Do not really create and copy datasets but show what would + be done. + +.. option:: -u + + Do not mount the copied datasets. + + +Environment +----------- + +All environment variables that affect :command:`zfs` are effective also. + + +See Also +-------- + +:manpage:`fzfs(8)`, :manpage:`fzfs-create-tree(8)` diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/man8/fzfs-create-tree.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/man8/fzfs-create-tree.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,72 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +fzfs-create-tree +================ + +.. program:: fzfs create-tree + + +Synopsis +-------- + +**fzfs create-tree** [**-A**] [**-M** `mountpoint`] [**-n**] [**-p**] [**-u**] `source-dataset` `dest-dataset` + +Description +----------- + +Copy the ZFS filesystem structure that is rooted at `source-dataset` +to the destination rooted at `dest-dataset`. + +The content of the filesystems is **not** copied. This is also true for +permissions and/or ACLs. + +`dest-dataset` must not exist already. + +By default some important dataset properties that are set locally in +the source tree are copied to the destination. This includes `atime`, +`exec`, `setuid`, `compression`, `primarycache`, `sync` and +`readonly`. + +By default `canmount` is also copied. But this can be modified with +options :option:`-A` and :option:`-p`. + + +Options +------- + +.. option:: -A + + Unconditionally set the ZFS property `canmount=noauto` for all + created datasets in the destination tree. This option overwrites + option :option:`-p`. + +.. option:: -M mountpoint + + Set the `mountpoint` property for the root `dest-dataset` to `mountpoint`. + All children will be set to inherit it. + +.. option:: -n + + Dry-run. Do not really create datasets but show what would be done. + +.. option:: -p + + Copy the `canmount` property only from the source to the root + destination dataset This will be overwritten by the option + :option:`-A`. + +.. option:: -u + + Do not mount the newly created datasets. + + +Environment +----------- + +All environment variables that affect :command:`zfs` are effective also. + + +See Also +-------- + +:manpage:`fzfs(8)`, :manpage:`fzfs-copy-tree(8)` diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/man8/fzfs-mount.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/man8/fzfs-mount.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,50 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +fzfs-mount +========== + +Synopsis +-------- + +**fzfs mount** [**-O**] [**-N**] [**-P**] [**-n**] [**-u**] `dataset` [`mountpoint`] + + +Description +----------- + +Mount the ZFS dataset `dataset` and all its children to mountpoint +`mountpoint`. + + +Options +------- + +.. program:: fzfs mount + +.. option:: -O + + Also mount datasets at mountpoints outside of their "natural" + and inherited mountpoints. + +.. option:: -N + + Mount at their "natural" configured ZFS mountpoints + (the `mountpoint` argument is not required in this case). + +.. option:: -P + + Do not mount the given parent `dataset` but only its children. + +.. option:: -n + + Do not really mount anything but show what would be mounted where. + +.. option:: -u + + Alias of :option:`-n` + + +See Also +-------- + +:manpage:`fzfs-umount(8)` diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/man8/fzfs-umount.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/man8/fzfs-umount.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,23 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +fzfs-umount +=========== + +Synopsis +-------- + +**fzfs umount** `dataset` + +**fzfs unmount** `dataset` + + +Description +----------- + +Unmount the mounted `dataset` and all its children. + + +See Also +-------- + +:manpage:`fzfs-mount(8)` diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/man8/fzfs.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/man8/fzfs.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,54 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +fzfs +==== + +Synopsis +-------- + +**fzfs -hV** + +**fzfs subcommand** + + +Description +----------- + +Helper for ZFS management: + +- recursively mount and unmount a ZFS dataset tree +- create a ZFS dataset tree stucture from a source tree + +The following global options are implemented: + +.. program:: fzfs + +.. option:: -h + + Print a short usage message to stdout and exit. + +.. option:: -V + + Print the program name and version number to stdout and exit. + + +Subcommands +----------- + +:manpage:`fzfs-copy-tree(8)` + + Recursively copy a ZFS dataset tree based while copying some + important properties also + +:manpage:`fzfs-create-tree(8)` + + Recursively create a ZFS dataset tree based on an existing tree while + copying some important properties also + +:manpage:`fzfs-mount(8)` + + Recursively mount a ZFS dataset and its children + +:manpage:`fzfs-umount(8)` + + Recursively unmount a ZFS datasets and its children diff -r f1e00e5b2f2d -r c8abd9d7aac7 docs/man/man8/local-bsdtools.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/man/man8/local-bsdtools.rst Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,91 @@ +.. -*- coding: utf-8; indent-tabs-mode: nil; -*- + +.. local-bsdtools documentation master file, created by + sphinx-quickstart on Sat Sep 17 21:32:09 2022. + + +local-bsdtools +============== + +Description +----------- + +A collection of helper tools specific for FreeBSD. + +They help with + +- managing the installed ports and packages +- creating, installing and updating jails +- creating, installing and updating "thin jails" +- recursively mounting of ZFS dataset hierarchies + +The package contains also a set of daily periodic scripts to + +- trim ZFS pools regularly +- update the IPv6 neighbour cache +- handle (file-)triggered actions (e.g. to indirectly handle certbot + deploy actions) + +All the periodic scripts are disabled by default. + + +See Also +-------- + +- :manpage:`bsmtp2dma.conf(5)` +- :manpage:`local-bsdtools-periodic(5)` +- :manpage:`package-mapping.conf(5)` +- :manpage:`pkgtools.conf(5)` + +- :manpage:`bsmtp2dma(8)` +- :manpage:`check-ports(8)` +- :manpage:`fjail(8)` + + * :manpage:`fjail-configure(8)` + * :manpage:`fjail-copy(8)` + * :manpage:`fjail-datasets(8)` + * :manpage:`fjail-hostid(8)` + * :manpage:`fjail-mount(8)` + * :manpage:`fjail-populate(8)` + * :manpage:`fjail-privs(8)` + * :manpage:`fjail-umount(8)` + +- :manpage:`fjail-copy(8)` + +- :manpage:`ftjail(8)` + + * :manpage:`ftjail-build-etcupdate-current-tmpl(8)` + * :manpage:`ftjail-copy-skel(8)` + * :manpage:`ftjail-datasets-tmpl(8)` + * :manpage:`ftjail-freebsd-update(8)` + * :manpage:`ftjail-interlink-tmpl(8)` + * :manpage:`ftjail-mount-tmpl(8)` + * :manpage:`ftjail-populate-tmpl(8)` + * :manpage:`ftjail-snapshot-tmpl(8)` + * :manpage:`ftjail-umount-tmpl(8)` + +- :manpage:`fpkg(8)` + +- :manpage:`fwireguard(8)` + +- :manpage:`fzfs(8)` + + * :manpage:`fzfs-copy-tree(8)` + * :manpage:`fzfs-create-tree(8)` + * :manpage:`fzfs-mount(8)` + * :manpage:`fzfs-umount(8)` + + +Environment +----------- + +Because the tools use different helper tools like :command:`zfs` or +:command:`pkg` the relevant environment variables according to this tools +also do apply generally. + + +History +------- + +:Version: @(#)@@SIMPLEVERSIONTAG@@ +:ID: $HGid$ diff -r f1e00e5b2f2d -r c8abd9d7aac7 etc/bsmtp2dma.conf.sample --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/bsmtp2dma.conf.sample Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,15 @@ +# +# Configure bsmtp2dma tool. +# +# Is is sourced by `bsmtp2dma`. +# +# @(#)@@SIMPLEVERSIONTAG@@ +# + +# +# MAILER should be compatible to "sendmail": +# - read mail including headers from stdin until EOF +# - support the "-f" flag to explicitely set the envelope sender +# +#MAILER="/usr/sbin/sendmail" +#MAILER="/usr/libexec/dma" diff -r f1e00e5b2f2d -r c8abd9d7aac7 etc/package-mapping.conf.sample --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/package-mapping.conf.sample Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,7 @@ +# +# Map from installed package name to the (unchanged) parent package name +# +# @(#)@@SIMPLEVERSIONTAG@@ +# +fmg-nextcloud-php71 nextcloud-php71 +fmg-nextcloud-twofactor_totp-php71 nextcloud-twofactor_totp-php71 diff -r f1e00e5b2f2d -r c8abd9d7aac7 etc/periodic/daily/720.local-triggered-action --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/periodic/daily/720.local-triggered-action Fri Jun 14 08:30:35 2024 +0200 @@ -0,0 +1,169 @@ +#!/bin/sh +# -*- indent-tabs-mode: nil; -*- +# +# @(#)@@SIMPLEVERSIONTAG@@ +# +# Daily script to handle actions triggered by newly existing files. +# This is e.g. convenient to notify a running daemon to reload because +# of renewed certificates. +# + +# If there is a global system configuration file, suck it in. +if [ -r /etc/defaults/periodic.conf ] +then + . /etc/defaults/periodic.conf + source_periodic_confs +fi + +# Set it to "YES" to enable this script +: ${daily_local_triggered_action_enable:=NO} +# The readability of any of the given files triggers the action +: ${daily_local_triggered_action_files=} +# +# A condition to check also before executing an action. +# +# May be a Shell pipeline. +# E.g. "service nginx onestatus || service apache2 onestatus" +# +: ${daily_local_triggered_action_condition=} +# +# The action to execute. +# +# May be a Shell pipeline. +# E.g. "{ service nginx onereload && service apache2 onereload ; } || true" +# +: ${daily_local_triggered_action_action=} +# +# By default all files triggering the action are removed. Set to "NO" if +# the files should remain. +# +: ${daily_local_triggered_action_files_remove:=YES} +# +# If profiles are defined this script is re-executed once for for every +# profile with the profile as parameter. +# No global options above besides "daily_local_triggered_action_enable" are +# used. +# Instead profile level configurations are named +# daily_local_triggered_action__