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

Как заставить 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здесь настаивают на привилегированном доступе и изменении ключевых слов? Что бы это моглоДействительноделаете, помимо простой загрузки tarball, его проверки и помещения в рабочий каталог или кэш где-нибудь?

решение1

Вопрос, вероятно, должен звучать так: «Как мне заставить 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

Связанный контент