Wie bringe ich Portage dazu, ein Paket herunterzuladen und sonst nichts zu tun?

Wie bringe ich Portage dazu, ein Paket herunterzuladen und sonst nichts zu tun?

Nachdem ich einige Verbindungsprobleme mit einem TLS-Server hatte und dann feststellte, dass dieser app-misc/ca-certificatesein Jahr und vier Monate zurückliegt, wurde ich neugierig, was sich seitdem geändert hat 20140927.3.17.2. Ich dachte, ich schnappe mir einfach eine Kopie des Pakets, entpacke alles daraus und stöbere ein bisschen herum. Ein flüchtiger Blick auf die emergeManualpage ergab --fetchonly( -f):

Anstatt Pakete zu erstellen, führen Sie einfach Abrufvorgänge für alle Pakete durch (rufen Sie Dinge von SRC_URI basierend auf der USE-Einstellung ab).

Klingt nach dem, was ich will! Los geht‘s.

caramel:~ blackl% emerge --fetchonly '='app-misc/ca-certificates-20151214.3.21
emerge: portage group access is required

…ähhh? Also … ich sehe keinen Grund dafür. Ich brauche Root-Rechte.

caramel:~ blackl% sudo emerge --fetchonly '='app-misc/ca-certificates-20151214.3.21
Calculating dependencies... done!
[ebuild     U ~] app-misc/ca-certificates-20151214.3.21 [20140927.3.17.2]

The following keyword changes are necessary to proceed:
 (see "package.accept_keywords" in the portage(5) man page for more details)
# required by =app-misc/ca-certificates-20151214.3.21 (argument)
=app-misc/ca-certificates-20151214.3.21 ~amd64

Was? Nein, ich möchte das Paket nur herunterladen. Ich möchte es nicht installieren oder sonstige Änderungen am System vornehmen.

Eine gründlichere Suche in der Manualpage ergab nichts anderes, das relevant erschien (außer --fetch-all-uri| -F, was mir das gleiche Ergebnis liefert). Warum emergebesteht man hier auf privilegiertem Zugriff und Schlüsselwortänderungen? Was würde esWirklichtun, außer einfach ein Tarball herunterzuladen, es zu überprüfen und es im Arbeitsverzeichnis oder irgendwo im Cache abzulegen?

Antwort1

Die Frage sollte wohl eher lauten: „Wie bringe ich Portage dazu,Paketquellen, und nichts weiter tun?". Der Grund, warum es nicht funktioniert, emergeist, dass emerge so konzipiert ist. emerge ist einfach nicht das richtige Werkzeug für diese Art von Arbeit und wird es hoffentlich nie sein. Um tatsächlich das zu erreichen, was Sie wollen, müssen Sie ebuildcommand ( man 1 ebuild) verwenden, etwa so:

ebuild <PATH_TO_EBUILD> fetch

Dieser Befehl lädt alles in $SRC_URIIhr herunter (und überprüft es) $DISTDIR.

So erhalten Sie den Wert der Variablen:

  • <PATH_TO_EBUILD>
  • <REPO_DIR>:portageq get_repo_path / gentoo
  • $DISTDIR:portageq distdir

Um die Quellen tatsächlich in ein Verzeichnis Ihrer Wahl abzurufen, fälschen Sie die $DISTDIRVariable einfach wie folgt:

DISTDIR=<DIR> ebuild <PATH_TO_EBUILD> fetch

Wenn Sie also die Standard-Portage-Pfade verwenden und die Quellen in Ihr Home-Verzeichnis herunterladen möchten, geben Sie Folgendes ein:

DISTDIR=~ ebuild /usr/portage/app-misc/ca-certificates/ca-certificates-20151214.3.21.ebuild fetch

verwandte Informationen