Compare commits
7 Commits
master
...
freebsd_up
Author | SHA1 | Date | |
---|---|---|---|
|
a5dd360cf8 | ||
|
0b2fd52c9a | ||
|
bcf5edaa20 | ||
|
bc503ac023 | ||
|
8669dbddb5 | ||
|
a78d3142aa | ||
|
aac83f6591 |
51
ezjail-admin
51
ezjail-admin
@ -41,8 +41,8 @@ ezjail_basesystem="base"
|
||||
case `uname -p` in amd64) ezjail_dirlist="${ezjail_dirlist} usr/lib32"; ezjail_basesystem="${ezjail_basesystem} lib32";; esac
|
||||
|
||||
# Synopsis messages
|
||||
ezjail_usage_ezjailadmin="${ezjail_admin} v3.4.2\nUsage: ${ezjail_admin} [archive|config|console|create|delete|freeze|install|list|restore|snapshot|troubleshoot|update] {params}"
|
||||
ezjail_usage_install="Usage: ${ezjail_admin} install [-mMpPsS] [-h host] [-r release]"
|
||||
ezjail_usage_ezjailadmin="${ezjail_admin} v3.4.2\nUsage: ${ezjail_admin} [archive|config|console|create|delete|freeze|install|list|restore|snapshot|troubleshoot|update|baseclean] {params}"
|
||||
ezjail_usage_install="Usage: ${ezjail_admin} install [-mMpPsSK] [-h host] [-r release]"
|
||||
ezjail_usage_create="Usage: ${ezjail_admin} create [-xbi] [-f flavour] [-r jailroot] [-s size] [-c bde|eli|zfs] [-C args] [-a archive] [-z parentzfs] jailname jailip"
|
||||
ezjail_usage_delete="Usage: ${ezjail_admin} delete [-wf] jailname"
|
||||
ezjail_usage_update="Usage: ${ezjail_admin} update [-s sourcetree|sourceosversion] [-p] (-b|-i|-u|-U|-P)"
|
||||
@ -53,6 +53,7 @@ ezjail_usage_restore="Usage: ${ezjail_admin} restore [-f] [-d archivedir] (archi
|
||||
ezjail_usage_freeze="Usage: ${ezjail_admin} freeze jailname newflavour"
|
||||
ezjail_usage_troubleshoot="Usage: ${ezjail_admin} troubleshoot [jailname...]"
|
||||
ezjail_usage_list="Usage: ${ezjail_admin} list"
|
||||
ezjail_usage_baseclean="Usage: ${ezjail_admin} baseclean [-y]"
|
||||
|
||||
################################
|
||||
# End of variable initialization
|
||||
@ -285,10 +286,14 @@ ezjail_splitworld() {
|
||||
# This mkdir is important, since cpio will create intermediate
|
||||
# directories with permission 0700 which is bad
|
||||
mkdir -p "${ezjail_jailbase}/usr"
|
||||
# Remove any leftover ezjail install logs
|
||||
rm -f ${ezjail_jailbase}/.ezjail.installlog
|
||||
for dir in ${ezjail_dirlist}; do
|
||||
find ${dir} | cpio -d -p -v "${ezjail_jailbase}" || exerr "Error: Installation of ${dir} failed."
|
||||
find ${dir} >> ${ezjail_jailbase}/.ezjail.installlog
|
||||
find ${dir} | cpio -d -p -v ${ezjail_keep_basejail} "${ezjail_jailbase}" || exerr "Error: Installation of ${dir} failed."
|
||||
chflags -R noschg ${dir}; rm -r ${dir}; ln -s /basejail/${dir} ${dir}
|
||||
done
|
||||
[ "${ezjail_uglyperlhack}" = "YES" ] && echo usr/bin/perl >> ${ezjail_jailbase}/.ezjail.installlog
|
||||
mkdir basejail
|
||||
|
||||
# Try to remove the old template jail
|
||||
@ -1067,7 +1072,7 @@ install)
|
||||
# Clean variables, prevent pollution
|
||||
unset ezjail_release ezjail_installmanpages ezjail_installports ezjail_installsources ezjail_dir ezjail_ftpserverqueried ezjail_proto ezjail_disturi
|
||||
|
||||
shift; while getopts :mMpPsSh:r: arg; do case ${arg} in
|
||||
shift; while getopts :mMpPsSh:Kr: arg; do case ${arg} in
|
||||
m) ezjail_installmanpages=" manpages";;
|
||||
M) ezjail_installmanpages=" manpages"; unset ezjail_basesystem;;
|
||||
s) ezjail_installsources=" src";;
|
||||
@ -1075,6 +1080,7 @@ install)
|
||||
p) ezjail_installports="YES";;
|
||||
P) ezjail_installports="YES"; unset ezjail_basesystem;;
|
||||
h) ezjail_ftphost=${OPTARG};;
|
||||
K) ezjail_keep_basejail="-u";;
|
||||
r) ezjail_release=${OPTARG};;
|
||||
?) exerr ${ezjail_usage_install};;
|
||||
esac; done; shift $(( ${OPTIND} - 1 ))
|
||||
@ -1206,13 +1212,48 @@ install)
|
||||
|
||||
# Update to current patch level, split basejail and newjail
|
||||
if [ "${ezjail_basesystem}" ]; then
|
||||
env PAGER=/bin/cat freebsd-update -b "${DESTDIR}" fetch install
|
||||
env PAGER=/bin/cat freebsd-update -b "${DESTDIR}" --currently-running "${ezjail_release}" fetch install
|
||||
ezjail_splitworld
|
||||
fi
|
||||
|
||||
# Fill ports, if requested
|
||||
[ "${ezjail_installports}" ] && ezjail_updateports
|
||||
|
||||
;;
|
||||
######################## ezjail-admin BASECLEAN ########################
|
||||
baseclean)
|
||||
unset ezjail_yeswecan
|
||||
|
||||
shift; while getopts y arg; do case ${arg} in
|
||||
y) ezjail_yeswecan="YES";;
|
||||
?) exerr ${ezjail_usage_baseclean};;
|
||||
esac; done; shift $(( $OPTIND - 1 ))
|
||||
|
||||
[ "${ezjail_yeswecan}" != "YES" ] && echo "baseclean dry run, nothing will be deleted. Use -y option to delete files."
|
||||
[ ! -f "${ezjail_jailbase}/.ezjail.installlog" ] && echo "No .ezjail.installlog found in basejail, please run ezjail-admin install first." && exit 1
|
||||
|
||||
[ "${ezjail_use_zfs}" = "YES" ] && ensure_jailzfs
|
||||
ezjail_makeabsolute ezjail_jailbase
|
||||
|
||||
for _parent in `ls -1d ${ezjail_jailbase}/*/* |grep -v ${ezjail_jailbase}/usr/ports`; do
|
||||
|
||||
# find all files in base jail that are not listed in the install log and delete them
|
||||
for _file in `find ${_parent} -type l -or -type f | sed s:^${ezjail_jailbase}/:: `; do
|
||||
if [ `grep --mmap -c -m 1 -F -x ${_file} ${ezjail_jailbase}/.ezjail.installlog` -lt 1 ]; then
|
||||
[ "${ezjail_yeswecan}" != "YES" ] && echo "File: ${ezjail_jailbase}/${_file} will be deleted"
|
||||
[ "${ezjail_yeswecan}" = "YES" ] && rm "${ezjail_jailbase}/${_file}" && echo "File: ${ezjail_jailbase}/${_file} deleted"
|
||||
fi
|
||||
done
|
||||
|
||||
# find all directories in base jail that are not listed in the install log and delete them when empty
|
||||
for _dir in `find ${_parent} -type d | sort -r | sed -E s:^${ezjail_jailbase}/:: `; do
|
||||
if [ `grep -c -m 1 -F -x ${_dir} ${ezjail_jailbase}/.ezjail.installlog` -lt 1 ]; then
|
||||
[ "${ezjail_yeswecan}" != "YES" -a "${_dir}" != "${ezjail_jailbase}" ] && echo "Dir: ${ezjail_jailbase}/${_dir} will be deleted"
|
||||
[ "${ezjail_yeswecan}" = "YES" -a "${_dir}" != "${ezjail_jailbase}" ] && rmdir ${ezjail_jailbase}/${_dir} && echo "Dir: ${ezjail_jailbase}/${_dir} deleted"
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
;;
|
||||
######################## ezjail-admin SHORTCUT ########################
|
||||
*start|*stop|*startcrypto|*stopcrypto)
|
||||
|
@ -6,7 +6,7 @@
|
||||
.Nd Administrate ezjail environment
|
||||
.Sh SYNOPSIS
|
||||
.Nm Cm install
|
||||
.Op Fl mMpPsS
|
||||
.Op Fl mMpPsSK
|
||||
.Op Fl h Ar host
|
||||
.Op Fl r Ar release
|
||||
.Nm
|
||||
@ -61,6 +61,9 @@
|
||||
.Op Fl s Ar sourcetree | sourceosversion
|
||||
.Op Fl p
|
||||
.Fl b | Fl i | Fl P | Fl u | Fl U
|
||||
.Nm
|
||||
.Cm baseclean
|
||||
.Op Fl y
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Nm
|
||||
@ -123,6 +126,9 @@ for details or
|
||||
.Xr portsnap 8 .
|
||||
.It Fl P
|
||||
Fetch and extract a ports tree, without (re)installing the base jail.
|
||||
.It Fl K
|
||||
Reinstall the base jail and the new jail template. Can be used together with -r
|
||||
to upgrade both to a newer (or older) FreeBSD version.
|
||||
.It Fl h Ar host
|
||||
Set the remote host to fetch FreeBSD distribution sets from. If absent the
|
||||
default host
|
||||
@ -626,6 +632,17 @@ sub command to install the basejail from binary packages.
|
||||
.Pp
|
||||
If the basejail is managed in its own ZFS filesystem, a snapshot of that
|
||||
filesystem is taken first.
|
||||
.Ss Nm Cm baseclean
|
||||
Cleans ezjail's basejail from any unneeded files that might still be present
|
||||
after an upgrade via
|
||||
.Cm ezjail-admin install
|
||||
.Fl K
|
||||
.Pp
|
||||
Defaults in a dry run which
|
||||
will not delete anything, but shows all files that would be deleted.
|
||||
.Pp
|
||||
.Fl y
|
||||
Really delete that files.
|
||||
.Sh FILES
|
||||
.Pa EZJAIL_PREFIX/bin/ezjail-admin
|
||||
.br
|
||||
|
Loading…
x
Reference in New Issue
Block a user