Como faço para que o Portage baixe um pacote e não faça mais nada?

Como faço para que o Portage baixe um pacote e não faça mais nada?

Depois de ter alguns problemas para se conectar a um servidor TLS e perceber que app-misc/ca-certificatesestava um ano e quatro meses atrasado, fiquei curioso para saber o que mudou desde então 20140927.3.17.2. Pensei em pegar uma cópia do pacote, extrair tudo dele e dar uma olhada. Uma rápida leitura da emergepágina do manual apareceu --fetchonly( -f):

Em vez de fazer qualquer construção de pacote, apenas execute buscas para todos os pacotes (busque itens de SRC_URI com base na configuração USE).

Parece o que eu quero! Vamos.

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

…uhh? Bem... não vejo por que não. Tenha privilégios de 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

O que? Não… eu só quero baixar o pacote; Na verdade, não quero instalá-lo ou fazer quaisquer outras alterações no sistema.

Uma pesquisa mais completa na página de manual não revelou mais nada que parecesse relevante (exceto --fetch-all-uri| -F, que me dá o mesmo resultado). Por que emergeinsistir em acesso privilegiado e alterações de palavras-chave aqui? O que seriarealmenteestar fazendo, além de apenas baixar um tarball, verificá-lo e despejá-lo no diretório de trabalho ou em um cache em algum lugar?

Responder1

A pergunta provavelmente deveria ser mais ou menos assim: "Como faço para que o Portage baixefontes de pacotes, e não fazer mais nada?". A razão pela qual não funciona usando emergeé porque é assim que o emerge é projetado. emerge simplesmente não é a ferramenta certa para fazer esse tipo de trabalho e espero que nunca seja. Para realmente realizar o que você deseja , você deve usar ebuildo comando ( man 1 ebuild), assim:

ebuild <PATH_TO_EBUILD> fetch

Este comando baixa (e verifica) tudo em $SRC_URIseu arquivo $DISTDIR.

Para obter o valor das variáveis:

Para realmente buscar as fontes em um diretório de sua escolha, basta falsificar o $DISTDIRvar assim:

DISTDIR=<DIR> ebuild <PATH_TO_EBUILD> fetch

Portanto, se você usa caminhos padrão do Portage e deseja baixar fontes para seu diretório inicial, emita o seguinte:

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

informação relacionada