[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: