1

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

3

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

ebuild <PATH_TO_EBUILD> fetch

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

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

  • <PATH_TO_EBUILD>
  • <REPO_DIR>: portageq get_repo_path / gentoo
  • $DISTDIR: portageq 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .