Как мне заставить 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
,
Чтобы получить значение переменных:
<PATH_TO_EBUILD>
- составлен так:
<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
Чтобы на самом деле получить источники в каталог по вашему выбору, просто подделать $DISTDIR
Вар, как это:
DISTDIR=<DIR> ebuild <PATH_TO_EBUILD> fetch
Так что, если вы используете пути по умолчанию для portage и хотите загрузить исходные коды в свой домашний каталог, выполните следующее:
DISTDIR=~ ebuild /usr/portage/app-misc/ca-certificates/ca-certificates-20151214.3.21.ebuild fetch