ich hätte hier ein kleines Shell-Script, welches ein SuSE System so richtig von "Müll" befreit.
Es löscht alle man-pages (bestimmte Sprachen), *.mo (Übersetzungen), Webmin fremde Sprachen und fremde System-Scripte und überflüssige Pseudodoc-Dateien. Je nach Installationsgrad, kommen da locker 100 MB und mehr zusammen.
Die Konfiguration erfolgt in der conf-Datei. Die Schalter sollten sprechend sein.
Welche Dateien als "PseudoDokumentation" behandelt wird ist manuell in dem Script einzustellen.
Wenn das script neue Sprach-Locale entdeckt wird davon eine Liste nach /tmp/myLocalePurge.new-purge geschrieben. Diese Liste sollte dann angepasst werden und in die /etc/myLocalePurge.purge bzw /etc/myLocalePurge.nopurge aufgenommen werden.
Wer mit so einem Script arbeiten will, sollte schon wissen was er tut und kann es entsprechend modifizieren.
WARUNG 1: Ansonsten ist dies beta-Version - No garanties at all
WARNUNG 2: es werden Dateien gelöscht! (durch reinstallation der einzelnen Pakete aber wieder herstellbar ...)
WICHTIG: /etc/myLocalePurge.purge und /etc/myLocalePurge.nopurge MÜSSEN disjunkt sein
For any further Questions don't hesitate to conatct me ...
Kritik, etc willkommen
man braucht dazu:
/etc/myLocalePurge.conf
/etc/myLocalPurge.nopurge
/etc/myLocalePurge.purge
/usr/local/sbin/myLocalePurge
(dieses Script muss mit chmod +x /usr/local/sbin/myLocalePurge ausführbar gemacht werden!)
Es löscht alle man-pages (bestimmte Sprachen), *.mo (Übersetzungen), Webmin fremde Sprachen und fremde System-Scripte und überflüssige Pseudodoc-Dateien. Je nach Installationsgrad, kommen da locker 100 MB und mehr zusammen.
Die Konfiguration erfolgt in der conf-Datei. Die Schalter sollten sprechend sein.
Welche Dateien als "PseudoDokumentation" behandelt wird ist manuell in dem Script einzustellen.
Wenn das script neue Sprach-Locale entdeckt wird davon eine Liste nach /tmp/myLocalePurge.new-purge geschrieben. Diese Liste sollte dann angepasst werden und in die /etc/myLocalePurge.purge bzw /etc/myLocalePurge.nopurge aufgenommen werden.
Wer mit so einem Script arbeiten will, sollte schon wissen was er tut und kann es entsprechend modifizieren.
WARUNG 1: Ansonsten ist dies beta-Version - No garanties at all
WARNUNG 2: es werden Dateien gelöscht! (durch reinstallation der einzelnen Pakete aber wieder herstellbar ...)
WICHTIG: /etc/myLocalePurge.purge und /etc/myLocalePurge.nopurge MÜSSEN disjunkt sein
For any further Questions don't hesitate to conatct me ...
Kritik, etc willkommen
man braucht dazu:
/etc/myLocalePurge.conf
Code:
####################################################
# This is the configuration file for myLocalePurge
####################################################
MANDELETE
DOCDELETE
WEBMIN
SHOWFREEDSPACE
VERBOSE
/etc/myLocalPurge.nopurge
Code:
#####################################################
# Following locales won't be deleted from this system
####################################################
de
de_DE
de_DE.UTF-8
de_DE.utf8
de_DE@euro
C
en
en_US
/etc/myLocalePurge.purge
Code:
#####################################################
# Following locales will be deleted from this system
####################################################
af
af_ZA
am
am_ET
ar
ar_AE
..... hier stehen noch viel mehr ....
/usr/local/sbin/myLocalePurge
(dieses Script muss mit chmod +x /usr/local/sbin/myLocalePurge ausführbar gemacht werden!)
Code:
#!/bin/bash
#######################################################################
#######################################################################
function removePseudoDocs ()
{
for i in AUTHORS AUTHORS.RPM ABOUT-NLS ANNOUNCE
ACKNOWLEDGEMENTS \
BUGS \
CHANGES CHANGES.gz changes [Cc]hanges.txt Change[lL]og* CHANGELOG CREDITS \
COPYING COPYING[.-]LIB COPYING.GPL COPYING.FDL COPYING.LGPL COPYING.OLD COPYRIGHT \
COPYRIGHT.german COPYRIGHT.english COPYRIGHT.french COPYRIGHT.spanish Copyright \
[cC][Oo][Pp][Yy][Rr][Ii][Gg][Hh][Tt].[Tt][Xx][Tt] \
COPYING.ART COPIYNG-DOCS \
DISCLAIMER HACKING INSTALL INSTALL.txt \
FAQ_pl FAQ_uk FAQ_fr FAQ_es FAQ_fi FAQ_it FTL.txt \
GPL2 GPL.txt \
KNOWNBUG* KNOWN_BUG* \
[Ll][iI][Cc][Ee][Nn][SC][Ee] LICENSES LICENSE.[GQ]PL licence.terms [Ll][Ii][Cc][Ee][Nn][Cc][Ee].[Tt][Xx][Tt] \
LICREAD.txt LICENSING \
Maintainers MAINTAINERS MANIFEST \
NLS_SUPPORT NEWS HISTORY *.lsm NOTES \
OpenPGP \
PORTING [Pp][Rr][Oo][Bb][Ll][Ee][Mm][Ss] PLATFORMS \
README_cs README_pl README_uk README_es README_fr README_fi README_it \
README_opengl README_freebsd RELNOTES RELEASE[_-]NOTES RELEASENOTES.TXT \
*.[Ww][Ii][Nn]32 THANKS TODO W[Hh][Aa][Tt][Ss][Nn][Ee][Ww]; do
removeFile $1 $i
done
}
#######################################################################
#######################################################################
function removeFile ()
{
find $1 -name $2 | xargs rm $RMOPTION
}
#######################################################################
#######################################################################
function removeEmptyDir ()
{
TMP=`ls -1 $1`
if [ -z "$TMP" ]; then
rm -r $RMOPTION $1
fi
}
#######################################################################
#######################################################################
function calcSpaceBefore ()
{
if [ "$SHOWFREEDSPACE" = "enabled" ]; then
BEFORE=$(df -P $1 | awk '{if ( NR==2 ) { print $3 }}')
fi
}
#######################################################################
#######################################################################
function showDir ()
{
if [ "$VERBOSE" = "enabled" ]; then
echo "$PROGNAME: processing files in $1 ..."
fi
}
#######################################################################
#######################################################################
function calcSpaceAfter ()
{
if [ "$SHOWFREEDSPACE" = "enabled" ]; then
AFTER=$(df -P $1 | awk '{if ( NR==2 ) { print $3 }}')
SUBTOTAL=$(($BEFORE - $AFTER))
if [ ! $BEFORE = $AFTER ]; then
echo "$PROGNAME: Disk space freed in $1: "$SUBTOTAL"K"
TOTAL="$(($TOTAL + $SUBTOTAL))"
fi
fi
}
#######################################################################
#######################################################################
function removeWebminLang ()
{
for i in af bg ca cz da el es fr he hu it ja_JP.euc ja_JP.jis \
ko_KR.euc lt nl no pl pt pt_BR ru_RU ru_SU si sk sv \
th tr zh_CN zh_TW.Big5; do
removeFile $1 $i
removeFile $1 *.$i.html
removeFile $1 config.info.$i
done
for i in config-aix* \
config-cobalt-* config-corel-* config-coherent-* config-cygwin* \
config-debian-* \
config-freebsd* \
config-generic-linux* config-gentoo-* \
config-hpux* \
config-irix* \
config-lfs* \
config-macos* config-msc-* config-mandrake-* \
config-netbsd* \
config-osf1* config-open* \
config-redhat-* \
config-solaris* config-sol-* config-slackware-* \
config-suse-linux-6* config-suse-linux-7* config-suse-linux-8* \
config-trustix-* config-turbo-* \
config-united-* config-unixware*; do
removeFile $1 $i
done
for i in aix \
cobalt coherent corel cygwin \
debian \
freebsd \
gentoo \
hpux \
irix \
lfs \
macos mandrake msc \
netbsd \
openserver openbsd \
redhat \
solaris slackware sol suse-linux-8* \
trustix turbo \
unixware; do
removeFile $1 $i-linux-lib.pl
removeFile $1 $i-lib.pl
done
removeFile $1 [Cc][Hh][Aa][Nn][Gg][Ee][Ll][Oo][Gg]
removeFile $1 COPYRIGHT
removeFile $1 COPYING
removeFile $1 LICEN[CS]E
removeFile $1 Release-notes
removeFile $1 WARRANTY
removeFile $1 AUTHORS
}
#######################################################################
#######################################################################
function checkFile ()
{
if [ ! -f $1 ]; then
echo "$PROGNAME: No $1 file present, exiting ..."
exit 1
fi
}
#######################################################################
#######################################################################
# main processing
#######################################################################
#######################################################################
set -e
if [ "$1" = "-debug" ] || \
[ "$1" = "-d" ] || \
[ "$2" = "-debug" ] || \
[ "$2" = "-d" ]; then
set -x
fi
PROGNAME=myLocalePurge
LOCALEDIRS="/usr/lib/locale /usr/X11/share/locale /usr/share/locale /opt/kde3/share/locale /opt/kde3/share/locale/l10n /opt/gnome/share/locale"
MANPAGEDIRS="/usr/share/man /usr/local/share/man /usr/X11/man /var/cache/man"
DOCDIRS="/usr/share/doc/packages"
WEBMINDIRS="/usr/libexec/webmin /usr/libexec/usermin"
TOTAL=0
RMOPTION="-f"
# Do nothing and report why if no valid configuration file exists:
CONFIGFILE=/etc/"$PROGNAME".conf
checkFile $CONFIGFILE
# list of undesired locales
PURGEFILE=/etc/"$PROGNAME".purge
checkFile $PURGEFILE
# list of wanted locales
NOPURGEFILE=/etc/"$PROGNAME".nopurge
checkFile $NOPURGEFILE
if [ "`grep -x ^SHOWFREEDSPACE $CONFIGFILE`" ]; then
SHOWFREEDSPACE=enabled
fi
if [ "`grep -x ^VERBOSE $CONFIGFILE`" ] || \
[ "$1" = "-verbose" ] || \
[ "$1" = "-v" ] || \
[ "$2" = "-verbose" ] || \
[ "$2" = "-v" ]; then
VERBOSE=enabled
RMOPTION="-vf"
fi
echo ""
echo "$PROGNAME: using config-file $CONFIGFILE"
echo "$PROGNAME: SHOWFREEDSPACE=$SHOWFREEDSPACE; VERBOSE=$VERBOSE"
echo ""
# first update $PURGEFILE with newly introduced locales
NEWLOCALELIST=/tmp/"$PROGNAME".purge-new
if [ -f $NEWLOCALELIST ]; then
rm "$NEWLOCALELIST"
fi
for LOCALEDIR in $LOCALEDIRS; do
if [ "$VERBOSE" = "enabled" ]; then
echo "$PROGNAME: checking system for new locale in $LOCALEDIR..."
fi
for NEWLOCALE in $(cd $LOCALEDIR; ls .); do
if [ -d $LOCALEDIR/$NEWLOCALE/LC_MESSAGES ]; then
if [ "$(grep -x $NEWLOCALE $NOPURGEFILE)" = "1" ] || [ "$(grep -x $NEWLOCALE $PURGEFILE)" = "1" ]; then
echo "$NEWLOCALE"
echo "$NEWLOCALE" >> "$NEWLOCALELIST"
fi
fi
done
done
if [ -f $NEWLOCALELIST ]; then
mv "$NEWLOCALELIST" "$NEWLOCALELIST".temp
sort -u "$NEWLOCALELIST".temp > "$NEWLOCALELIST"
rm "$NEWLOCALELIST".temp
fi
if [ -f "$NEWLOCALELIST" ]; then
echo "$PROGNAME: Some new locales have appeared on your system (see $NEWLOCALELIST):"
echo ""
cat "$NEWLOCALELIST" | tr '\n' ' '
echo ""
fi
# Getting rid of superfluous locale files
echo ""
for LOCALEDIR in $LOCALEDIRS; do
if [ -d $LOCALEDIR ]; then
calcSpaceBefore $LOCALEDIR
showDir $LOCALEDIR
for LOCALE in `ls $LOCALEDIR`; do
if [ ! "`grep -x ^$LOCALE $NOPURGEFILE`" ] && [ "`grep -x ^$LOCALE $PURGEFILE`" ]; then
if [ -d $LOCALEDIR/$LOCALE/LC_MESSAGES ]; then
rm $RMOPTION `find $LOCALEDIR/$LOCALE -type f`
removeEmptyDir $LOCALEDIR/$LOCALE/LC_MESSAGES
fi
if [ -d $LOCALEDIR/$LOCALE ]; then
echo "$LOCALDIR/$LOCALE found without LC_MESSAGES"
fi
fi
removeEmptyDir $LOCALEDIR/$LOCALE
done
calcSpaceAfter $LOCALEDIR
fi
done
# Getting rid of localized man pages in $MANPAGEDIR
if [ "`grep -x ^MANDELETE $CONFIGFILE`" ]; then
echo ""
for MANPAGEDIR in $MANPAGEDIRS; do
if [ -d $MANPAGEDIR ]; then
calcSpaceBefore $MANPAGEDIR
showDir $MANPAGEDIR
for LOCALE in `ls $MANPAGEDIR | grep -v ^man[1-9]`; do
if [ ! "`grep -x ^$LOCALE $NOPURGEFILE`" ] && [ "`grep -x ^$LOCALE $PURGEFILE`" ]; then
if [ -d $MANPAGEDIR/$LOCALE ]; then
rm $RMOPTION `find $MANPAGEDIR/$LOCALE -type f`
fi
fi
done
calcSpaceAfter $MANPAGEDIR
fi
done
fi
# Getting rid of pseudodocs in $DOCDIRS
echo ""
if [ "`grep -x ^DOCDELETE $CONFIGFILE`" ]; then
for DOCDIR in $DOCDIRS; do
if [ -d $DOCDIR ]; then
calcSpaceBefore $DOCDIR
showDir $DOCDIR
removePseudoDocs $DOCDIR
removeEmptyDir $DOCDIR
calcSpaceAfter $DOCDIR
fi
done
fi
# Getting rid of language in Webmin/Usermin
echo ""
if [ "`grep -x ^WEBMIN $CONFIGFILE`" ]; then
for WEBMINDIR in $WEBMINDIRS; do
if [ -d $WEBMINDIR ]; then
calcSpaceBefore $WEBMINDIR
showDir $WEBMINDIR
removeWebminLang $WEBMINDIR
calcSpaceAfter $WEBMINDIR
fi
done
fi
# reporting total disk space freed
if [ "$SHOWFREEDSPACE" = "enabled" ]; then
echo ""
echo "$PROGNAME: Total disk space freed: "$TOTAL"K"
echo ""
fi