
Nachdem ich einige Verbindungsprobleme mit einem TLS-Server hatte und dann feststellte, dass dieser app-misc/ca-certificates
ein 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 emerge
Manualpage 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 emerge
besteht 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, emerge
ist, 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 ebuild
command ( man 1 ebuild
) verwenden, etwa so:
ebuild <PATH_TO_EBUILD> fetch
Dieser Befehl lädt alles in $SRC_URI
Ihr herunter (und überprüft es) $DISTDIR
.
So erhalten Sie den Wert der Variablen:
<PATH_TO_EBUILD>
- setzt sich wie folgt zusammen:
<REPO_DIR>/<CATEGORY>/<PACKAGE_NAME>/<PACKAGE_NAME>-<VERSION>.ebuild
- https://wiki.gentoo.org/wiki/Repository_format
<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 $DISTDIR
Variable 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