Geht: Einfach Aptitude ohne Parameter aufrufen. Dann einmal g drücken und es wird angezeigt, welche Pakete (de-)installiert werden sollen. Noch einmal g und die Aktion wird durchgeführt. Das gibts halt bloß nicht explizit als eigenständigen Paramter.
Also als Systemwiederherstellung wie wir es z.B. von Win XP kennen, würde ich diese Funktionen nicht gerade bezeichnen. M.E. bewirkt eine Systemwiederherstellung, dass das System wieder in den Zustand zurückversetzt wurde, in dem es beim Erstellen des Speicherpunktes war. Bei der im Artikel beschriebenen Funktion wird aber doch das System auf die jeweils neuste Version der Pakete aktualisiert, und nicht wie der Name vermuten liesse auf die ursprüngliche Version!
Also ich denke nicht, das mir Win XP bei einer Systemwiederherstellung die neuste Version einer Software einspielt. Sonst wäre das ja ein genialer weg um das System zu Upgraden :) Win XP => Win Vista Office 2003 => Office 2007 usw.
Von Christopher Bratusek am Mo, 16. Juni 2008 um 09:24 #
Nunja, kommt drauf an, wie du Systemwiederherstellung definierst. Mit obiger Anleitung ist das System selbst wiederhergestellt. Klar die Konfiguration nicht, aber da gibt ja auch einfache Möglichkeiten. z.B.:
tar cvf my-sys-cfg-[date].tar /etc/ bzip2 -9 my-sys-cfg-[date].tar
tar cvf my-local-cfg-[date].tar $HOME/.config $HOME/.local ........ -> und was du sonst noch speichern willst
Diese Funktion sind übrigens auch sehr praktisch, wenn man sich ein neues System installiert (ja, auch unter Linux kann das manchmal sinnvoll sein :) Einfach beim alten System diese Liste generieren lassen, dann neues System installieren, wieder Liste generieren lassen und dann mit *diff vergleichen lassen. Wenn man seinem neuen System auch gewaltsam Änderungen verschaffen will, kann man beim neuen System auch direkt die Liste einspielen und die Pakete updaten lassen. Dabei kann es aber wiederum zu Altlasten und unlösbaren Konflikten kommen!!! Aber zumindest bei mir hat das ganz gut geklappt.
Also ich habe immer zwei bootable Installationen (Kopien) von Debian auf der Platte. Mit der kleinen, ohne Desktop nicht gepflegten Installation mache ich mir immer inkremental BackUPs mit rsync.
Ein BackUP sieht dann so aus: rsync -av --delete --stats /media/root/ /media/backup/rsync/lenny/
Ein Restore so: rsync -av --delete --stats /media/backup/rsync/lenny/ /media/root/
Dabei habe ich mein home oder einige Einstellungen darin auf einem andren mountpoint verlinkt.
Damit kann ich jederzeit mein System kaputt-konfigurieren, ein Restore dauert höchstens 1-2 Minuten.
Das geht natürlich auch übers Netzwerk, zwei Rechner auf den gleichen Stand bringen und dabei einige Einstellungen belassen. (Jeweils das zweite Linux booten): rsync -av --delete --stats --exclude='/etc/hostname' --exclude='/etc/hosts' --exclude='/etc/modules' --exclude='/etc/network/interfaces' --exclude='/etc/X11/xorg.conf' /media/backup/rsync/lenny/ 192.168.x.x:/media/root/
meines wissens kann man auhc netzwerkfreigaben unter /media/ mounten mount.cifs \\\\192.168.0.2\\C$ /media/lenny müsste glaube ich schon funktionieren Ach, und NFS, AFS etc gibts natürlich auch noch
Hab da mal ne Frage bezüglich dpkg. Ich habe ein Paket, dessen Abhängigkeiten nicht erfüllt sind. Es funktionniert aber trotzdem. Leider schmeißt aptitude es bei jeder Aktion raus, weil es als "broken" markiert ist.
Wie kann ich manuell den Status eines Pakets von "broken" auf "non broken" umstellen?
Theoretisch kann man die Abhängikeiten im deb-File so modifizieren dass apt und co. nicht mehr schimpfen. An der DB selbst würde ich nicht herumfuschen.
Du könntes in der Datei /varlib/dpkg/status den Eintrag für das Paket suchen und mit einem Texteditor die Depends Zeile ändern. Vorher aber Kopie von der Datei machen. Wenn da einen Fehler macht sucht man sich einen Wolf.
Alternativ kann man das Deb mir ar aufdröseln , die Abhängigkeiten in der Info Datei ändern und wieder packen, und das Paket installieren.
Ich backuppe meine Daten und Konfigurationen mit dirvish auf eine verschlüsselte Platte, die sich danach wieder schlafen legt. Super. Wenn ich nun noch die Paketliste hinzulege, habe ich alles für die Systemwiederherstellung - und zwar an jedem Tag.
Ich nutze seit woody dazu noch dpkg-repack, um mir die installierten Pakete auch als deb auf eine CD brennen zu können. (dpkg-repack ist ein Perl Skript, welches erstmalig unter sarge erschien, aber auch einwandfrei unter woody lief).
Ausschnitt aus dem Shell-Skript:
# Damit die Namen komplett erscheinen export COLUMNS=220 # # Die Farben: GRUEN="\033[0;42;34m" ROT="\033[0;0;31m" EXIT="\033[0;0;39m" echo -e "erzeuge die temporäre Ablage..." TMPFILE=`mktemp /tmp/repack.XXXXXX` || " echo "Das Tool mktemp ist nicht installiert" ;exit 0 " # #Die installierte Packetliste erzeugen: # dpkg -l | grep "^ii" | awk '{ print $2 }' >> $TMPFILE # # und nun gehts los: # LINES=$(wc -l $TMPFILE | cut -d " " -f1)
y=0 for i in $(cat $TMPFILE) ; do PaketName=$(apt-cache show $i | awk -F '/' '/Filename/ { print $5 }') let y=y+1 echo -e "Paket ${GRUEN} ${y} ${EXIT} von ${GRUEN}${LINES} ${EXIT}heisst ${ROT} $i (${PaketName}) ${EXIT}" if ! [ -e "$PaketName" ] ; then dpkg-repack $i ; fi done
hehe, ich hab da nichts verwechselt ;-) dpkg-repack ist in Perl geschrieben und das wird in der zweitletzten Zeile auch aufgerufen.
Das Shellskript drumherum ist von mir und besorgt eine Liste aller installierten Pakete. Darüberhinaus wird farbig hervorgehoben welches Paket von wievielen gerade wieder zusammengeklaubt wird.
Das hier hat den Vorteil, dass du selbst deb-Pakete von backports oder lokalen Paketinstallationen bekommst, wo du die Quellen nicht mehr in der sources.list oder sonstwo zur Verfügung hast. :)
Die Paketliste selbst reicht ja nicht, es muss ja auch die sources.list mitgenommen werden, lokale (selbstkompilierte) packages müssen eingegliedert werden und auch sonst fehlen ja etliche andere Kleinigkeiten. Ich befürchte, dass die hier gegebene Anleitung bei vielen Nutzern im Ernstfall nicht weiterhilft.
Gibt es eigentlich noch kein Skript, das alle notwendigen Infos sammelt und die Dateien kopiert? Ich glaube es fast nicht.
mein Skript drei Posts über dir macht schon recht viel in dieser Richtung. Es baut aus sämtlichen installierten Paketen wieder debs - egal ob die Quellen von eine alten backports-Version stammen oder aus einem lokalen configure-make-checkinstall-Intermezzo. Du musst nur noch den Output von dpkg --get-selections und natürlich /etc sichern. Dann kannst du das System wiederherstellen.
/etc und /home hat man ja üblicherweise im Backup, ebenso wie /usr/local, /opt, /root und einiges unter /var. Wer selbstkompilierte Pakete direkt ins System installiert, dem ist nicht mehr zu helfen. Diese gehören nach /usr/local oder meinetwegen /opt oder man baut sich gleich ein Debian-Paket daraus. Mit dieser Strategie hat man bei einem Systemcrash alles beisammen, was man braucht, um es wieder herzustellen.
Wer die DPKG-Statusdatei (/var/lib/dpkg/status) mit dem Rest seines Backups regelmäßig sichert, kommt nach einem Crash in die Situation, Anhand des Backups die Paketliste für "dpkg --set-selections" oder apt für eine Wiederherstellung des Systems zu benötigen.
Oder er möchte sie von einem Rettungssystem aus generieren, welches nicht auf Debian basiert und dpkg deshalb nicht mitbringt. Für diese Fälle habe ich vor Jahren das Shellscript dpkg-getselections geschrieben, welches mir gute Dienste geliefert hat.
Der Bericht hat mich daran erinnert, es zu veröffentlichen. Es ist nun hier erhältlich.
lg
Erik
lg
Erik
Einfach Aptitude ohne Parameter aufrufen. Dann einmal g drücken und es wird angezeigt, welche Pakete (de-)installiert werden sollen. Noch einmal g und die Aktion wird durchgeführt.
Das gibts halt bloß nicht explizit als eigenständigen Paramter.
Bei der im Artikel beschriebenen Funktion wird aber doch das System auf die jeweils neuste Version der Pakete aktualisiert, und nicht wie der Name vermuten liesse auf die ursprüngliche Version!
Also was bewirkt sie ;-)
Gruß
Mark
Sonst wäre das ja ein genialer weg um das System zu Upgraden :)
Win XP => Win Vista
Office 2003 => Office 2007
usw.
tar cvf my-sys-cfg-[date].tar /etc/
bzip2 -9 my-sys-cfg-[date].tar
tar cvf my-local-cfg-[date].tar $HOME/.config $HOME/.local ........ -> und was du sonst noch speichern willst
Gute Idee mich an Backup zu erinnern, das letzte ist schon lang her
Einfach beim alten System diese Liste generieren lassen, dann neues System installieren, wieder Liste generieren lassen und dann mit *diff vergleichen lassen.
Wenn man seinem neuen System auch gewaltsam Änderungen verschaffen will, kann man beim neuen System auch direkt die Liste einspielen und die Pakete updaten lassen.
Dabei kann es aber wiederum zu Altlasten und unlösbaren Konflikten kommen!!!
Aber zumindest bei mir hat das ganz gut geklappt.
Mit der kleinen, ohne Desktop nicht gepflegten Installation mache ich mir immer inkremental BackUPs mit rsync.
Ein BackUP sieht dann so aus:
rsync -av --delete --stats /media/root/ /media/backup/rsync/lenny/
Ein Restore so:
rsync -av --delete --stats /media/backup/rsync/lenny/ /media/root/
Dabei habe ich mein home oder einige Einstellungen darin auf einem andren mountpoint verlinkt.
Damit kann ich jederzeit mein System kaputt-konfigurieren, ein Restore dauert höchstens 1-2 Minuten.
Das geht natürlich auch übers Netzwerk, zwei Rechner auf den gleichen Stand bringen und dabei einige Einstellungen belassen. (Jeweils das zweite Linux booten):
rsync -av --delete --stats --exclude='/etc/hostname' --exclude='/etc/hosts' --exclude='/etc/modules' --exclude='/etc/network/interfaces' --exclude='/etc/X11/xorg.conf' /media/backup/rsync/lenny/ 192.168.x.x:/media/root/
Der Schwachpunkt deiner Strategie, aber das weißt du vermutlich.
mount.cifs \\\\192.168.0.2\\C$ /media/lenny
müsste glaube ich schon funktionieren
Ach, und NFS, AFS etc gibts natürlich auch noch
...und die ACLs?
...und die Xattrs?
...und sparse Files?
Wie kann ich manuell den Status eines Pakets von "broken" auf "non broken" umstellen?
Alternativ kann man das Deb mir ar aufdröseln , die Abhängigkeiten in der Info Datei ändern und wieder packen, und das Paket installieren.
Super. Wenn ich nun noch die Paketliste hinzulege, habe ich alles für die Systemwiederherstellung - und zwar an jedem Tag.
(dpkg-repack ist ein Perl Skript, welches erstmalig unter sarge erschien, aber auch einwandfrei unter woody lief).
Ausschnitt aus dem Shell-Skript:
# Damit die Namen komplett erscheinen
export COLUMNS=220
#
# Die Farben:
GRUEN="\033[0;42;34m"
ROT="\033[0;0;31m"
EXIT="\033[0;0;39m"
echo -e "erzeuge die temporäre Ablage..."
TMPFILE=`mktemp /tmp/repack.XXXXXX` || " echo "Das Tool mktemp ist nicht installiert" ;exit 0 "
#
#Die installierte Packetliste erzeugen:
#
dpkg -l | grep "^ii" | awk '{ print $2 }' >> $TMPFILE
#
# und nun gehts los:
#
LINES=$(wc -l $TMPFILE | cut -d " " -f1)
y=0
for i in $(cat $TMPFILE) ; do
PaketName=$(apt-cache show $i | awk -F '/' '/Filename/ { print $5 }')
let y=y+1
echo -e "Paket ${GRUEN} ${y} ${EXIT} von ${GRUEN}${LINES} ${EXIT}heisst ${ROT} $i (${PaketName}) ${EXIT}"
if ! [ -e "$PaketName" ] ; then dpkg-repack $i ; fi
done
dpkg-repack ist in Perl geschrieben und das wird in der zweitletzten Zeile auch aufgerufen.
Das Shellskript drumherum ist von mir und besorgt eine Liste aller installierten Pakete. Darüberhinaus
wird farbig hervorgehoben welches Paket von wievielen gerade wieder zusammengeklaubt wird.
Das hier hat den Vorteil, dass du selbst deb-Pakete von backports oder lokalen Paketinstallationen bekommst, wo du die Quellen nicht mehr in der sources.list oder sonstwo zur Verfügung hast. :)
/thorsten
Gibt es eigentlich noch kein Skript, das alle notwendigen Infos sammelt und die Dateien kopiert? Ich glaube es fast nicht.
Es baut aus sämtlichen installierten Paketen wieder debs - egal ob die Quellen von eine alten backports-Version stammen oder aus einem lokalen configure-make-checkinstall-Intermezzo.
Du musst nur noch den Output von dpkg --get-selections und natürlich /etc sichern.
Dann kannst du das System wiederherstellen.
/thorsten
Oder er möchte sie von einem Rettungssystem aus generieren, welches nicht auf Debian basiert und dpkg deshalb nicht mitbringt. Für diese Fälle habe ich vor Jahren das Shellscript dpkg-getselections geschrieben, welches mir gute Dienste geliefert hat.
Der Bericht hat mich daran erinnert, es zu veröffentlichen. Es ist nun hier erhältlich.