Ao trabalhar com repositórios de pacotes deb (apt), às vezes você pode navegar por eles em http para determinar o que está disponível em diferentes arquiteturas (amd64, arm64, etc). Por exemplo, o Ubuntu fornece uma lista de arquivos para ajudar a navegar no repositório
No entanto, outras fontes, como este repositório Elastic , não permitem a navegação regular.
Minha única opção parece ser realmente adicionar o repositório às minhas fontes (fazer modificações no meu sistema):
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
Depois de adicionar, a execução apt update
confirma que o repositório oferece pacotes arm64 (já que estou em um host arm64):
Get:7 https://artifacts.elastic.co/packages/7.x/apt stable/main arm64 Packages [78.8 kB]
No entanto, quero confirmar TODAS as arquiteturas de lançamento disponíveis oferecidas pelo repositório E quero fazer isso sem ter que modificar meu sistema host. Como eu posso fazer isso?
Neste caso de uso, tive que ativar um host arm64 de teste apenas para determinar se os pacotes estavam disponíveis. Eu realmente gostaria de evitar ter que fazer esse tipo de coisa no futuro e apenas navegar pelas ofertas de recompra remotamente.
Você não precisa navegar no repositório como um diretório. Conhecendo todas as propriedades do repo (da string que você usa para adicionar o repo), você tem a garantia de conhecer a URL precisa (um link direto) do arquivo de lançamento. Então você baixa, e é um arquivo de texto com uma lista de informações essenciais do repositório. A estrutura de um repositório e seus arquivos de controle são explicados no wiki .
Você começaria com o arquivo
$REPO_BASE/dists/$DIST/InRelease
. EstesREPO_BASE
eDIST
são determinados a partir de sua linha no arquivo de fontes:Nesse caso, o arquivo de lançamento tem o seguinte URL direto:
https://artifacts.elastic.co/packages/7.x/apt/dists/stable/InRelease
. Ele contém uma lista de outros arquivos de repositório, incluindo arquivos de conteúdo e pacotes para cada arquitetura.Cada arquivo Packages é um arquivo de texto com descrições de todos os pacotes no repositório do componente. Por exemplo,
https://artifacts.elastic.co/packages/7.x/apt/dists/stable/main/binary-arm64/Packages
lista todos os pacotes binários ARM64 compilados para o seu repositório. A fórmula do link é$REPO_BASE/dists/$DIST/$COMPONENT/binary-$ARCH/Packages
.E então, você também pode calcular o link para cada arquivo deb no repositório. Cada pacote no arquivo Packages acima tem um
Filename
item. Você criaria o link deb usando a fórmula:$REPO_BASE/$Filename
. Por exemplo, para opacketbeat
it passa a serhttps://artifacts.elastic.co/packages/7.x/apt/pool/main/p/packetbeat/packetbeat-7.8.0-arm64.deb
.É exatamente assim que o próprio Apt funciona, e é assim que o utilitário do Ubuntu que você mencionou funciona.
Desativar a listagem de diretórios no repositório Debian é bobagem. A única razão para a existência do repositório é exatamente fornecer essas informações, portanto, desabilitar outra maneira conveniente para o ser humano de vê-lo está além do meu entendimento.