Portage richtig benutzen

Aus Gentoo Linux Wiki

Wechseln zu: Navigation, Suche
Dieser Artikel ist Teil der HOWTO Sammlung.
Installationsmethoden LiveCDs Kernel & Hardware Laptops & Notebooks Portage System Netzwerke & Services X Software Anderes alphabetischer HOWTO Index



Inhaltsverzeichnis

[Bearbeiten] Einleitung

Jeden Tag wieder erlebe ich im #gentoo.de-channel auf irc.freenode.net, Fragen wie: "Wie installiere ich eine alte Version eines Paketes?" oder "Was bedeutet `masked by ~keyword`?". Außerdem benutzen immer noch viel zu viele User die Variable ACCEPT_KEYWORDS beim Mergen von ~arch-Paketen.

Um diesen Fragen und Fehlern vorzubeugen, wird hier nun eine ausführliche Hilfe und HOWTO zum Thema Portage veröffentlicht.


[Bearbeiten] Das Portage

[Bearbeiten] Was ist der Tree?

Der Portage-Tree ist eine, in Kategorien gruppierte, Sammlung von sogenannten Ebuilds, welche die Instruktionen enthalten, um ein bestimmtes Paket zu konfigurieren, kompilieren und installieren. Außerdem enthalten diese Ebuilds eine Beschreibung des jeweiligen Pakets und Informationen darüber, wo die Quellen (der Sourcecode) zu finden sind, auf welchen Systemen (arches) das jeweilige Paket läuft und welche Abhängigkeiten es besitzt, also welche zusätzlichen Paket installiert werden müssen, damit das Paket einwandfrei kompiliert wird und nachher auch läuft.

[Bearbeiten] Wo befindet er sich?

Der Portage-Tree befindet sich per default im Verzeichnis "/usr/portage/" und enthält dort die einzelnen Kategorien als Verzeichnisse, in denen sich dann die Paketnamen, ohne Versionsnummern, als Unterverzeichnisse befinden. In diesen Paket-Verzeichnissen befinden sich dann die Ebuilds zu jeder einzelnen verfügbaren Version des entsprechenden Pakets.


[Bearbeiten] Aktualisieren des Portage

Der Portage-Tree muss natürlich ständig aktualisiert werden, damit man auf dem eigenen System immer die aktuellsten Ebuilds vorliegen hat und man so immer die neusten Versionen der einzelnen Programme installieren kann. Um den Portage Tree zu aktualisieren gibt es das Python-script `emerge`, welches allerdings nicht nur dazu da ist, um den Portage-Tree zu erneuern, aber dazu später mehr.

Um den Tree zu aktualisieren, muss natürlich erstmal unsere /etc/make.conf (siehe auch die Manpage von make.conf dazu) richtig konfiguriert sein. Wie das geht, wird unter obigem Link beschrieben. Geben wir nun in einem Terminal als `root` folgenden Befehl ein, um den Tree zu aktualisieren emerge --sync

Beachte: Dieser Befehl sollte nicht öfters am Tag ausgeführt werden. Optimal wäre ein Intervall von 24 Stunden. Wenn man diesen Befehl zu oft hintereinander ausführt, kann es sein, das man vom Mirror-Server für eine ganze Weile gesperrt wird!

Dein Rechner fängt nun an den lokalen Portage-Tree mit dem Portage-Tree auf dem aktuellen Mirror-Server zu vergleichen, lädt neuere oder aktualisierte Ebuilds herunter und löscht alte Ebuilds, die auf dem Server nicht mehr vorhanden sind. Dieser Vorgang kann je nach Rechner-Geschwindigkeit zwischen einer und ca. drei Minuten dauern.

[Bearbeiten] RSYNC_EXCLUDEFROM

Beim Aktualisieren des Portage-Trees fällt auf, dass Ebuilds übertragen werden, die nicht gebraucht werden. Durch setzen der Variable RSYNC_EXCLUDEFROM bei Portage Version 2.0 bzw. PORTAGE_RSYNC_EXTRA_OPTS bei Portage Version 2.1 in /etc/make.conf lässt sich festlegen, welche Paket-Kategorien beim nächsten emerge sync nicht mehr geupdatet werden sollen. Das schont nicht nur den Traffic, sondern eignet sich auch für Benutzer mit langsamen Verbindungen.

RSYNC_EXCLUDEFROM=/etc/portage/rsync_excludes

oder

PORTAGE_RSYNC_EXTRA_OPTS="--exclude-from=/etc/portage/rsync_excludes"

Danach lässt sich in der Datei /etc/portage/rsync_excludes Muster festlegen, die bei einem Treffer ausgelassen werden.

Datei: /etc/portage/rsync_excludes
;Ein ";" oder "#" am Anfang der Zeile stellt einen Kommentar dar
;Lässt .timestamp in jedem Verzeichnis aus
.timestamp
;Alle Dateien im eclass Verzeichnis werden benötigt
+/eclass/*
;Beispiel für KDE Benutzer
gnome*
xfce*
;Für Leute ohne TV-Card
media-radio
media-tv
;Some Stuff
licenses
fresco*
sec-*
app-gnustep*
dev-games
net-zope*
sys-cluster*


Wenn emerge die Abhängigkeiten nicht mehr auflösen kann, bricht emerge ab. Dann sollte mit +muster das Paket hinzugefügt werden. Außerdem sollten auch die Verzeichnisse metadata, eclass, packages, profiles, scripts nicht ausgeschlossen werden.

[Bearbeiten] system und world

Dein Gentoo-System besteht im Großen und Ganzen aus zwei Teilen: Der eine Teil heißt "system" und stellt alle Basis-Pakete dar, die du während der Installation installiert hast (also alles, wofür du nicht händisch `emerge` eingetippt hast!)

Der zweite, und für uns wichtigere Teil, heißt "world" und stellt alle Pakete dar, die du händisch, mit `emerge` installiert hast und noch installieren wirst. Die Pakete, die in "world" sind, die du also manuell installiert hast, sind alle im File "/var/lib/portage/world" aufgezeichnet, damit das System weiß, welche Pakete zu "world" gehören.

Folgender Befehl listet dir alle Pakete, die zu world gehören, auf:

cat /var/lib/portage/world

Wenn wir unser System updaten, updaten wir im Normalfall nur "world". Der Update-Vorgang schaut dann zuerst in dieses obige "World-File" und berechnet daraus, welche Abhängigkeiten zu diesen jeweiligen Paketen gehören. Dann schaut es im Portage-Tree nach den jeweils neueren Versionen und installiert diese.


[Bearbeiten] Das World-File

Manchmal kann es passieren, dass einem das World-File abhanden kommt und so keine Updates mehr möglich sind.

Portage bringt hierzu ein kleines Helferlein mit, das uns aus unseren bisher installierten Paketen ein neues Worldfile generiert:

regenworld

Sollte "regenworld" tatsächlich einmal nicht funktionieren, so gibt es im Gentoo-Forum einen Thread, der dann Abhilfe schafft: http://forums.gentoo.org/viewtopic.php?t=136627

[Bearbeiten] emerge

[Bearbeiten] Das Programm "emerge"

Das "Programm" emerge ist eigentlich "nur" ein Python Script. Es ist dazu da, um den Portage-Tree und die installierten oder auch nicht installierten Pakete zu verwalten. Mit emerge kann man Programme (Pakete) installieren, löschen, aktualisieren (updaten), Konflikte zwischen Paketen lösen, fehlende Abhängigkeiten nachinstallieren und vieles mehr. Man sieht, es ist ein sehr mächtiges Script und die Entwickler von Gentoo, beziehungsweise von Portage, haben sich sehr viel dabei gedacht als sie dieses Script schrieben. Die Manpage von emerge findet man übrigens auch hier.

[Bearbeiten] Wo liegt emerge?

Das Script liegt eigentlich in "/usr/lib/portage/bin/". Es befindet sich aber ein Symlink in "/usr/bin/", damit man nicht immer den ganzen Pfad angeben muss, um es auszuführen. Da "/usr/bin/" in der Variablen $PATH Deines Systems ist, reicht der simple Aufruf von `emerge [optionen]` um es auszuführen.


[Bearbeiten] Ein Paket installieren

[Bearbeiten] Der ganz normale und konfliktlose Einsatz

Nehmen wir einmal an, du möchtest ein simples, kleines Programm installieren, das keine besonderen Abhängigkeiten hat. Als Beispiel nehmen wir "rar", welches dazu dient ins Rar-Format zu packen:

emerge rar

Dies wäre der Aufruf von `emerge` um ein beliebiges Paket zu installieren. Man sagt dazu auch "ein Paket mergen". Wobei "mergen" aus dem englischen von "to merge" stammt, was soviel heißt wie "zusammenfügen".

Bei obigem Aufruf finge `emerge` sofort an "rar" zu "mergen", ohne nachzufragen. Meistens ist aber genau das nicht erwünscht, da man doch wenigstens noch kontrollieren will, ob das Paket nicht vielleicht schon installiert ist, ob es nicht vielleicht irgendwelche Abhängigkeiten hat, die wir vielleicht nicht wollen oder um festzustellen, ob es nur aktualisiert werden muss.

Um also `emerge` zu veranlassen uns diese Informationen alle anzuzeigen, müssen wir unseren obigen Aufruf etwas abändern:

emerge -a rar

Mit der Option "-a" lassen wir `emerge` nachfragen (--ask) ob wir das Paket wirklich installieren wollen. Dadurch bekommen wir auch schon eine Menge Informationen zu unserem Paket:

These are the packages that I would merge, in order:

Calculating dependencies ...done!
[ebuild  N    ] app-arch/rar-3.5.1  

Do you want me to merge these packages? [Yes/No] 

Bitte die Taste "N" drücken, damit das erstmal wieder abgebrochen wird!

Du siehst, es wird zum Beispiel die Version des Pakets angezeigt, das wir mergen wollen. Außerdem etwas, von dem wir noch nicht wissen, was es darstellen soll. Die Erklärung folgt sofort:

[ebuild B     ]  Heisst, dass das Paket nicht installiert werden kann, da es ge[B]lockt wird.
[ebuild  N    ]  Sagt uns, das das Paket noch nicht installiert ist und [N]eu installiert wird.
[ebuild   R   ]  Würde bedeuten, das es schon installiert ist und [R]e-Installiert werden würde.
[ebuild    U  ]  Bedeutet, dass das Paket zu updaten wäre, da eine neuere Version vorliegt.

Dies sind nur die wichtigsten Kürzel, die uns `emerge` anbietet. Die vollständige Liste, in aller Kürze, sieht so aus:

N = Neu, noch nicht installiert
S = Neu, verschiedene Versionen können gleichzeitig installiert werden
U = Updating, eine ältere Version wird aktualisiert
D = Downgrade, eine ältere Version würde installiert werden (da evntl. stabiler)
R = Replacing, das installierte Paket wird neu installiert, ohne dass sich die Version ändert
F = Fetch restrict, das Quellpaket muss manuell heruntergeladen werden
f = Fetch restrict, das Quellpaket muss manuell heruntergeladen werden, liegt aber schon vor
B = Blocked, ein anderes Paket blockt dieses und es kann deshalb nicht installiert werden

Die Kürzel können (natürlich) auch kombiniert auftreten. "UF" würde zum Beispiel bedeuten, dass das Paket aktualisiert würde, man aber das Quellpaket manuell herunterladen müsse.

Zurück zum installieren unseres Pakets "rar". Wir würden also nun, wenn wir dort denn die Taste "Y" drücken, die Version 3.5.1 neu installieren. Drücke aber bitte nicht "Y" sondern "N", damit das abgebrochen wird.

Die hier nun angebotenen Informationen reichen uns aber noch nicht ganz aus. Meistens sind wir ja etwas begrenzt, was unsere Download-Geschwindigkeit oder sogar den maximalen Traffic angeht. Deshalb wollen wir auch noch wissen, wie groß denn das oder die Pakete wären, wenn wir sie/es nun installieren und somit auch herunterladen wollten.

emerge -av rar

Mit dieser Optionen-Kombination lassen wir nun `emerge` zum Einen nachfragen und uns ein paar Informationen anzeigen. Mit der Option "-v" (--verbose), lassen wir `emerge` aber noch etwas ausführlicher werden:

These are the packages that I would merge, in order:

Calculating dependencies ...done!
[ebuild  N   ] app-arch/rar-3.5.1  661 kB 

Total size of downloads: 661 kB

Do you want me to merge these packages? [Yes/No] 

Nun wird uns auch die gewünschte Größe angezeigt. Das Schöne daran ist, dass `emerge` uns auch die Größe der Quellpakete zusammenzählt, wenn wir mehrere Pakete oder ein Paket mit mehreren Abhängigkeiten installieren wollen.

Bestimmte Versionen kann man natürlich auch installieren. Dafür gibt man das komplette Paket an, inklusive Kategorie und Version und setzt ein Gleichzeichen vor das Ganze:

emerge -av "=app-arch/rar-3.3.0"

So kann man zum Beispiel eine ältere Version installieren, wenn man das nun unbedingt benötigt. (Manchmal braucht man das tatsächlich).

[Bearbeiten] Konflikte

Nun, alles hat natürlich auch eine nicht so schöne Seite. Es gibt natürlich auch Pakete, die man nicht immer so einfach mergen kann.

Versuch doch einfach einmal "came" zu installieren. "came" ist ein kleines Programm um Bilder einer Webcam auf einen FTP-Server zu schieben. Wozu es da ist spielt für uns aber momentan keine Rolle, es soll nur mal als Beispiel herhalten.

emerge -av came

Du siehst, was passiert?

These are the packages that I would merge, in order:

Calculating dependencies   
!!! All ebuilds that could satisfy "came" have been masked.
!!! One of the following masked packages is required to complete your request:
- media-video/came-1.7 (masked by: ~x86 keyword)

For more information, see MASKED PACKAGES section in the emerge man page or 
section 2.2 "Software Availability" in the Gentoo Handbook.

Was soll uns das nun sagen? Sieht alles recht kryptisch und vorallem wichtig aus...

Nun, gehen wir die Ausgabe doch einmal Schritt für Schritt durch. Die ersten Zeilen kennen wir ja schon, wir beginnen mal bei den ersten Ausrufezeichen.

!!! All ebuilds that could satisfy "came" have been masked.

Nun, was heißt "masked" in Zusammenhang mit `emerge` oder generell dem installieren von Paketen? Um das genauer zu erfahren, müssen wir zwei Zeilen weiter unten schauen:

- media-video/came-1.7 (masked by: ~x86 keyword)

"masked by ~x86 keyword" heißt nichts anderes, als dass es als "testing" deklariert wurde und somit die kleine Gefahr besteht, dass das Programm bei dir eventuell gar nicht oder nur eingeschränkt funktioniert. Im Normalfall laufen solche Pakete aber dennoch einwandfrei. Die Entwickler sind sich dessen noch nicht ganz sicher und warnen so die User einfach nur etwas vor, für den Fall, dass etwas nicht richtig funktioniert.

Neben "masked by ~x86 keyword" gibt es auch noch die gefährlichere Variante, bei der man es sich dann wirklich 10x überlegen sollte, ob sie das jeweilige Paket dennoch installieren wollen:

These are the packages that I would merge, in order:

Calculating dependencies   
!!! All ebuilds that could satisfy "maude" have been masked.
!!! One of the following masked packages is required to complete your request:
- dev-lang/maude-2.1.1 (masked by: ~x86 keyword)
- dev-lang/maude-2.1.1-r2 (masked by: package.mask, ~x86 keyword)
# <seemant@gentoo.org> (15 Oct 2004)
# This seems to want gcc-3.4.3 which does not even exist in portage yet!

For more information, see MASKED PACKAGES section in the emerge man page or 
section 2.2 "Software Availability" in the Gentoo Handbook.

Du siehst hier "masked by: package.mask", das ist die härtere Variante und das Paket sollte dann auch wirklich nur zum Testen installiert werden.

Wie wir nun solche speziellen Pakete installieren, erfährst du in den nächsten Kapiteln (package.keywords und package.unmask).

[Bearbeiten] Das System aktualisieren

Beim updaten des Systems ist generell etwas Vorsicht geboten, weil es manchmal zu Ausfällen desselbigen kommen kann. Es wird deshalb empfohlen Updates regelmäßig auszuführen um Fehlfunktionen zu vermeiden.

Mit `emerge` kann man nicht nur ein oder mehrere Pakete installieren, sondern auch das komplette System, beziehungsweise alle Pakete auf einmal aktualisieren lassen.

Hierzu dienen die Optionen "-u" (--update) und "-D" (--deep). Grundsätzlich aktualisieren wir immer nur "world". Was "world" ist, haben wir weiter oben schon gelernt.

Um unser System zu aktualisieren, sollten wir zuerst den Portage-Cache aktualisieren. Dies geschieht mit

emerge --sync

Zusätzlich sollten wir bei Verwendung von eix (erweiterte Portagesuche) auch dessen Datenbank UNBEDINGT abgleichen, weil ansonsten Fehler beim World-Update auftreten können.

Wenn wir nun den Cache aktualisiert haben können wir gleich zum eigentlichen Update kommen. Dazu geben wir folgenden Befehl ein:

emerge -avuD world bzw. emerge -avuDN world

Die Optionen "-av" lassen Portage zum einen [-a] zur Kontrolle nachfragen, ob die Updates tatsächlich installiert werden sollen und haben zum anderen [-v] eine ausführlichere Information über die Pakete zur Folge. "-u" sagt `emerge`, dass es sich um Updates bemühen solle, "-D" veranlasst `emerge` sich auch um die jeweiligen Abhängigkeiten der Pakete aus dem "world-file" zu kümmern. Ohne "-D" würde `emerge` tatsächlich nur die Pakete im "world-file" aktualisieren und die Abhängigkeiten vergessen.

Es gibt da noch eine sehr nützliche Option, die `emerge` dazu veranlasst, alle Updates in einer "Baum-Auflistung" anzuzeigen. So kann man sehen welches Paket von welchem anderen Paket abhängt. (Bei einem automatischen Update, also ohne die Option -a, darf --tree nicht verwendet werden, da damit kein Update durchgeführt wird)

emerge -avuD --tree world

Es gibt noch ein zweites "Ziel" ausser "world" nämlich "system" es funktioniert analog zu world, aktualisiert aber nicht alle installierten Pakete sondern nur die, die zu einem funktionierenden System notwendig sind. Also zum Beispiel glibc, gcc, perl, python, portage usw. Man sollte ca. alle 30 Tage mal ein

emerge -avuD system 

machen und nachsehen, ob die fälligen Aktualisierungen der Mühe wert sind. Ansonsten kann man natürlich immer einzelne Pakete aktualisieren wenn tolle neue Sachen rausgekommen sind. Es ist nicht mehr als Fair immer im Hinterkopf zu behalten, daß die ganze Arbeit und Infrastruktur kostenlos und freiwillig bereitgestellt wird und ein unnötiger Verbrauch von Bandbreite und Rechenleistung für das Projekt nicht hilfreich ist.

[Bearbeiten] Ein Paket deinstallieren

Wenn man nicht weiß, aus welchem Paket eine vorhandene Datei kommt, kann man das mit `qfile` aus dem Paket portage-utils (oder anscheinend mit dem "veralteten" `etcat`) herausfinden.

[Bearbeiten] Das world-file bearbeiten

Das Worldfile zu bearbeiten und alle Pakete dort herauszulöschen ist einfach und schnell. Das hat den großen Vorteil, dass man dann wirklich immer ein aufgeräumtes Worldfile hat und keine nicht benötigten Programme mehr mit sich herumschleppt.

Öffne dazu einfach dein world-file und bearbeite es entsprechend:

nano -w /var/lib/portage/world

Da siehst du einen Haufen Pakete, die einfach untereinander aufgelistet sind. Gehe jedes einzelne durch und überlege dir, ob du es noch brauchst oder nicht. Wenn nicht, lösche die Zeile, die das Paket enthält.

Danach muss man nur noch eine weitere Option von `emerge` benutzen, um diese Pakete, die man aus dem Worldfile genommen hat, inklusive deren Abhängigkeiten, zu deinstallieren:

emerge -av --depclean

Drücke noch nicht auf "Y" oder "N"! Lies erst noch hier weiter!

"--depclean" veranlasst emerge, wie der Name der Option schon suggeriert, diese Pakete zu deinstallieren und auch alle Abhängigkeiten zu deinstallieren.

WICHTIG: Falls das Paket acl in der Liste von depclean erscheint, stelle sicher, dass du coreutils NICHT mit dem USE-Flag acl kompiliert hast: emerge -vp coreutils. Falls das nämlich der Fall ist und du acl deinstallierst, kannst du nicht mehr ls, mv, cp usw verwenden!! Füge ggf. acl dem world-file hinzu.

Die Warnung, die dort am Beginn kommt, sollte ernst genommen werden. Hier nochmal eine grobe Übersetzung, bzw. Interpretation dessen, was da steht:

depclean kann dein System kaputt machen! Aber eigentlich wirklich nur, wenn man nicht aufpasst und die Pakete, die bei "-av" angeboten werden, nicht genauestens überprüft.

Wenn du Pakete siehst, die du doch noch behalten willst, drücke erstmal "N", damit emerge den Vorgang abbricht. Dann trägst du die Pakete, die dort angeboten werden, die du aber doch noch behalten willst, einfach in dein Worldfile ein und machst danach nochmal ein "emerge -av --depclean".

Erst, wenn du dir absolut sicher bist, keines der angebotenen Pakete mehr behalten zu wollen, drückst du auf "Y"!

[Bearbeiten] emerge -C

Die zweite Methode, die aber meines Erachtens nicht so sinnvoll ist, ist das nicht mehr gewollte Paket direkt an `emerge` zu übergeben (Braucht man aber wirklich, um z.B. seamonkey wieder zu deinstallieren, damit es z.B. beim installieren von mozilla nicht gleich mit epiphany gnome mitlöscht):

emerge -avC paketname

Dies veranlasst `emerge` das eine Paket direkt zu deinstallieren. Allerdings muss man auch danach noch

emerge -av --depclean

... ausführen, damit auch die Abhängigkeiten deinstalliert werden. Für "emerge -av --depclean" folge den Anweisungen im obigen Kapitel "Das Worldfile bearbeiten".

[Bearbeiten] Komplett, d.h. mit nicht geänderten Konfigurationsdateien etc. entfernen

CONFIG_PROTECT="-*" CONFIG_PROTECT_MASK="-*" emerge -Cva Paketname

[Bearbeiten] Maskierte Pakete

[Bearbeiten] ACCEPT_KEYWORDS (nur für erfahrene Nutzer)

Wenn Du in diversen IRC-Channels oder Gentoo-Foren nachfragst, wie du ein "masked by ~x86 keyword"-Paket installieren kannst, wirst Du leider wahrscheinlich immer noch sehr oft die Antwort bekommen: "Mit ACCEPT_KEYWORDS".

Dies ist leider nicht die gute Methode. Diese Methode um ein Paket zu emergen sollte nur von Benutzern verwendet werden, die wissen was sie tun.

Funktionsweise:

Mit dieser Methode wird nur für einen Aufruf von Emerge das Keyword ~x86 akzeptiert, für jedes Paket (Abhängigkeiten). Das Keyword wird nirgends gespeichert. Eine mögliche (sinnvolle) Anwendung ist die Benutzung dieser Methode zusammen mit den Optionen '--oneshot' und '--nodeps' von Emerge, welche nur ein Paket ohne Abhängigkeiten, und ohne Eintrag in die World-file installiert.

Anwendung:

ACCEPT_KEYWORDS="~x86" emerge (-av) came

Negative Aspekte:

Durch diese Variable werden dann auch alle Abhängigkeiten, die das Paket eventuell mitinstallieren will, auch in dieser "testing"-Version installiert, was man ganz und gar nicht will!

Außerdem merkt sich das System diese Einstellung nicht für zukünftige Updates oder Installationen. Das heißt, wenn du ein Paket so installiert hast und am nächsten Tag dein System updaten lassen willst, wird dieses eine Paket und alle dessen Abhängigkeiten, die ja auch so installiert wurden, automatisch wieder auf die letzte, als stabil gekennzeichnete Version, DOWNgegradet.

[Bearbeiten] /etc/portage

Seit der Version 2.0.50 von Portage gibt es ein paar neue Sachen zu beachten, was den Umgang mit maskierten Paketen angeht.

Wenn du noch kein Verzeichnis "/etc/portage" hast, dann wird es Zeit, das sofort (als root) anzulegen.

mkdir /etc/portage

Dies ist das neue Konfigurations-Verzeichnis für Portage. Hier werden in Zukunft alle Dateien liegen, die den Umgang mit maskierten Paketen stark erleichtern und vorallem auch sinnvoll machen.


[Bearbeiten] package.keywords

Diese Datei liegt in /etc/portage/ und steuert den Umgang mit "masked by ~arch keyword"-Paketen. Für Pakete, die "masked by package.mask" sind, gibt es eine andere Datei, hierzu im nächsten Kapitel mehr.

Um nun also zum Beispiel unser Paket "came" zu installieren, das ja "masked by ~x86 keyword" ist, gehen wir folgendermassen vor:

  • Wir fügen der Datei /etc/portage/package.keywords folgende Zeile hinzu:
media-video/came
  • Danach einfach installieren:
emerge -av came

Wenn man eine bestimmte Version installieren will, die "masked by ~x86 keyword" ist, schreibt man diese einfach mit hinzu und setzt ein Gleichzeichen vor das Ganze:

=media-video/came-1.7

Damit dann auch genau diese Version installiert wird, sollte diese Information dann auch so an emerge weitergegeben werden:

emerge -av "=media-video/came-1.7"

Allerdings wird so das Paket nicht automatisch durch emerge -uD world geupdated.

Die jeweilige Zeile in der Datei /etc/portage/package.keywords sagt Portage, dass wir gerne die ~x86-Version von came installieren wollen und lässt dies dann auch endlich zu. Es kann natürlich sein, dass das Paket Abhängigkeiten hat, die auch maskiert sind. Solange diese auch "masked by ~arch keyword" sind, kann man sie ebenfalls nach obigem Verfahren zu dieser Datei hinzufügen und diese so auch mitinstallieren.

Da man einige Pakete (z.B. das komplette KDE) jedoch in seine package.keywords haben möchte empfiehlt sich folgendes kleines Skript:

cd /usr/portage/
ls -1d kde-base/* >> /etc/portage/package.keywords  # -1d: "eins", nicht Buchstabe "l"
ls -1d kde-base/* >> /etc/portage/package.unmask

Mit dem ersten Befehl wechseln wir in den Portage-Tree und lassen uns dann alles was es in kde-base/ gibt in unsere package.keywords schreiben. Wenn immer noch maskierte Pakete (z.B. sys-libs/db) benötigt werden, diese wiederum in die package.keywords einfügen.

Ich (lungomoz; 15.8.06) würde das nicht tun, denn dadurch wird die package.keyword mit vielen unnötigen Einträgen überflutet.

Beachte: Ein als "testing" markiertes Paket zu installieren, kann auch mit Problemen behaftet sein. Es kann sein, dass das Paket nicht funktioniert oder gar nicht erst richtig kompiliert wird. In diesem Fall hilft eigentlich nur das Installieren seinzulassen und auf eine nicht maskierte Version zu warten.

[Bearbeiten] package.unmask

Diese Datei liegt ebenfalls in "/etc/portage" und steuert den Umgang mit "masked by package.mask"-Paketen.

Der Vorgang und das Handling sind dieselben, wie bei der package.keywords-Datei.

Um also ein Paket zu installieren, bei dem die Fehlermeldung "masked by package.mask" kam, gehen wir wie folgt vor (angenommen unser Paket "came" wäre so "hardmasked":

Wir fügen der Datei /etc/portage/package.unmask folgende Zeile hinzu:

media-video/came

Nun kann man es gewohnt installieren:

emerge -av came

Wenn man eine bestimmte Version installieren will, die hardmasked ist, verkehrt man genauso wie bei package.keywords.

ACHTUNG: Ein, als "hardmasked" markiertes Paket zu installieren, ist in der Regel mit Problemen behaftet. Es wird sehr oft der Fall sein, dass das Paket nicht funktioniert oder gar nicht erst richtig kompiliert wird. In diesem Fall hilft eigentlich nur, das Installieren sein zu lassen und auf eine nicht maskierte Version zu warten.

[Bearbeiten] Ein Paket ignorieren

Um ein Paket nicht zu installieren - sei es weil es nicht richtig kompiliert, oder was es auch immer für einen Grund geben könnte - muss der vollständige Name des ungewollten Paketes in /etc/portage/package.mask hinterlegt werden, z.B.:

=sys-apps/hal-0.5.10


[Bearbeiten] Links

Gentoo schön sauber und aktuell halten

'Persönliche Werkzeuge