View previous topic :: View next topic |
Author |
Message |
manuels Advocate
Joined: 22 Nov 2003 Posts: 2146 Location: Europe
|
Posted: Wed Feb 07, 2007 7:46 pm Post subject: Neues Gentoo aufsetzen |
|
|
Hallo,
ich will mein Gentoo updaten, aber nebenbei auf jeden Fall ein 100% lauffähiges Gentoo behalten.
Also installier ich Gentoo gerade von Grund auf (um den alten Balast los zu werden) auf neuen Parititonen nebenbei neu.
Dazu hab ich zwei Fragen:
- Es gibt doch so ein "emerge --deep --update world"-Script, das, falls das Update eines Ebuilds fehlschlägt, mit dem nächsten beginnt.
Ich find den Link nicht wieder. Hat jemand von euch den?
Kann ich damit auch die Programme, die ich emergen will, in die /var/lib/portage/portage eintragen und dann das Script aufrufen?
Dann macht er wenigstens weiter, wenn es einen Fehler gab.
- Was haltet ihr davon einen Bash-Alias "emerge -Cav"="emerge --depclean -av" zu setzten? Dann würde der ganze "zuzügliche Müll" automatisch mitgelöscht? Sollte man sowas machen oder lieber doch nich?
Vielen Dank für eure Infos und Meinungen
Manuel _________________ Build your own live cd with catalyst 2.0! |
|
Back to top |
|
|
SinoTech Advocate
Joined: 20 Mar 2004 Posts: 2579 Location: Neunkirchen / Saarland / Germany
|
Posted: Wed Feb 07, 2007 7:51 pm Post subject: Re: Neues Gentoo aufsetzen |
|
|
manuels wrote: | Hallo,
ich will mein Gentoo updaten, aber nebenbei auf jeden Fall ein 100% lauffähiges Gentoo behalten.
Also installier ich Gentoo gerade von Grund auf (um den alten Balast los zu werden) auf neuen Parititonen nebenbei neu.
Dazu hab ich zwei Fragen:
- Es gibt doch so ein "emerge --deep --update world"-Script, das, falls das Update eines Ebuilds fehlschlägt, mit dem nächsten beginnt.
Ich find den Link nicht wieder. Hat jemand von euch den?
Kann ich damit auch die Programme, die ich emergen will, in die /var/lib/portage/portage eintragen und dann das Script aufrufen?
Dann macht er wenigstens weiter, wenn es einen Fehler gab.
[...]
|
Du kannst dir ganz einfach eine Datei anlegen in der du die Pakete, die du installieren willst, eintragen kannst (möglicherweise auch die world Datei aus deiner alten Installation).
Und dann ...
Code: |
$ for i in `cat file_with_packages`; do emerge $i; done
|
Das installiert dir alle Pakete die in der Datei angegeben sind. Sollte ein Paket fehlschlagen, macht es einfach beim nächsten weiter.
Cheers,
Sino _________________ Help to answer the unanswered |
|
Back to top |
|
|
moe Veteran
Joined: 28 Mar 2003 Posts: 1289 Location: Potsdam / Germany
|
Posted: Wed Feb 07, 2007 8:21 pm Post subject: |
|
|
Hmm, dabei bleibt ja die Reihenfolge unberücksichtigt, könnte das nicht ein Problem sein?
@manuels: Meinst du Libbys nightmerge?
Gruss Maurice |
|
Back to top |
|
|
SinoTech Advocate
Joined: 20 Mar 2004 Posts: 2579 Location: Neunkirchen / Saarland / Germany
|
Posted: Wed Feb 07, 2007 8:44 pm Post subject: |
|
|
moe wrote: | Hmm, dabei bleibt ja die Reihenfolge unberücksichtigt, könnte das nicht ein Problem sein?
[...]
|
Nö. Denn da du für jedes Paket einzeln "emerge" aufrufst, werden die Abhängigkeiten jeweils extra berechnet und installiert. Es könnte höchstens vorkommen das ein Paket doppelt installiert wird, nämlich einmal direkt, weil man es explizit in der Datei angegeben hat, und ein zweitesmal weil es als Abhängigkeit eines anderen Paketes installiert wird (Für den Fall das es nicht schon vorher installiert wurde). Wenn man nun aber beispielsweise die World Datei aus der alten Installation nimmt, dürfte dieses doppelte installieren kaum vorkommen, da Pakete die als Abhängigkeit installiert wurden, nicht in die world Datei aufgenommen werden. Insofern gilt:
- Paket in world file -> Das Paket ist keine Abhängigkeit eines anderen
- Paket nicht in world file -> Paket wird entweder gar nicht, oder nur als Abhängigkeit eines anderen einmal installiert.
Das dürfte so im großen und ganzen immmer passen. Pakete die doppelt installiert werden, gibt es dann entweder keine oder bleiben die Ausnahme.
Cheers,
Sino _________________ Help to answer the unanswered |
|
Back to top |
|
|
slick Bodhisattva
Joined: 20 Apr 2003 Posts: 3495
|
Posted: Wed Feb 07, 2007 8:52 pm Post subject: |
|
|
SinoTech wrote: | Es könnte höchstens vorkommen das ein Paket doppelt installiert wird, nämlich einmal direkt, weil man es explizit in der Datei angegeben hat, und ein zweitesmal weil es als Abhängigkeit eines anderen Paketes installiert wird (Für den Fall das es nicht schon vorher installiert wurde). |
einfacher Workaround:
Code: | for i in `cat file_with_packages`; do emerge --usepkg --buildpkg $i; done |
|
|
Back to top |
|
|
Finswimmer Bodhisattva
Joined: 02 Sep 2004 Posts: 5467 Location: Langen (Hessen), Germany
|
Posted: Wed Feb 07, 2007 9:46 pm Post subject: |
|
|
emerge `cat $file` -av ist das Beste, denn dann berücksichtigt Portage sofort alle Pakete.
Tobi _________________ Bitte auf Rechtschreibung, korrekte Formatierung und Höflichkeit achten!
Danke |
|
Back to top |
|
|
manuels Advocate
Joined: 22 Nov 2003 Posts: 2146 Location: Europe
|
Posted: Wed Feb 07, 2007 10:00 pm Post subject: |
|
|
Wunderbar. Danke für eure Antworten.
Kurze frage noch:
Wie kann ich mir alle Pakete auflisten lassen, die in mehreren Slots installiert sind?
Tschö mit ö
Manuel _________________ Build your own live cd with catalyst 2.0! |
|
Back to top |
|
|
Finswimmer Bodhisattva
Joined: 02 Sep 2004 Posts: 5467 Location: Langen (Hessen), Germany
|
Posted: Wed Feb 07, 2007 10:04 pm Post subject: |
|
|
Ich kenn nur: emerge --prune -pv
Dann hast du sie alle...
Tobi _________________ Bitte auf Rechtschreibung, korrekte Formatierung und Höflichkeit achten!
Danke |
|
Back to top |
|
|
SinoTech Advocate
Joined: 20 Mar 2004 Posts: 2579 Location: Neunkirchen / Saarland / Germany
|
Posted: Wed Feb 07, 2007 10:33 pm Post subject: |
|
|
Falls du "eix" installiert hast, kannst du dir mit dem "-i" switch Pakete anzeigen lassen die in mehreren Versionen (also slottet) installiert sind.
Code: |
[I] app-crypt/gnupg
Available versions:
(0) 1.4.5-r2 1.4.6 ~2.0.1-r1 ~2.0.1-r2 ~2.0.1-r3 ~2.0.2
(1.9) 1.9.21 ~1.9.21-r1 ~1.9.22 ~1.9.94 ~2.0.0 ~2.0.1
Installed versions: 1.4.6(14:20:09 12/25/06)(X -bindist bzip2 -curl -ecc -idea -ldap -linguas_ru nls readline -selinux -smartcard -static -usb zlib)
1.9.21(1.9)(15:21:30 07/17/06)(X -gpg2-experimental -ldap nls -selinux -smartcard)
Homepage: http://www.gnupg.org/
Description: The GNU Privacy Guard, a GPL pgp replacement
[U] app-emulation/emul-linux-x86-java
Available versions:
(1.4.2) 1.4.2.03-r1 1.4.2.03-r2
(1.5) 1.5.0.08 1.5.0.10
(1.6) ~1.6.0
Installed versions: 1.4.2.03-r1(1.4.2)(00:24:01 03/22/06)(nsplugin)
1.5.0.10(1.5)(03:55:06 02/05/07)(X alsa nsplugin)
Homepage: http://java.sun.com/j2se/1.6.0/
Description: 32bit version Sun's J2SE Development Kit
[I] app-text/docbook-xml-dtd
Available versions:
(4.1.2) 4.1.2-r6
(4.2) 4.2-r1 ~4.2-r2
(4.3) 4.3 ~4.3-r1
(4.4) 4.4-r1
Installed versions: 4.1.2-r6(4.1.2)(15:13:48 03/25/06) 4.4-r1(4.4)(19:21:03 12/23/06)
Homepage: http://www.docbook.org/xml/index.html
Description: Docbook DTD for XML
[...]
|
Wobei ich die Ausgabe etwas unübersichtlich finde, da manchmal die mehrfach installierten Pakete nicht untereinander aufgeführt sind (wie zum Beispiel bei "gnupg" oder "emul-linux-x86-java") sondern nebeneinander (zum Beispiel "docbook-xml-dtd").
Cheers,
Sino _________________ Help to answer the unanswered |
|
Back to top |
|
|
schmutzfinger Veteran
Joined: 26 Oct 2003 Posts: 1287 Location: Dresden/Germany
|
Posted: Wed Feb 07, 2007 11:41 pm Post subject: |
|
|
Finswimmer wrote: | emerge `cat $file` -av ist das Beste, denn dann berücksichtigt Portage sofort alle Pakete.
|
Den Syntax kenne ich nicht aber das sieht so aus wie einmal emerge aufrufen. Das hat genau den Nachteil das die komplette Installation mitten in der Nacht stehen bleibt weil es ein Problem gibt. Und genau in solchen Fällen sollte das fehlerhafte Paket einfach übersprungen werden. |
|
Back to top |
|
|
SinoTech Advocate
Joined: 20 Mar 2004 Posts: 2579 Location: Neunkirchen / Saarland / Germany
|
Posted: Thu Feb 08, 2007 12:29 am Post subject: |
|
|
Ach ja, wenn man zusätzlich wissen will ob und bei welchem Paket was schief gegangen ist, dann kann man das folgende Skript benutzen (den code von Slick habe ich dabei berücksichtigt)
Code: |
for i in `cat file_with_packages`
do
emerge --usepkg --buildpkg $i
if [[ $? -eq 1 ]]
then
echo "Package $i failed to install." >> ~/failed_merges.txt
fi
done
|
Die Fehlerausgabe berücksichtigt leider nur die Pakete die explizit zum emergen angegeben wurden (also die, die in der Datei stehen). Abhängigkeiten leider nicht . Sollte aber nicht weiter schlimm sein, denn wenn eine Abhängigkeit nicht installiert werden kann, dann geht auch das angegebene Paket nicht. am nächsten Tag kann man sich dann genauer anschauen woran es liegt.
Cheers,
Sino _________________ Help to answer the unanswered |
|
Back to top |
|
|
Finswimmer Bodhisattva
Joined: 02 Sep 2004 Posts: 5467 Location: Langen (Hessen), Germany
|
Posted: Thu Feb 08, 2007 7:11 am Post subject: |
|
|
schmutzfinger wrote: | Finswimmer wrote: | emerge `cat $file` -av ist das Beste, denn dann berücksichtigt Portage sofort alle Pakete.
|
Den Syntax kenne ich nicht aber das sieht so aus wie einmal emerge aufrufen. Das hat genau den Nachteil das die komplette Installation mitten in der Nacht stehen bleibt weil es ein Problem gibt. Und genau in solchen Fällen sollte das fehlerhafte Paket einfach übersprungen werden. |
Dann nehmen wir halt nightmerge von Libby: nightmerge `cat $file` -av
Tobi _________________ Bitte auf Rechtschreibung, korrekte Formatierung und Höflichkeit achten!
Danke |
|
Back to top |
|
|
slick Bodhisattva
Joined: 20 Apr 2003 Posts: 3495
|
Posted: Thu Feb 08, 2007 7:36 am Post subject: |
|
|
SinoTech wrote: | Die Fehlerausgabe berücksichtigt leider nur die Pakete die explizit zum emergen angegeben wurden (also die, die in der Datei stehen). Abhängigkeiten leider nicht . |
Das sollte sich einfach realisieren lassen indem man die Ausgabe per tee in eine tmpfile schreibt und bei einem Fehler die letzten Zeilen mit tail mit ins Fehlerlog schreibt. 20 Zeilen sollten dick reichen um zu sehen welches Paket das war und ggf. sogar den Fehler.
ungetestet schnell zusammengeschrieben:
Code: | for i in `cat file_with_packages`
do
emerge --usepkg --buildpkg $i | tee /tmp/emerge
if [[ $? -eq 1 ]]
then
echo "---------------------------------------" >> ~/failed_merges.txt
echo "Package $i failed to install." >> ~/failed_merges.txt
tail -n 20 /tmp/emerge >> ~/failed_merges.txt
fi
done |
Viel komplexer sollte man es aber nicht machen, dafür gibts ja die ganzen Logging-Features von portage.
manuels wrote: | Wie kann ich mir alle Pakete auflisten lassen, die in mehreren Slots installiert sind? |
Ich meine qlist aus den portage-utils kann das auch, bin mir aber gerade nicht sicher und kann auch @work nicht nachschauen. |
|
Back to top |
|
|
|