Como funciona o apt-get, em detalhes?

Como funciona o apt-get, em detalhes?

Atualmente estou trabalhando com Ubuntu e tentando instalar um sistema Debian em uma VM, o que significa que tenho que lidar com pacotes. Como sou novo nisso, li muito sobre isso na web e especialmente no wiki do Debian (o wiki do Ubuntu também é útil). Em particular, aprendi como criar um repositório local e como editar corretamente o arquivo sources.list.

Porém, ainda tenho algumas dúvidas sobre como funciona, detalhes que não encontrei na web.

  • Primeiro, quando você usa um repositório online. Entendi que o apt-get seguirá o link que você escreveu no arquivo source.list e procurará um arquivo Packages.gz. O que não entendo é como esse arquivo simples (que parece ser apenas uma lista depacotes instaláveis) permitir a instalação do pacote? O Packages.gz fornece informações adequadas sobre como encontrar o arquivo .deb e prosseguir com a instalação? Ou é outra coisa?

  • Em segundo lugar, sobre o arquivo Sources.gz. Eu li que é o código fonte dos pacotes listados em Packages.gz, MAS na maioria dos casos não é necessário. Então, se eu adicionar o link para este Sources.gz no meu arquivo source.list, o que isso realmente me dá? Qual é o sentido disso?

  • Terceiro, sobre o repositório local; isso está relacionado às perguntas anteriores. Eu sei fazer um repositório local com arquivos .deb, mas digamos que só tenho esse arquivo Packages.gz: não será suficiente, certo? e se eu tiver o arquivo Sources.gz, funcionará?

  • Finalmente, vi no repositório Debian que, além do repositório dist, existe um repositório pool com muito .deb nele. Eu conheço uma maneira de instalá-los (baixe o .deb e suas dependências, instale-os com dpkg -i), mas existe uma maneira mais fácil? Algo mais automático, que pudesse encontrar o .deb online, encontrar suas dependências e instalar tudo? (assim como o apt-get, mas pelo que entendi, o apt-get só funciona com os arquivos Packages.gz e Sources.gz, não diretamente com .deb)

Me desculpe, isso não é realmente uma pergunta, mas sim uma lista de perguntas ^^ mas tudo que encontrei online foi principalmente "apt-get procure o pacote e sua dependência no repositório online e instale-o através do dpkg", e eu faria gostaria de mais detalhes sobre isso.

Responder1

  1. O Packages.gz contém um Filenamecampo com um valor que provavelmente se parece com pool/main/n/name-of-package/name-of-package_version_amd64.deb. Isso diz ao gerenciador de pacotes para olhar esse URL.
    Por exemplo, se você tiver a seguinte linha em seu sources.list(.d):
    deb https://some-domain.com/some-url some-distribution main
    Você terá o seguinte arquivo:https://some-domain.com/some-url/dists/some-distribution/main/binary-amd64/Packages.gz
    Esse arquivo fará referência pool/main/n/name-of-package/name-of-package_version_amd64.deba , então seu gerenciador de pacotes examinará https://some-domain.com/some-url/pool/main/n/name-of-package/name-of-package_version_amd64.deb.

  2. Sources.gz funciona da mesma maneira, mas é opcional. Ele funciona com apt source, que irá buscar o código-fonte se você desejar compilá-lo sozinho, em vez de usar os binários pré-construídos.
    Isso é útil principalmente para administradores de sistema que desejam corrigir a versão exata do pacote usado por uma distribuição, em vez de contribuidores/pessoas curiosas que simplesmente iriam à página inicial do projeto e seguiriam as instruções de construção lá.

  3. Se um pacote estiver no diretório do pool de distribuição, mas não em Packages.gz, provavelmente estará em outro Package.gz. Observe como você tem várias palavras em uma sources.listlinha típica:
    deb http://archive.ubuntu.com/ubuntu precise main universe multiverse
    maine universecada multiverseuma tem seu próprio Packages.gzarquivo. Você pode precisar habilitar alguns, já que o debian, por exemplo, desabilita non-freepor padrão. Porém, alguns pacotes ainda não estarão disponíveis (nem mesmo no pool). Você pode optar por adicionar repositórios não confiáveis ​​(como PPAs no Ubuntu), empacotar você mesmo o programa ausente (para que você e outras pessoas possam usar o gerenciador de pacotes para gerenciar esse programa) ou simplesmente compilá-lo e instalá-lo você mesmo (você deve usar o /usr/localprefixo para evite conflitos com seu gerenciador de pacotes).

  4. Quando um novo pacote (versão de um) aparece, o Releasearquivo da distribuição é atualizado. Isso permite apt updatesaber que é necessário fazer o download novamente Packages.gz.

informação relacionada