
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
O Packages.gz contém um
Filename
campo com um valor que provavelmente se parece compool/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ênciapool/main/n/name-of-package/name-of-package_version_amd64.deb
a , 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
.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á.Se um pacote estiver no diretório do pool de distribuição, mas não em
Packages.gz
, provavelmente estará em outroPackage.gz
. Observe como você tem várias palavras em umasources.list
linha típica:
deb http://archive.ubuntu.com/ubuntu precise main universe multiverse
main
euniverse
cadamultiverse
uma tem seu próprioPackages.gz
arquivo. Você pode precisar habilitar alguns, já que o debian, por exemplo, desabilitanon-free
por 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/local
prefixo para evite conflitos com seu gerenciador de pacotes).- Quando um novo pacote (versão de um) aparece, o
Release
arquivo da distribuição é atualizado. Isso permiteapt update
saber que é necessário fazer o download novamentePackages.gz
.