Re: aptitude unter sarge: Wie kann man das extended State-Information abfragen?
Andreas Pakulat:
>Siehe oben. Allerdings hast du dann tatsaechlich keine Informationen
>mehr fuer aptitude welche Pakete "automatisch" und welche nicht
>automatisch installiert wurden.
>Um das hinzubekommen musstest du ungefaehr sowas in ein Skript
>schreiben:
>export LANG=C
>liste=
>dpkg --get-selections | cut -f1 | while read paket ; do
> if `apitude show | grep -i "Automatically installed: no"` ; then
> liste="$liste $paket"
> fi
>done
>echo $liste
>Als Ausgabe erhaelst du eine Liste alle nicht automatisch installierten
>Pakete. Damit kannst du dann spaeter aptitude install fuettern.
>Den hold/nicht-hold-Status kriegst du so aber auch nicht hin.
>Ob/Wie das gehen koennte weiss ich auch nicht.
Gemäß Deinem Vorschlag weiter unten: In der Ausgabe von
aptitude show '~i'
nach den Field-Tripeln (Package, State, Version) suchen, wobei
gelten muss: State = 'installed [held]'.
>> Für jedes Paket A, das in Version AVi installiert war,
>> führe aus aptitude install A=V
>Dafuer muesstest du dpkg bemuehen, um die genauen Paketversionen
>herauszubekommen. Ist aber auch nur ein | cut -f2 oder so...
>> Für jedes Paket B, das in Version BVi automatisch installiert war,
>> führe aus aptitude install B && aptitude markauto B
>Brauchst du nicht, es sei denn du hast Pakete "haendisch" auf auto
>gesetzt.
Stimmt. Mein Denkfehler. Und händisch auf auto gesetzte Pakete
sollen ja eben rausfallen, wenn sie von keinem anderen gebraucht
werden.
>Dann solltest du obiges Skript nehmen das "no" auf yes aendern
>und dir damit eine Liste der Pakete generieren die auf Auto gesetzt
>werden muessen.
>> Für jedes Paket C, das in Version CVh festgehalten war,
>> führe aus aptitude install C=CVh && aptitude hold C
>Und genau das kriegst du IMHO nicht raus. Ooh, halt doch. Steht
>auch in aptitude show (State: installed [held]). Allerdings sehe
>ich grade das die Version nicht passt. Sprich wenn ich hier
>Version 6.8.2 von xserver-xorg auf hold setze zeigt mit aptitude
>show trotzdem als Version 6.9.0 an. Sollte man mal nen Bugreport
>zu verfassen, denke ich. Jedenfalls passiert das wenn die
>Version nur noch lokal installiert ist und in keinem
>debian-Repository mehr vorhanden ist.
Der Fehler ist mir auch neu.
>> Für jedes Paket D, dessen Version DVf gesperrt (forbid-version) war,
>> führe aus aptitude forbid-version D=DVf
>Auch das kriegst du aus aptitude show raus, diesmal inkl. der richtigen
>Version.
>> Damit das nicht so sehr langsam abläuft, könnte man die
>> Verarbeitung möglichst vieler Pakete zusammenfassen in
>> Aptitude-Aufrufe der Art
>Ja, du musst dir nur eine Datei anlegen in der ungefaehr sowas drin
>steht:
><paket> <installierte Version> <auto|manual> <forbid=<version>> <hold=<version>>
>Mit einem festgelegten Trennzeichen zwischen den Feldern (z.B. \t).
>> Nur: Was passiert, wenn man ein Paket A hat, das in Version AVi
>> installiert werden soll und abhängt
>>
>> * von einem Paket C, das in Version CVh festgehalten werden soll,
>Das verstehe ich nicht ganz, du meinst das A=AVi von C>=CVh abhaengt
>oder was?
Dann habe ich mich hier unscharf ausgedrückt. Ich meine den Fall,
dass es genügt, dass C in Version CVh oder neuer installiert ist,
damit A=AVi installiert sein kann. Zusätzlich soll C in Version
CVh und mindestens einer neueren im Repository verfügbar sein,
aber aus anderen Gründen soll die Version CVh von mir bevorzugt
werden.
>Dann war es im urspruenglichen System nicht in Version AVi
>installiert. Da du aber mit install A=AVi installierst hast du
>diesselbe Version wie vorher.
>Achja, auf unstable und testing Rechnern sollte man wohl auch die deb's
>mitnehmen beim Sichern. Jedenfalls wenn man damit rechnen muss das
>zwischen Listen-Erstellung und wiedereinspielen mehr als ein paar Tage
>liegen.
Klar. Ich habe die Debs auf CDs vorliegen.
>> oder
>>
>> * von einem Paket D, dessen Version DVf gesperrt war, und das in
>> einer älteren Version als DVf installiert war.
>Das kann nicht passieren, da du ja D<=DVf installierst.
Auch hier meinerseits unscharf formuliert. Ich meine den Fall,
dass es genügt, dass D in Version DVe oder neuer installiert ist,
damit A=AVi installiert sein kann, wobei DVe < DVf gelten soll
und D=DVf im Repository verfügbar aber aus anderen Gründen von
mir nicht gewünscht sein soll.
>> Muss man dann dafür sorgen, dass, bevor A=AVi installiert wird,
>>
>> * das Paket C=CVh installiert und festgehalten
>>
>> * und das Paket D=DVf gesperrt wird,
>Ich wuerde in der Reihenfolge:
>aptitude forbid-version D=DVf
>fuer alle Pakete D die verboten wurden, dann
>aptitude hold C=CVh
>fuer alle Pakete C die auf hold gesetzt wurden
Hoffentlich geht das, ohne dass C=CVh installiert ist.
>und schliesslich (aber bin nicht sicher ob das ohne Installation
>klappt)
>aptitude markauto B=BVa
>fuer alle die automatisch installiert wurden.
Das kann man sich sparen, wenn im Folgenden nur die händisch
installierten Pakete händisch installiert werden.
>Danach dann das
>aptitude install A=AVi C=CVh D<=DVf (oder >=DVf)
--
Bitte in die Adressierung auch meinen|Please put my full name also into
Vor- u. Nachnamen stellen z.B. |the recipient like
Friedhelm Waitzmann <xxx@example>, (Friedhelm Waitzmann) xxx@example,
"Waitzmann, Friedhelm" <xxx@example>
Reply to: