Portage-2.0.51 ist seit dem 21. Oktober "stable". Hier die wichtigsten Änderungen zur 2.0.50er Version. Die Funktionen von 2.0.50 sollten bekannt sein - bitte zuerst [1] lesen. Eine Installations- bzw. Updateanleitung gibt es weiter unten.
Zusammenfassung für ganz Eilige:
- Deutlich schnellere Berechnung der Abhängigkeiten
/var/cache/edb/world
/var/lib/portage/world
/var/cache/edb/virtuals
nicht mehr benutzt, dynamisch berechnet
emerge inject
deprecated
emerge --newuse installiert Pakete mit geänderten USE Flags neu
neue FEATURES "autoconfig", "collision-protect", "gpg", "maketest", "candy"
Die alte world Datei, also die Datei, die alle Pakete enthält, die explizit per emerge installiert wurden, befindet sich jetzt in /var/lib/portage/world. Es gibt einen symbolischen Link in /etc/portage/sets/world, der auf die neue Datei zeigt - behauptet zumindest die Dokumentation, bei mir gibt es nur das Verzeichnis. Stattdessen hat sich die alte /var/cache/edb/world in einen Symlink verwandelt.
Auch /var/cache/edb/virtuals verschwindet und wird fortan dynamisch berechnet. Will man Änderungen an den virtuellen Paketen vornehmen, kann man dafür /etc/portage/profile/virtuals benutzen.
Warum funktioniert emerge inject nicht mehr?
--inject ist jetzt als "deprecated" markiert und kann nicht mehr benutzt werden. Als Ersatz für --inject gibt es die Datei /etc/portage/package.provided, allerdings gibt es hier ein paar Besonderheiten zu beachten.
- Wenn man inject verwenden möchte, weil man das Paket aus anderer Quelle installiert hat (z.b. Binärdatei heruntergeladen, Quellen selbst kopiert):
In diesem Fall trägt man das Paket in der Form <cat>/<pkg>-<version> in /etc/portage/package.provided ein.
Wichtig: Das Paket wird bei der Paketsuche (emerge --search) dann trotzdem nicht als installiert markiert. Portage kümmert sich aber darum, dass die Abhängigkeiten erfüllt sind. - Wenn man inject verwenden möchte, um das Update eines Pakets zu verhindern:
Anstelle dessen das Paket in /etc/portage/package.mask eintragen. Natürlich können ">", ">=" usw. benutzt werden, um mehrere Versionen auszuschließen - Wenn man inject verwenden möchte, um das Update eines Pakets zu verhindern, das aus dem Portage Tree entfernt wurde:
Zunächst sollte man nachschauen, warum das Paket nicht mehr in Portage vorhanden sind. Ist es z.B. wegen einer bekannten Sicherheitslücke verschwunden, sollte man das Paket updaten. Hinweise auf den Entfernungsgrund gibt es normalerweise im Changelog (im Verzeichnis des ebuilds) oder auch in Bugzilla, ViewCVS oder den Sicherheitshinweisen. Will man das Paket trotz allem nicht updaten, kann man das alte ebuild aus /var/db/pkg/<cat>/<pkg>/ oder ViewCVS in das PORTDIR_OVERLAY Verzeichnis (normalerweise /usr/local/portage/<cat>/<pkg>) kopieren und dann wie oben verfahren.
Siehe FEATURES="maketest" weiter unten.
Wieso werden einige USE-Flags in der --verbose Anzeige mit einem Stern* bzw. farblich gekennzeichnet?
Code: Select all
# emerge -pv gnupg
These are the packages that I would merge, in order:
Calculating dependencies ...done!
[ebuild R ] app-crypt/gnupg-1.2.4 -X* -caps -debug -idea -ldap -nls -static 0 kB
Total size of downloads: 0 kB
Gibt es auch neue Funktionen?
--newuse zum Beispiel. Das ist eine bequeme Möglichkeit, all diejenigen Pakete neu zu übersetzen, die man mit anderen USE-Flags als den derzeitigen installiert hat. Beispiel:
Code: Select all
emerge --newuse -uD world -avFEATURES="autoconfig" passt weder automatisch die Konfigurationsdateien an, noch konfiguriert es irgendwelche Pakete nach der Installation. Stattdessen wird es wohl benötigt, wenn man Gentoo auf eingebetteten Systemen (embedded systems) benutzt.
FEATURES="gpg" wird für die meisten interessanter sein, es aktiviert die GPG-Signierung von Ebuilds. Damit sind jetzt nicht nur die Pakete auf den Download-Spiegeln durch MD5-Checksummen geprüft, sondern auch die ebuilds auf den Rsync-Spiegeln. Wählen kann man zwischen FEATURES="gpg", FEATURES="gpg strict" und FEATURES="gpg severe", wobei die Sicherheitsüberprüfungen von links nach rechts strenger werden.
FEATURES="maketest" erlaubt ebuilds, nach dem Kompilieren einige Tests durchzuführen. So kann z.B. überprüft werden, ob Datei xy tatsächlich erstellt wurde. Ist "maketest" aktiviert, wird entweder die "make check" Funktion des Pakets aufgerufen oder die pkg_check Funktion des ebuilds, falls vorhanden.
FEATURES="candy" - Ändert den "spinner" beim Berechnen der Abhängigkeiten. Am besten kurz ausprobieren und selbst entscheiden, ob man es mag:
Code: Select all
FEATURES=candy emerge -p worldEin paar Detailverbesserungen gibt es in den Fehler-/Warnmeldungen:
Wie installiere ich es?[...]
!!! ERROR: dev-java/sun-j2me-1.0.4.01 failed.
!!! Function src_unpack, Line 26, Exitcode 0
!!! (no error message)
!!! If you need support, post the topmost build error, NOT this status message.
# emerge --upgradeonly world
*** Warning: --upgradeonly is a deprecated option in portage-2.0.51_rc1
*** and will likely be removed in a future version.
Die Installation ist einfach:
Code: Select all
emerge sync
emerge portage
etc-update
Code: Select all
wget -P /usr/bin http://www.stud.uni-karlsruhe.de/~uxhz/gentoo/misc/einjected
chmod +x /usr/bin/einjected
einjected
Ergänzungen, Korrekturen etc. bitte posten.
[1] http://www.gentoo.de/main/de/portage-2.0.50.xml
[2] /usr/share/doc/portage-2.0.51/ChangeLog.gz
[3] http://thread.gmane.org/gmane.linux.gentoo.devel/21204
[4] http://dev.gentoo.org/~swift/portage.html
[5] http://www.stud.uni-karlsruhe.de/~uxhz/ ... /einjected





