Re: vserver von server4you minimieren
Uwe Kerstan schrieb:
* Bastian Venthur <expires-2006@venthur.de> [11-02-2005 22:26]:
Gibt es irgendwo eine Liste von den Paketen, die von einem minimalen
Debian-Sarge benötigt werden? Die "essentials" sind wohl eine Nummer zu
kleinlich gedacht, da ist ja nichtmal ifconfig, ps oder top dabei. Von
"base" wiederum sind aber z.B. auf einem Router auch nicht alle Pakte
instaliert, also ist "base" schon wieder zu viel des Guten.
Kannst dir selber eine Liste basteln:
$ dpkg-awk Essential:.*yes -- Package >/tmp/liste
$ dpkg-awk Priority:.*required -- Package >>/tmp/liste
$ dpkg-awk Priority:.*important -- Package >>/tmp/liste
$ grep ^Package /tmp/liste | sort | uniq
Wenn das zu viel ist, kannst du immer noch abspecken. ;-)
Hallo nochmal,
ich habe mir jetzt ein Skript gebastelt, was eine Datei auf die oben
genannte Art erstellt und hinter jedem Paketnamen "install" setzt. (inlist)
Dann wird eine zweite Datei erstellt in dem Alle Pakete aus dpgk
--get-selections sind, nur das alle "install" durch "deinstall" ersetzt
wurden (outlist).
Anschließend werden beide Listen mit dpkg --get-selections eingelesen
(zuerst die mit den "deinstalls", dann die mit den "installs". Dadurch
werden Pakete die Pakete, die durch die erste Liste auf "deinstall"
gesetzt wurden wieder gerettet, falls sie unter der Liste der benötigten
Dateien sind.
Soweit so gut. Nun möchte ich aber die Möglichkeit anbieten in einer
dritten Datei Paketnamen anzugeben, die auch noch installiert werden
sollen.
Das Problem ist, wenn diese Pakete wiederum von anderen Abhängen, kann
man nicht einfach "paketname install" in meine in-liste schreiben -- apt
würde diesen Wunsch dann ignorieren, weil dieses Paket so wie es da
steht ja noch broken ist.
Kann mir einer einen Hinweis geben, wie ich alle benögtigen
Abhängigkeiten herausbekomme oder sonstwie geschickt die Pakete aus der
dritten Datei (keeplist) in mein Skript einbaue?
Hinweise/Kritik zum Skript selber sind auch willkommen.
Schöne Grüße
Bastian
Das Skript:
---------8<------------------
#!/bin/sh
#
# Skript zum entfernen aller unnötigen Pakete aus einem Debiansystem.
# Erstellt zur Säuberung der vserver von Server4You.
#
# -- Bastian Venthur 2005
# working-dir
DIR=`pwd`
# temporary an final file for packagelist
TMPFILE=${DIR}/tmplist
INFILE=${DIR}/pkglist_in
OUTFILE=${DIR}/pkglist_out
KEEP=${DIR}/keep-list
# Cleanup
rm "$TMPFILE" "$OUTFILE" "$INFILE" 2> /dev/null
# Get list of essential, required and important packages an put it into the
# tempfile.
dpkg-awk Essential:.*yes -- Package > "$TMPFILE"
dpkg-awk Priority:.*required -- Package >> "$TMPFILE"
dpkg-awk Priority:.*important -- Package >> "$TMPFILE"
# Delete dups and sort the list.
grep ^Package "$TMPFILE" | sort | uniq > "$INFILE"
# Delete leading "Package"-String in every line.
cat "$INFILE" | awk '{print $2 " install"}' > "$TMPFILE"
mv "$TMPFILE" "$INFILE"
# Insert the list of packages we want to keep
cat "$KEEP" | awk '{print $1 " install"}' >> "$INFILE"
# Get list of currently installed Packages, mark them to "deinstall" and
save
# list to file.
dpkg --get-selections > "$TMPFILE"
cat "$TMPFILE" | awk '{print $1 " deinstall"}' > "$OUTFILE"
# Tell apt which Packages we would like to install
dpkg --set-selections < "$OUTFILE"
dpkg --set-selections < "$INFILE"
# Cleanup
rm "$TMPFILE" "$OUTFILE" "$INFILE" 2> /dev/null
#
# Let's to this!
#
apt-get dselect-upgrade
---------8<------------------
Reply to: