21. Oktober 2004, Rev. 1.2Neue Funktionen und Optionen in Portage 2.0.51
Portage 2.0.51 bringt zahlreiche neue Funktionen und Optionen mit, die wir Ihnen
in diesem Dokument vorstellen möchten.
Neue Funktionen und Optionen in Portage 2.0.51
1.
Einleitende Worte ...
1.1 Portage 2.0.51 Status
Portage 2.0.51 wurde am 20. Oktober freigegeben. Wir stellen an dieser Stelle
die wichtigsten Änderungen und Neuerungen zusammen.
Bevor Sie sich die neuen Funktionen von Portage-2.0.51 anschauen, sollten
Ihnen die von 2.0.50 bekannt sein - bitte lesen Sie zunächst
Neue Portage Features [1], nie
verkehrt ist ein Blick ins Changelog [2].
1.2 Zusammenfassung für ganz Eilige
- Deutlich schnellere Berechnung der Abhängigkeiten
-
/var/cache/edb/world jetzt in /var/lib/portage/world
-
/var/cache/edb/virtuals wird nicht mehr benutzt, Virtuals werden dynamisch berechnet
-
emerge --inject ist nicht mehr unterstützt
-
emerge --newuse world installiert Pakete mit geänderten USE Flags neu
- neue FEATURES autoconfig, collision-protect, gpg, maketest, candy
2.
Änderungen
2.1 Wo ist /var/cache/edb/{virtuals,world}?
Die alte World Datei (die Datei, welche alle Pakete enthält, die explizit per
emerge installiert wurden) befindet sich jetzt in /var/lib/portage/world.
Das alte World File (/var/cache/edb/world) ist nun ein symbolischer Link.
/var/cache/edb/virtuals existiert ebenfalls nicht mehr, die
Virtuals werden fortan dynamisch berechnet. Wollen Sie Änderungen an den
virtuellen Paketen vornehmen, können Sie von nun an
/etc/portage/profile/virtuals benutzen.
2.2 Warum funktioniert emerge --inject nicht mehr?
--inject ist als deprecated markiert und kann nicht mehr benutzt
werden. Als Ersatz für --inject benutzt man die in Portage 2.0.51 eingeführte
Datei /etc/portage/package.mask und die neue
/etc/portage/profile/package.provided, allerdings gilt es hier ein paar
Besonderheiten zu beachten.
In seltenen Fällen kann es vorkommen, dass Software nicht über Portage verfügbar
ist. Wenn Sie nicht selbst ein ebuild schreiben wollen (oder können), können Sie
das Paket anderweitig installieren - z.B. durch Herunterladen und Entpacken
einer Binärdatei oder Kompilieren der Quelltexte von Hand. In solch einem Fall war
emerge inject nützlich, um Portage mitzuteilen, dass das Paket
installiert ist.
In Portage 2.0.51 tragen Sie stattdessen das Paket in
/etc/portage/profile/package.provided ein. Portage sorgt nun dafür, dass
die Abhängigkeiten für dieses Paket erfüllt werden.
|
Das Paket wird bei der Paketsuche (emerge --search) nicht als installiert
markiert. Portage kümmert sich aber darum, dass die Abhängigkeiten erfüllt sind.
|
Befehlsauflistung
2.1: Beispiel: Paket wurde nicht über Portage installiert
# emerge inject sys-kernel/development-sources-2.6.9
# echo "sys-kernel/development-sources-2.6.9" >> /etc/portage/profile/package.provided
emerge inject konnte auch benutzt werden, um das Updaten eines
(per emerge) installierten Pakets zu verhindern.
In diesem Fall hilft package.provided nicht weiter. Anstelle dessen
tragen Sie das Paket von jetzt an in /etc/portage/package.mask ein.
Natürlich können Sie ">", ">=" usw. wie gewohnt nutzen, um mehrere Versionen
auszuschließen. Falls sich Abhängigkeiten geändert haben, tragen Sie das Paket
auch in /etc/portage/profile/package.provided ein.
Befehlsauflistung
2.2: Beispiel: Paket soll nicht aktualisiert werden
# emerge inject x11-base/xorg-x11-6.7.0-r7
# echo "x11-base/xorg-x11-6.7.0-r7" >> /etc/portage/package.mask
Einen Sonderfall bilden Pakete, bei denen die installierte Version aus dem
Portage Baum entfernt wurde. Hier hilft das Eintragen der neuen Version in
package.mask nicht, um ein Update (bzw. Downgrade) zu
verhindern.
Zunächst sollten Sie jedoch nachschauen, warum das Paket nicht mehr in
Portage vorhanden ist. Ist es z.B. wegen einer bekannten Sicherheitslücke
verschwunden, sollten Sie das Paket aktualisieren. Hinweise auf den Entfernungsgrund
gibt es normalerweise im Changelog (im Verzeichnis des ebuilds zu finden, z.b.
/usr/portage/sys-kernel/gentoo-dev-sources/Changelog), in Bugzilla oder den Sicherheitshinweisen.
Wollen Sie das Paket trotz allem nicht aktualisieren, können Sie das alte ebuild
aus /var/db/pkg/ (oder aus dem CVS Repository von www.gentoo.org) in ein sogenanntes Overlay
Verzeichnis (normalerweise /usr/local/portage, siehe man make.conf)
kopieren und dann wie oben verfahren.
2.3 Wieso werden einige USE-Flags in der --verbose Anzeige mit einem Stern* gekennzeichnet?
Befehlsauflistung
3.3: Beispiel
# 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
Ein Sternchen hinter einem USE Flag weist darauf hin, dass bei der Installation dieses
Paketes das USE Flag anders gesetzt war.
3.
Neue Funktionen und Optionen
3.1 emerge --newuse world
emerge --newuse world ist eine bequeme Möglichkeit, all diejenigen Pakete neu
zu übersetzen, die Sie mit anderen USE-Flags als den derzeitigen installiert
haben.
Befehlsauflistung
1.1: Beispiel
# emerge --newuse -uD world -av
3.2 Neue FEATURES
In Portage-2.0.51 gibt es einige neue Optionen, die der Features Variable
in /etc/make.conf hinzugefügt werden können. Lesen Sie hierzu auch
man make.conf.
FEATURES="autoconfig" passt weder automatisch die Konfigurationsdateien
an, noch konfiguriert es irgendwelche Pakete nach der Installation. Stattdessen
hilft es die Nutzung von Gentoo auf eingebetteten Systemen (Embedded Systems) zu
verbessern.
FEATURES="gpg" aktiviert die GPG-Signierung von Ebuilds. Damit sind jetzt
nicht nur die Pakete auf den Download-Spiegeln durch MD5-Checksummen prüfbar,
auch die Integrität der Ebuilds auf den rsync-Spiegeln lässt sich kontrollieren.
Wählen können Sie zwischen FEATURES="gpg", FEATURES="gpg strict" und
FEATURES="gpg severe", wobei die Sicherheitsüberprüfungen von links nach
rechts strenger werden.
FEATURES="collision-protect" verhindert, dass Dateien eines Pakets Dateien
eines anderen überschreiben können. So interessant und wichtig sich das anhört,
beansprucht es doch sehr viele Ressourcen und kann währends des bootstrappings
nicht benutzt 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 FEATURES="maketest" aktiviert, wird entweder die "make check"
Funktion des Pakets aufgerufen oder die pkg_check Funktion des ebuilds, falls
vorhanden.
FEATURES="candy" ändert die Fortschrittsanzeige ("spinner") beim Berechnen der Abhängigkeiten. Bilden Sie sich am besten selbst ein Urteil:
Befehlsauflistung
2.2
# FEATURES=candy emerge -p world
3.3 Detailverbesserungen
Ein paar Detailverbesserungen gibt es in den Fehler-/Warnmeldungen ...
Befehlsauflistung
3.3: ... bei Fehlern während des Kompilierens
!!! 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.
Befehlsauflistung
3.4: ... bei der Nutzung von --upgradeonly
# emerge --upgradeonly world
*** Warning: --upgradeonly is a deprecated option in portage-2.0.51_rc1
*** and will likely be removed in a future version.
Befehlsauflistung
3.5: ... bei emerge /pfad/zum/name.ebuild
# emerge /path/to/ebuild
emerging by path implies --oneshot... adding --oneshot to options.
*** emerging by path is broken and may not always work!!!
Befehlsauflistung
3.6: ... bei Entfernung wichtiger Pakete
# emerge unmerge portage
!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage'
!!! This could be damaging to your system.
>>> Waiting 10 seconds before starting...
>>> (Control-C to abort)...
Press Ctrl-C to Stop in: 10 9 8 7 6 5 4 3
4.
Installation
Falls Sie ihr System regelmäßig aktualisieren, wird die neue Version von Portage
automatisch installiert. Genauso problemlos können Sie es manuell aktualisieren.
Befehlsauflistung
1.1: Installation von Portage 2.0.51
# emerge sync
# emerge portage
# etc-update
Damit sind Sie aber noch nicht fertig. Konsequenterweise sollten Sie Pakete, die
mittels emerge --inject eingespielt worden sind, in
package.provided eintragen und dann deinstallieren. Das erledigen
Sie am besten mit einem Skript [4].
Befehlsauflistung
1.2: Auflisten von mit --inject installierten Paketen
# wget -P /usr/local/bin http://www.stud.uni-karlsruhe.de/~uxhz/gentoo/misc/einjected
# chmod +x /usr/local/bin/einjected
# einjected
Falls Pakete aufgelistet werden, können diese in /etc/portage/profile/package.provided
eingetragen und danach deinstalliert werden. einjected --move erledigt beides automatisch.
5.
Appendix
[1] http://www.gentoo.de/main/de/portage-2.0.50.xml
[2] less /usr/share/doc/portage-2.0.51/ChangeLog.gz
[3] http://thread.gmane.org/gmane.linux.gentoo.devel/21204
[4] http://www.stud.uni-karlsruhe.de/~uxhz/gentoo/misc/einjected
[5] http://www.gentoo.org/news/20041021-portage51.xml
|