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

После некоторых проблем с подключением к серверу 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 ответ

Решение

Вероятно, вопрос должен звучать так: "Как заставить Portage загрузить исходные коды пакетов и ничего больше не делать?". Причина, почему это не работает, используя emerge потому что так создается emerge. emerge просто не подходящий инструмент для выполнения такой работы и, надеюсь, никогда не будет. Чтобы на самом деле выполнить то, что вы хотите, вы должны использовать ebuild команда (man 1 ebuild), как это:

ebuild <PATH_TO_EBUILD> fetch

Эта команда загружает (и проверяет) все в $SRC_URI на ваш $DISTDIR,

Чтобы получить значение переменных:

Чтобы на самом деле получить источники в каталог по вашему выбору, просто подделать $DISTDIR Вар, как это:

DISTDIR=<DIR> ebuild <PATH_TO_EBUILD> fetch

Так что, если вы используете пути по умолчанию для portage и хотите загрузить исходные коды в свой домашний каталог, выполните следующее:

DISTDIR=~ ebuild /usr/portage/app-misc/ca-certificates/ca-certificates-20151214.3.21.ebuild fetch
Другие вопросы по тегам