Allgemein
Knowledge Base
- Neue Struktur (In Arbeit)
- Computertechnisches
Community
Privat
Der Portage-Tree enthält alle Informationen zu allen installierbaren Softwarepaketen, deshalb muss er regelmäßig aktualisiert werden. Die Software, die man mit emerge
installieren kann ist maximal so aktuell wie der portage-Tree.
Zuerst einen neuen portage snapshot tree manuell von snapshots downloaden.
Dann den alten Snapshot löschen (Achtung, das löscht auch evtl. vorher mühsam heruntergeladene Source-pakete, wenn diese nicht gelöscht werden sollen darf man das Verzeichnis /usr/portage/distfiles
nicht löschen!)
Dann neuen Snapshot entpacken
und den portage-Cache neu aufbauen:
Eine schnelle Leitung vorausgesetzt (min. DSL 750 KBit), kann man den normalen Weg fahren, ein inkrementelles Update. Da eine Synchronisation stattfindet dauert es länger als 1.2.1, ist aber erheblich bequemer.
Erst mal gucken, was sich geändert hat:
-u
steht für update - alle Pakete aktualisieren-p
steht für pretend - nur simulieren, nicht wirklich updaten-v
steht für verbose - erweiterte Infos anzeigenworld
bezeichnet alle Pakete, die derzeit installiert sind
Der Befehl spuckt eine lange Liste mit zwischenzeitlichen Änderungen aus, z.B:
Jetzt kann man entweder gleich sämtliche Pakete neu installieren, dabei werden alle Pakete die in der Liste angezeigt werden neu geholt und dann auch übersetzt. Das dauert erfahrungsgemäß mehrere Stunden, auch auf schnellen Maschinen:
Oder man gibt einzelne Pakete von Hand an, dazu reicht es allerdings nur den Namen zu nennen. Beispiel für die beiden Dateien oben:
Gentoo schützt sich weitestgehend selbst. Es gibt eine Variable CONFIG_PROTECT
die eine Liste aller Verzeichnisse enthält, deren Inhalt von emerge
nicht automatisch geändert werden darf. Das ist in erster Linie für das /etc/
Verzeichnis interessant, den da befinden sich die Konfigurationsdateien unseres Systems.
Statt die mühsam editierten Konfigurationsdateien bei einem emerge
einfach zu überschreiben (die Pakete enthalten meinst eine generische Konfiguration, die aber oft noch fein-getunt werden muss), werden die Konf-Dateien der Pakete mit der Endung ._cfg000x_*
angelegt. Mit dem Tool etc-update
] können die verschiedenen Versionen der Konfigurationsdateien zusammengeführt werden.
Das Verzeichnis /etc/env.d
wird nicht gesichert. Sollten dort von Hand mal Änderungen vorgenommen worden sein, werden sie beim nächsten emerge
wieder rückgängig gemacht.
Es ist trotzdem nicht vergebens dort Änderungen vorzunehmen, man darf nur nicht vergessen sie mit
Um in Erfahrung zu bringen, von welchem Programm eine Datei angelegt wurde, mit
Sollte nach vielen emerges ein Programm nicht mehr laufen, nicht sofort rebooten(!)
revdep-rebuild
prüft alle installierten Programme und Libraries auf fehlende libs und defekte Abhängigkeiten und repariert dies, indem die betreffenden Pakete neu geemerg
d werden.
python-updater
starten! Erst danach darf die ältere Version gelöscht werden.
perl-cleaner
starten.
gcc-config -l
zeigt die installierten Compiler, gcc-config Nummer
um zu einem anderen Compiler
zu wechseln, danach source /etc/profile
starten. Ja, man kann auch einen älteren Compiler wieder nutzbar machen.
Wurde der gcc
erneuert hilft evtl. ein fix_libtool_files.sh <alte gcc nummer> falls z.B. bestimmte Libraries beim compilieren nicht mehr gefunden werden können.
Zu guter Letzt hilft evtl. ein reboot. Wenn Systemprogramme wie glibc, KDE oder Gnome geändert wurden, macht ein reboot sowieso Sinn. Man kann natürlich auch sämtliche Services von Hand neu starten - jede Wette: reboot geht schneller.
Wenn etwas wirklich nicht mehr geht, kann man immer noch im Gentoo-Forum nachforschen, vielleicht hat dort jemand eine Lösung.
Bevor ein Paket den stabilen Status bei Gentoo erreicht hat, gilt es als unstable und wird mit einem ~<architektur>
in den Keywords maskiert. Maskierte Pakete werden von emerge
ignoriert um sicherzustellen, dass auf dem System keine ungeprüften und möglicherweise nicht richtig lauffähigen Programme installiert werden.
Wenn man aber eine dieser ungeprüften Versionen unbedingt haben möchte (weil z.b.. nur diese Version Gerät xy unterstützt), kann man sie natürlich trotzdem installieren, indem man emerge
begreiflich macht, dass maskierte Pakete akzeptiert werden sollen. Für die x86 Plattform sieht das dann so aus:
Wer gucken möchte, welche neuen Versionen überhaupt existieren, kann dies mit
tun.
In der /etc/profile
die folgende Zeile einfügen:
Dann reicht ein
Dateien, die man immer in unstable Versionen haben will, sollten in /etc/portage/package.keywords
eingetragen werden.
Beispiel:
Kommentare sind erlaubt. Praktisch ist, dass geht auch emerge -up world
neuere '~' Pakete installiert und nicht wie sonst auf die letzte stabile Version downgraded.
Es kann allerdings sein, das die '~' Pakete noch andere neuere Pakete haben wollen, diese müssen dann auch händisch in die package.keywords
Liste mit aufgenommen werden, so lange bis emerge -up world
keine Fehler mehr ausgibt.''
Will irgendein Paket partout nicht, besteht auch die Möglichkeit das Programm selbst von Hand zu kompilieren und zu debuggen. Siehe in den GentooFAQs
Um die USE Variable zu ändern nimmt man am besten das Programm ufed
:
Zu jeder Variable steht kurz deren Zweck beschrieben, und man sieht sofort welche schon gesetzt ist.
Hinweis: das Programm ändert die /etc/make.conf
aber nur die Zeile mit USE="..."
in der die USE-Flags gesetzt werden.
Wurden irgendwelche USE-Flags nachträglich geändert kann man mit
Gentoo steht und fällt mit einer vernünftigen Einstellung der Use-Flags. Hier kann man an eingen wichtigen Beispielen welche use-Flags welche Softwarepakete in welcher Weise beeinflussen. Es sind alles Erfahrungswerte, deshalb wird die Liste nie auch nur ansatzweise vollständig. Die angegebenen Auswirkungen werden auch sicherlich nicht die einzigen sein!
Use-Flag | Auswirkung |
ffmpeg | Verhilft k3b (CD-Brennprogramm) u.a. zu der Fähigkeit, wma -Dateien auf Audio-CDs zu brennen
|
Ein guter Kandidat um sich Gentoo häufig und nachhaltig zu zerlegen ist in der /etc/make.conf
die Variable
AUTOCLEAN="yes"
zu setzen. Damit werden nur die jeweils neuesten Versionen der Pakete behalten, die älteren gelöscht. Das klingt zwar vernünftig ist bei Libraries jedoch fatal, da die abhängigen Programme immer noch gegen die alte Version kompiliert sind und nicht automatisch aktualisiert werden.
Der richtige Killer ist z.B. eine neue Version von DirectFB da das Teil sehr häufig gebraucht wird. Z.b. von mplayer, libSDL transcode unsw. Wenn es nun eine neuere DirectFB-Version gibt, wird die eine neue Library installiert, die alte Library libDirectDB.0.9.X gelöscht. Dabei werden aber die anderen Programme nicht auf den aktuellen Stand gebracht. Das sollte eigentlich revdep-rebuild
erledigen. Doch das schlägt gerne fehl, wenn '~' (unstable) Pakete installiert sind.
Also lieber etwas mehr Speicherplatz für Gentoo reservieren, dafür aber ein immer lauffähiges System haben.
Wenn ein neues sys-apps/portage
installiert wird, sollte man tunlichst auf das hören, was am Ende der Installation gesagt wird.
Deshalb empfielt es sich immer sys-apps/portage
alleine für sich zu installieren, damit die Meldungen nicht untergehen.
Das Portage-long enthält all die wichtigen Meldungen, die beim emergen mehrerer Pakete immer so schnell wegscrollen. Per default ist das Log deaktiiert, läßt sich aber leicht aktivieren.
Zuerst das Log-Verzeichnis anlegen
make.conf
folgende Zeile aktivieren (kommentarzeichen # entfernen):
PORT_LOGDIR="/var/log/portage"
fertig.
Guter Artikel, um portage zu beschleunigen Emerge beschleunigen.
Hier Lars' Senf dazu:
Jeder sollte einmal täglich
aufrufen
Die aktuell (Januar 2008) einfachste Möglichkeit ein Gentoo-System auf den aktuellen Stand zu bringen, ist mit dem update-world Script.
Viele Gentoo ebuilds sind mittlerweile so umgestellt worden, das sie nur noch einen Prozessor nutzen um die Sourcen zu bauen, richtige Abhängigkeiten zu setzen ist nicht jedermanns Sache und definitiv nicht einfach. Es gibt auch dafür Hilfe.
emerge -ua --deep --newuse --jobs 4 --keep-going y world Updated alle Pakete (auch welche, wo nur USE Flags geändert wurden).
So kann man in Ruhe einen Kaffee trinken gehen und der Rechner macht. Man muss allerdings auf die wenig hilfreichen Ausgaben beim Bauen verzichten, diese landen nur im Log /var/log/portage
.
ACCEPT_KEYWORDS="~x86" emerge udept
reicht auch. Doch Vorsicht, kann das System schrotten.