pkgfoster: save the list of adopted packages in a tidy format
This commit is contained in:
parent
150c874481
commit
0485af9be2
@ -10,24 +10,25 @@
|
||||
.fam T
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
\fBpkgfoster\fP is a simple interactive script you can use to clean up orphaned packages (i.e.,
|
||||
packages not listed in the "Depends on: " line of any other installed package). It uses
|
||||
prt-cache by default, so remember to build the cache with "prt-get cache". You can also
|
||||
use normal prt-get by modifying the PRT_GET variable. The bash array FOSTERED
|
||||
is read from and written to ~/.config/pkgfoster.conf, as a means of preserving your choices
|
||||
regarding which packages to keep. If you run \fBpkgfoster\fP as a non-root user, make sure the user
|
||||
is able to elevate permissions using sudo, doas, or 'su -c'.
|
||||
\fBpkgfoster\fP is a simple interactive script you can use to clean up orphaned
|
||||
packages (i.e., packages not listed in the "Depends on: " line of any other installed
|
||||
package). It uses prt-cache by default, so remember to build the cache with "prt-get
|
||||
cache". You can also use normal prt-get by modifying the PRT_GET variable. The file
|
||||
~/.config/pkgfoster.keep is used to preserve your decisions regarding which packages
|
||||
to keep. If you run \fBpkgfoster\fP as a non-root user, make sure the user is able to
|
||||
elevate permissions using sudo, doas, or 'su -c'.
|
||||
.PP
|
||||
Packages from the core collection are never considered for deletion, since some of them
|
||||
might provide runtime dependencies yet not be listed in the "Depends on: " line. See
|
||||
\fBPkgfile\fP(5) for an explanation of this practice.
|
||||
.PP
|
||||
Some packages flagged by \fBpkgfoster\fP might actually be optional (soft) dependencies of other
|
||||
packages on your system. Use \fBrevdep\fP(1) to identify any breakage that you introduce by
|
||||
removing these misidentified orphans, and rebuild the affected ports using
|
||||
Some packages flagged by \fBpkgfoster\fP might actually be optional (soft)
|
||||
dependencies of other packages on your system. Use \fBrevdep\fP(1) to identify any
|
||||
breakage that you introduce by removing these misidentified orphans, and rebuild the
|
||||
affected ports using
|
||||
.B prt\-get update \-fr
|
||||
(see \fBprt\-get\fP(8) for more detailed examples).
|
||||
.SH AUTHORS
|
||||
Jukka Heino <jukka@karsikkopuu.net>
|
||||
.SH SEE ALSO
|
||||
\fBprt\-cache\fP(8), \fBprt\-get\fP(8), \fBrevdep\fP(1)
|
||||
\fBprt\-cache\fP(8), \fBprt\-get\fP(8), \fBPkgfile\fP(5), \fBrevdep\fP(1)
|
||||
|
@ -4,11 +4,11 @@
|
||||
# Jukka Heino <jukka@karsikkopuu.net>
|
||||
#
|
||||
# pkgfoster is a simple script you can use to clean up orphaned packages (i.e.
|
||||
# packages which no other package depends on). It uses prt-cache by default, so
|
||||
# remember to build the cache with "prt-get cache". You can also use normal
|
||||
# prt-get by modifying the PRT_GET variable. An array of packages to keep
|
||||
# is stored in the FOSTERED variable. Packages from core are never considered
|
||||
# for deletion.
|
||||
# packages which do not appear in the "Depends on: " line of any other installed
|
||||
# package). It uses prt-cache by default, so remember to build the cache with
|
||||
# "prt-get cache". You can also use normal prt-get by modifying the PRT_GET
|
||||
# variable. The file ~/.config/pkgfoster.keep contains a list of all packages
|
||||
# you've decided to keep. Packages from core are never considered for deletion.
|
||||
#
|
||||
|
||||
PRT_GET=prt-cache
|
||||
@ -26,17 +26,20 @@ else
|
||||
fi
|
||||
|
||||
BASE=$(awk '/^[[:space:]]*prtdir.*\/core/ {print $2}' /etc/prt-get.conf)
|
||||
CONF=${XDG_CONFIG_HOME:="$HOME/.config"}/pkgfoster.conf
|
||||
[ -f $CONF ] && . $CONF || mkdir -p ${XDG_CONFIG_HOME}
|
||||
CONF="${XDG_CONFIG_HOME:="$HOME/.config"}/pkgfoster.keep"
|
||||
if [ ! -f "$CONF" ]; then
|
||||
mkdir -p "${XDG_CONFIG_HOME}"
|
||||
touch "$CONF"
|
||||
fi
|
||||
|
||||
echo "Checking packages for orphans..."
|
||||
|
||||
while true ; do
|
||||
RECHECK=0
|
||||
|
||||
orphans=$(comm -13 <(cat <(find "$BASE" -maxdepth 1 -type d -printf "%f\n") \
|
||||
<(for (( k=0; k<${#FOSTERED[@]}; k++ )); do echo "${FOSTERED[$k]}"; done) \
|
||||
| sort -u) <($PRT_GET listorphans | sort) | tr '\n' ' ')
|
||||
orphans=$(comm -23 <($PRT_GET listorphans | sort) \
|
||||
<(cat <(find "$BASE" -maxdepth 1 -type d -printf "%f\n") "$CONF" \
|
||||
| sort -u) | tr '\n' ' ')
|
||||
|
||||
for PACKAGE in ${orphans[@]}; do
|
||||
echo
|
||||
@ -50,16 +53,11 @@ while true ; do
|
||||
$PKGRM $PACKAGE
|
||||
RECHECK=1
|
||||
else
|
||||
FOSTERED=( $PACKAGE ${FOSTERED[@]} )
|
||||
echo $PACKAGE >> "$CONF"
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$RECHECK" = "0" ] ; then
|
||||
echo -n "FOSTERED=(" > $CONF
|
||||
for (( k=0; k<${#FOSTERED[@]}; k++ )); do
|
||||
echo -n "${FOSTERED[$k]} " >> $CONF
|
||||
done
|
||||
echo ")" >> $CONF
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user