Как мне заставить Portage загрузить пакет и ничего больше не делать?

1517
Blacklight Shining

После некоторых проблем с подключением к серверу TLS, а также после того, как я заметил, что app-misc/ca-certificatesгод и четыре месяца позади, мне стало любопытно, что изменилось с тех пор 20140927.3.17.2. Я подумал, что просто возьму копию пакета, извлеку из него все и покопаюсь. Поднялась emergeстраница со страницей руководства --fetchonly( -f):

Вместо того, чтобы делать какую-либо сборку пакетов, просто выполняйте выборки для всех пакетов (выбирайте вещи из SRC_URI, основываясь на настройке USE).

Похоже, что я хочу! Поехали.

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

... уххх? Ну ... я не понимаю, почему нет. Иметь права root.

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 

Какие? Нет ... я просто хочу скачать пакет; Я не хочу устанавливать его или вносить какие-либо другие изменения в систему.

Более тщательный поиск страницы руководства не выявил ничего более релевантного (за исключением --fetch-all-uri| -F, который дает мне тот же результат). Почему здесь emergeнастаивают на привилегированном доступе и смене ключевых слов? Что бы он на самом деле делал, кроме загрузки архива, его проверки и выгрузки в рабочий каталог или куда-нибудь в кеш?

1
Btw. устаревшая `app-misc / ca-Certificates` в стабильной ветке - это известная ошибка, которая ожидает исправления - https://bugs.gentoo.org/show_bug.cgi?id=561962 rindeal 8 лет назад 0

1 ответ на вопрос

3
rindeal

The question should probably be more like: "How do I get Portage to download package sources, and do nothing more?". The reason why it doesn't work using emerge is because that's how emerge is designed. emerge is simply not the right tool for doing this kind of job and hopefully will never be. To actually accomplish what you want, you have to use ebuild command (man 1 ebuild), like this:

ebuild <PATH_TO_EBUILD> fetch 

This command downloads (and verifies) everything in $SRC_URI to your $DISTDIR.

To get the value of the variables:

To actually fetch the sources to a dir of your choosing, just spoof the $DISTDIR var like this:

DISTDIR=<DIR> ebuild <PATH_TO_EBUILD> fetch 

So if you use default portage paths and want to download sources to your home dir, issue this:

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