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

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: