kanotix.com

Installation, Einstellungen, Systempflege - Frage zu apt-get install

stalin2000 - 01.03.2011, 09:07 Uhr
Titel: Frage zu apt-get install
Hallo Ihr,

wie kann ich apt-get sagen, daß wenn ich eine lange Liste zu installierender Pakete habe, alle Pakete unbekannten Pakete ohne abzubrechen übersprungen werden sollen?

Viele Grüße Christopher
Antonius - 01.03.2011, 22:59 Uhr
Titel:
Verstehe ich es richtig, dass es Dir darum geht, eine Vielzahl von Paketen zu installieren, von denen manche nicht im Repo vorhanden sind?

Hast Du es schon mal mit der Option "-m" versucht?

z.B. apt-get install -m foo1 foo2 foo3
stalin2000 - 03.03.2011, 08:04 Uhr
Titel:
Hallo Antonius,

nein das klappt nicht:

Code:
root@kdegroszerrechner:/home/desputin# apt-get install -m diesespaketgibtesnicht pdfedit
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut       
Statusinformationen werden eingelesen... Fertig
E: Paket diesespaketgibtesnicht kann nicht gefunden werden


Hier müßte apt-get ja jetzt einfach das andere Paket pdfedit, welches vorhanden ist im repository anstandslos installieren, was aber nicht geschieht...
TheOne - 03.03.2011, 12:40 Uhr
Titel:
wieso willst du überhaupt ne Liste mit Paketen erstellen, die es überhaupt nicht gibt?
stalin2000 - 03.03.2011, 12:56 Uhr
Titel:
Na ja, ich habe eine Liste, die ich aktuell halte mit wichtigen Programmen, die ich nach einer Neuinstallation immer installieren möchte. Manchmal ist ein Programmname hierbei falsch geschrieben oder ein Programm ist irgendwie nicht (mehr) im Repository. Dann möchte ich nicht 10x hintereinander apt-get install xyz eingeben und immer mühsahmst einzelne Pakete, die gerade nicht gefunden werden, aus der Liste herausnehmen (was in der Konsole auch nicht gerade schnell geht)
TheOne - 03.03.2011, 13:31 Uhr
Titel:
machst dir halt ein kleines Script mit na for-Schleife, wo halt vorher ein Check passiert ob das Paket so verfügbar ist
apt-cache show liefert 1 (false) zurück wenn das Paket nicht verfügbar ist - hier mal ein Minimalbeispiel
Code:
for x in iceweasel gibtesnicht icedove; do apt-cache show $x &> /dev/null && echo "$x install"; done;
die Liste kannst ja dann als Parameter übergeben, statt dem echo hinten nimmst dann natürlich ein apt-get install $x Winken

TheOne
stalin2000 - 11.04.2011, 08:35 Uhr
Titel:
halle theone. Super, danke!
Das heißt mein Befehl sieht dann so aus?:

Zitat:
for x in paket1 paket2 paket_nicht_vorhanden paket3 paket4; do apt-cache show $x &> /dev/null && apt-get install $x;

TheOne - 11.04.2011, 22:35 Uhr
Titel:
das done; der For-Schleife nicht vergessen
stalin2000 - 19.05.2011, 09:44 Uhr
Titel:
Hallo The one,

danke erstmal. Ich habe nun eine Liste.txt wo alle Pakete drinstehen, wie müßte dann der Befehl lauten?

Viele Grüße Christopher
miltonjohn - 19.05.2011, 10:20 Uhr
Titel:
Code:
 for x in $"restlicher_pfad_zum_file"(<get.txt); do apt-get install -y $x; done


müsste glaub so ok sein
towo2099 - 19.05.2011, 10:23 Uhr
Titel:
Nuja, ein apt-get install $(<liste.txt)
täts auch
stalin2000 - 19.05.2011, 11:35 Uhr
Titel:
@towo2099 - ja aber dann werden die nicht vorhandenen Pakete nicht übersprungen, sondern apt bricht ab.
Kano - 19.05.2011, 11:59 Uhr
Titel:
Wennst die -m option nimmst könnt es gehen.
TheOne - 19.05.2011, 18:27 Uhr
Titel:
@Kano: also -m hat im März laut stalin2000 nicht funktioniert Winken

@stalin2000: so hier die vorgekaute Lösung von Mutti Sehr glücklich
Code:
root@tux-tablet:/home/max/stalin# cat list.txt
icedove
gibtesnicht
iceweasel
root@tux-tablet:/home/max/stalin# for x in $(cat list.txt); do apt-cache show $x &> /dev/null && apt-get install $x; done;
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut       
Statusinformationen werden eingelesen... Fertig
icedove ist schon die neueste Version.
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 2 nicht aktualisiert.
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut       
Statusinformationen werden eingelesen... Fertig
iceweasel ist schon die neueste Version.
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 2 nicht aktualisiert.
wenn das immer noch nicht das ist was du willst, dann säuber einfach deine Package List, dann klappt der Befehl von towo2099 oder lerne einfach Bash Scripting und bau dir selber ne Lösung zusammen Winken

TheOne
stalin2000 - 22.05.2011, 14:37 Uhr
Titel:
Super, danke!!!!!!!!!!!
stalin2000 - 25.05.2011, 08:52 Uhr
Titel:
Update:

Diese Lösung hat den "Streßtest" unter realen Bedingungen übrigens leider nicht bestanden. Bei einer großen Menge an Paketen, wird zig mal nach einer Bestätigung gefragt, wo man mit j - bestätigen muß, damit es weiterläuft.
Kann man die Rückfragen bei Apt-get auch irgendwie verhindern?
sc - 25.05.2011, 09:21 Uhr
Titel:
Hallo stalin2000,

ich will ja nicht unhöflich sein, aber schaust du auch ab und zu in die Manpage?

Ich habs jetzt nicht ausprobiert, aber das hört sich doch fast nach dem an, was du sucht...

Code:
-y, --yes, --assume-yes
           Automatisches »Ja« auf Anfragen; Versucht »Ja« auf alle Anfragen zu antworten und ohne Eingaben zu laufen. Wenn eine unerwünschte
           Situation eintritt, wie ein gehaltenes Paket zu ändern, ein nicht authentifiziert Paket zu installieren oder ein essentielles Paket
           zu entfernen, dann wird apt-get abgebrochen. Konfigurationselement: APT::Get::Assume-Yes.


Gruß

sc
miltonjohn - 25.05.2011, 12:18 Uhr
Titel:
[quote="miltonjohn"]
Code:
  apt-get install -y 


/quote]
Kano - 25.05.2011, 12:41 Uhr
Titel:
Man kann auch die Liste erstmal aufräumen:
Code:
rm -f liste-installierbar.txt
for x in $(<liste-komplett.txt); do apt-cache show $x >/dev/null 2>&1 && echo $x >> liste-installierbar.txt; done

analog kriegt man auch ne liste wo nicht installierbar ist:
Code:
rm -f liste-nicht-installierbar.txt
for x in $(<liste-komplett.txt); do apt-cache show $x >/dev/null 2>&1 || echo $x >> liste-nicht-installierbar.txt; done

Im prinzip sind die listen aber trotzdem viel zu gross. Zudem wirst wohl einige libs installieren, die man gar nicht so braucht. Ein
Code:
grep -v ^lib liste-installierbar.txt > liste-installierbar-ohne-libs.txt

würde immerhin das offensichtlichste löschen. Ich würde komplette paketlisten eines alten systems niemals verwenden. diese installieren einfach zuviel müll.
TheOne - 25.05.2011, 18:34 Uhr
Titel:
@sc: das ist nicht unhöflich, im Gegenteil so lernt stalin2000 hoffentlich dazu und spart sich die nächste Frage durchs manpage lesen Winken

@stalin2000: ich plädiere langsam echt dafür, dass du deine Paketliste aufräumst und pflegst
apt-get fragt nicht ohne Grund bei bestimmten Dingen nach, alles einfach per yes durch zu winken kann auch mal in die Hose gehen und dir Sachen bescheren die du so garnicht haben wolltest.
stalin2000 - 26.05.2011, 08:17 Uhr
Titel:
Hallo Ihr, danke für die Antworten.

Meine Paketliste umfaßt im Übrigen nur wenige lib-Pakete, fast nur GUI-Programme und wird von mir auch ordentlich gepflegt und aktuell gehalten.
Das sind aber auch eine ganze Menge Pakete, etwa 135, die dann ja auch wiederum zum Teil Abhängigkeiten mitinstallieren.

Von diesen Listen habe ich drei Stück. Eine Minimalvariante, eine mittelgroße und eine sehr große (mit einigen libs für das Kompillieren von z.B. pana oder sane dabei).

Ich finde dieses Vorgehen durchaus sinnvoll. Wenn ich einen neuen Rechner vor mir habe,, brauche ich nur einen befehl einzugeben und alles notwendige wird installiert.
Alle Zeiten sind GMT + 1 Stunde
PNphpBB2 © 2003-2007