Ok, eu entendo como posso usar apt-get {install|upgrade|remove} mypackages
para instalar, atualizar ou remover binários, bem como seus arquivos e dependências de dados de configuração (na verdade, remove
apenas os removeremos, a menos que sejam fornecidos sinalizadores adicionais).
Eu não estou procurando como é usado como o man
descreve isso, mas alto nível o que está fazendo. Meu objetivo final é criar um meio para eu instalar e gerenciar algum software personalizado (criado por um arquivo make) em várias máquinas remotas, e preciso aprender mais sobre o processo. Se as respostas a esta pergunta se basearem em qual distribuição é usada, por favor, costure no Debian.
Além de como geralmente funciona, tenho as seguintes perguntas específicas:
- Como o cliente que está acessando o repositório apt controla os arquivos?
- O repositório deve estar hospedado no mesmo sistema operacional (ou seja, o repositório apt pode ser hospedado no redhat)?
- Como são especificados os locais para instalar os arquivos? Isso é especificado pelo
.deb
arquivo? - Como uma máquina remota está acessando o repositório? É apenas ftp (s) ou http (s)?
- A máquina que hospeda o repositório está executando um software especial (como o gitlab para um repositório git) ou é apenas um sistema de arquivos estruturado?
debian
apt
package-management
repository
aptitude
user1032531
fonte
fonte
Respostas:
Você precisa dar uma olhada em https://wiki.debian.org/Packaging - o tutorial de empacotamento irá ajudá-lo muito, bem como partes do novo guia do mantenedor.
Quanto às suas perguntas, em ordem:
O repositório contém arquivos "lista". Por exemplo, http://http.us.debian.org/debian/dists/stretch/main/binary-amd64/Packages.xz .
apt-get update
baixa esses arquivos da lista e os armazena/var/lib/apt/lists
. Os arquivos de lista listam todos os pacotes, incluindo vários metadados e uma URL relativa para encontrar o .deb em. (Eles são arquivos de texto simples legíveis por humanos, para que você possa ver).OS não importa. Você pode hospedá-lo no Windows, se quiser. (Bem, você talvez tenha problemas com nomes de arquivos que o Windows não gosta.) (Veja também os itens 4 e 5).
Sim, está dentro do arquivo deb. Um arquivo deb é na verdade um arquivo morto (usando
ar
). Dentro estão alguns arquivos tar; um deles é (essencialmente) extraído para/
.É apenas HTTP (ou HTTPS, FTP, ou ... o apt-get suporta muitos protocolos). Nada de especial, no entanto. Observe que existem arquivos de versão assinados com gpg, que garantem integridade mesmo sem HTTPS. Os espelhos Debian usam principalmente HTTP, não HTTPs. (Alguns também suportam HTTPS por confidencialidade).
É apenas um sistema de arquivos estruturado.
Uma visão geral rápida e de alto nível de como o apt-get interage com uma fonte de pacote:
Você configura quais fontes procurar no seu arquivo sources.list. Considere uma linha como:
deb
diz que esta é uma fonte para os arquivos getdeb (binário); depois, há o prefixo da URL, suite / release ("stretch") e componente ("main").O apt-get tem uma lista de arquiteturas, obtém isso do dpkg. Digamos que
dpkg --print-architecture
éamd64
. O apt-get agora pode criar os URLs dos quais realmente será baixado, combinando o prefixo do URL, a palavra "dists", a suíte, o componente e a arquitetura. Depois, ele seleciona alguns nomes de arquivos fixos, como "Packages.xz". Isso fornece o URL acima (no # 1). Existem mais alguns arquivos com nomes / caminhos definidos, como o arquivo Release http://http.us.debian.org/debian/dists/stretch/Release e sua assinatura (o mesmo, com .gpg anexado). Esses são todos os arquivos de texto simples (possivelmente compactados). O arquivo de lançamento contém somas de verificação para outros arquivos que o apt-get irá baixar, como o Packages.xz.O arquivo Packages.xz lista todos os pacotes desse conjunto / nome de código / arquitetura. Também fornece o caminho onde esse arquivo está localizado; por exemplo
pool/main/0/0ad/0ad_0.0.21-2_amd64.deb
.Quando você pede ao apt-get para baixar um pacote, ele usa esse local + o URL base para baixar o pacote, para que o pacote esteja em http://http.us.debian.org/debian/pool/main/0/0ad /0ad_0.0.21-2_amd64.deb
O outro diretório interessante é em
source
vez debinary-amd64
. Isso é usado para suasdeb-src
entradas; ele contém informações sobre pacotes de origem (e é bastante semelhante).Existem outras coisas (todas opcionais, acredito) que podem fazer parte do repositório (ou seja, disponível via HTTP): difere entre diferentes versões do arquivo Packages.xz; traduções de descrições de pacotes, uma lista completa de todos os arquivos instaláveis e a que pacote pertence (Conteúdo-amd64.gz, usado por, por exemplo, apt-file, não pelo apt-get) etc. Isso provavelmente não é relevante para você, mas você pode vê-los todos navegando em http://http.us.debian.org/debian/dists/stretch/ ; a maioria deles são arquivos de texto simples.
Todos esses arquivos são texto simples. Eles podem, em teoria, ser criados à mão. Na prática, todo mundo usa uma dessas ferramentas de geração de repositório . Aqui - e eu aviso que essa foi uma escolha feita há muito tempo, então pode estar desatualizada - usamos o mini-dinstall. A saída dessas ferramentas são arquivos comuns ou, na pior das hipóteses, links simbólicos. Você pode sincronizá-los novamente com o servidor da web que desejar.
fonte
/var/lib/apt/lists/
. O conteúdo é baixado por apt-file e auto-apt.