Siduction Forum

Siduction Forum => Software - Support => Topic started by: hsp on 2013/11/22, 18:17:58

Title: Paket von apt melden lassen
Post by: hsp on 2013/11/22, 18:17:58
Ich suche nach einer Möglichkeit wie ich Apt verklickern kann das es ein D-U abbricht wenn ein bestimmtes Paket in der Liste ist und mir eine entspechende Meldung ausgibt. Egal ob es zurückgehalten ist oder neu eingespielt werden soll. Ich denke mir man kann da irgendwo in der config von apt was reinschreiben. Ich weiss nur nicht wie und wo.

danke...

Title: Re: Paket von apt melden lassen
Post by: melmarker on 2013/11/22, 18:36:12
Gibt es so nicht wirklich - Du kannst ein Paket auf Hold setzen. Alle Pakete, die von diesem Paket abhängen (aka Abhängigkeit von der Version) werden dann ebenfalls nicht hochgezogen. Das wars dann aber auch schon.

Ansonsten kannst Du nur noch einen Wrapper um apt-get drumrumschreiben, der das gewünschte Verhalten für Dich realisiert.
Title: Re: Paket von apt melden lassen
Post by: bluelupo on 2013/11/22, 20:20:38
Hi hsp,
da musst dir ein Bashscript schreiben ;-)

Das Bashscript sourced deine Textdatei mit deiner "Sperrliste" ein, danach sollte ein Eintrag deiner "Sperrliste" mit der Liste aus der updatenbaren Paketen aus dem d-u verglichen werden. Am besten du liest die beiden Listen die du vergleichen willst in ein Array und vergleichst Wert für Wert. Wenn Wert aus deiner "Sperrliste" mit einem Wert aus der "d-u Liste" übereinstimmt gibts du eine ensprechende Meldung aus, wenn nicht kann der d-u durchgeführt werden.

Dürfte nicht allzu schwer sein das zu programmieren ;-)
Title: Re: Paket von apt melden lassen
Post by: hsp on 2013/11/22, 20:41:43
An hold hab ich auch schon gedacht, aber wenn es da nix anderes gibt muss ich es wohl so machen. Ein script drumrumfrickeln ist mir zu aufwändig. Mal sehen was der Papa da macht :)

...

Title: Re: Paket von apt melden lassen
Post by: Geier0815 on 2013/11/23, 01:12:48

#!/bin/bash                                                                     

apt-get update

flag=0
such=evolution\|icedove

for zeile in `/usr/bin/apt-get dist-upgrade < /dev/null`; do
    if [[ $zeile =~ $such ]];
    then
        flag=1
    fi
done

echo $flag

#if [ $flag == 0 ]; then
#   apt-get dist-upgrade
#fi


als erster Einstieg. Das Skript macht ein apt-get update, ließt die Ausgabe von dist-upgrade in eine Variable, prüft ob in einer Zeile der Suchbegriff vorkommt (hier evolution ODER icedove) setzt  bei Treffer flag auf 1 und gibt flag aus. Wenn das Ganze so läuft wie Du wünscht, dann mach die Rauten vor den letzten Zeilen weg und dist-upgrade wird dann ausgeführt.
Dabei ist nicht berücksichtigt das dein Programm evtl in "automatisch installierte Pakete" "entfernte Pakete" oder ähnlichem genannt wird. Dann wird kein d-u durchgeführt und Du solltest dann händisch noch mal genauer hin gucken.
Bisher hab ich noch nicht gesehen das Paketnamen umgebrochen, sprich auf zwei Zeilen verteilt wurden aber das könnte evtl. ein Problem sein oder werden...