
Depois de ter alguns problemas para se conectar a um servidor TLS e perceber que app-misc/ca-certificates
estava 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 emerge
pá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 emerge
insistir 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 ebuild
o comando ( man 1 ebuild
), assim:
ebuild <PATH_TO_EBUILD> fetch
Este comando baixa (e verifica) tudo em $SRC_URI
seu arquivo $DISTDIR
.
Para obter o valor das variáveis:
<PATH_TO_EBUILD>
- é composto assim:
<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
Para realmente buscar as fontes em um diretório de sua escolha, basta falsificar o $DISTDIR
var 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