Respostas:
Há duas coisas no Ubuntu (e no Debian, nas quais o Ubuntu se baseia) que são comumente chamadas de "gerenciador de pacotes" dpkg
:, e APT.
dpkg
é um programa que instala e remove pacotes e mantém um banco de dados de quais pacotes estão instalados, em quais versões. Quando instala pacotes, o faz a partir de .deb
arquivos compactados. Esses arquivos são a maneira como os pacotes são distribuídos.
dpkg
faz mais do que copiar (ou excluir) arquivos e atualizar seu banco de dados - ele também executará scripts de instalação e remoção. Pode ser considerado bastante sofisticado. Mas o que não fará é encontrar e baixar pacotes.
O APT localiza e baixa pacotes e é executado dpkg
adequadamente para instalar, atualizar e removê-los. O APT não é realmente um software único, embora exista um pacote apt que forneça suas partes essenciais.
O APT inclui uma biblioteca ( libapt-pkg ) que fornece a funcionalidade principal, acessada por várias ferramentas. Algumas dessas ferramentas, como apt-get
, também são fornecidas pelo pacote apt . Outras ferramentas são instaladas separadamente. O APT também fornece vários arquivos de configuração que controlam como sua biblioteca principal e os programas que a utilizam funcionam.
Mais do que isso, o APT é um sistema para armazenar e recuperar dados sobre quais fontes de software fornecem quais pacotes em quais versões e para agir com base nesses dados para executar automaticamente tarefas de gerenciamento de pacotes, como instalar e atualizar pacotes. Isso inclui acompanhar quais pacotes são necessários para que outros pacotes funcionem e escolher e instalar automaticamente pacotes apropriados para satisfazer essas dependências.
Por exemplo, quando digo ao apt-get
utilitário para instalar o pacote chocolate-doom , ele descobre quais outros pacotes precisam ser instalados para que funcionem e os recupera e instala automaticamente também:
$ sudo apt-get install chocolate-doom
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
doom-wad-shareware libmikmod3 libsdl-mixer1.2 libsdl-net1.2 libsdl1.2debian
Recommended packages:
doom-engine
The following NEW packages will be installed:
chocolate-doom doom-wad-shareware libmikmod3 libsdl-mixer1.2 libsdl-net1.2
libsdl1.2debian
0 upgraded, 6 newly installed, 0 to remove and 1 not upgraded.
Need to get 0 B/2,846 kB of archives.
After this operation, 8,626 kB of additional disk space will be used.
Ferramentas gráficas como o Centro de Software, o Atualizador de Software / Gerenciador de Atualizações e o Synaptic executam funções semelhantes apt-get
. Eles também usam o sistema APT - através de uma combinação de observação de suas regras e utilização da funcionalidade fornecida pelas bibliotecas principais - para alterar quais pacotes estão instalados, para dar ao usuário o que ele (geralmente) deseja, de tal maneira que as coisas (geralmente) continuam trabalhando.
/var/cache/apt/archives
pasta é usadaQuando apt-get
, aptitude
, Software Center , Synaptic , Software Updater Update Manager / ou quaisquer outros pacotes de serviços públicos de gerenciamento de pacotes download (e os outros pacotes que dependem) de configurados fontes de software e instala-los, os pacotes baixados (ou seja, os ficheiros de arquivo .deb a partir do qual eles estão instalados) são armazenados /var/cache/apt/archives
.
Se você possui um arquivo .deb no disco e o instala dpkg
, isso não faz com que uma cópia seja feita /var/cache/apt/archives
. Mas quando um programa que usa ou implementa o sistema APT de resolução automática de dependência e recuperação de pacotes baixa pacotes, é onde os armazena.
Embora os arquivos .deb para pacotes baixados automaticamente sejam armazenados e instalados a partir de /var/cache/apt/archives
, eles não são realmente baixados diretamente nesse local. Em vez disso, existem downloads de arquivo .deb incompletos (ou seja, em andamento) /var/cache/apt/archives/partial
e são movidos para /var/cache/apt/archives
quando terminar.
Os arquivos do pacote .deb permanecem em cache /var/cache/apt/archives
mesmo após a instalação bem-sucedida, caso sejam necessários para uso futuro. Mas você pode remover com segurança os arquivos .deb com idade suficiente, com pouca probabilidade de serem necessários novamente sudo apt-get autoclean
ou limpar completamente os .deb
arquivos em cache sudo apt-get clean
. Veja man apt-get
para mais informações.
Para ilustrar a função sudo apt-get autoclean
e comandos semelhantes, bem como determinar se você deseja executá-los, você pode simular suas ações executando então com o -s
sinalizador. É melhor passar esse sinalizador antes do autoclean
(ou qualquer outro) verbo de ação. Normalmente, não é necessário executar um utilitário como root no sudo
uso -s
, porque nenhuma alteração real está sendo feita.
Por exemplo, no meu sistema:
$ apt-get -s autoclean
NOTE: This is only a simulation!
apt-get needs root privileges for real execution.
Keep also in mind that locking is deactivated,
so don't depend on the relevance to the real current situation!
Reading package lists... Done
Building dependency tree
Reading state information... Done
Del libubsan0 4.9.1-15ubuntu1 [83.7 kB]
Del cups-server-common 1.7.5-3 [519 kB]
Del python2.7 2.7.8-9 [205 kB]
Del g++-4.9 4.9.1-15ubuntu1 [17.4 MB]
Del libstdc++-4.9-dev 4.9.1-15ubuntu1 [1,121 kB]
....
Os pacotes listados não seriam desinstalados ; em vez disso, apenas os arquivos .deb armazenados em cache seriam excluídos. (De fato, nenhum dos dois aconteceu quando eu executei esse comando, pois era apenas uma simulação.)
O software instalado via dpkg
(via APT ou de outra forma) não é realmente executado a partir do arquivo .deb que o fornece. Conforme observado na seção Informações de plano de fundo , os arquivos .deb são extraídos. É por isso que eles podem ser removidos e o pacote instalado continua funcionando.
Os arquivos em todo o sistema instalados a partir de pacotes .deb não são baixados para seus locais atuais - eles são extraídos dos arquivos .deb que os fornecem (ou talvez criados especialmente durante a instalação ou posteriormente, como é o caso). para alguns arquivos de configuração).
Mas os arquivos .deb não são os únicos arquivos baixados pelos utilitários de gerenciamento de pacotes. Frequentemente, outros arquivos são baixados que fornecem informações sobre onde existem pacotes.
Por exemplo, quando executo sudo apt-get update
, a saída inclui linhas como:
Get:13 http://us.archive.ubuntu.com utopic/main i386 Packages [1,341 kB]
Isso significa que um arquivo como http://us.archive.ubuntu.com/ubuntu/dists/utopic/main/binary-amd64/Packages.bz2 foi baixado e examinado para ajudar a atualizar o banco de dados do APT com informações sobre quais pacotes estão disponíveis ( e em que versões) dessa fonte de software específica. Você pode encontrar arquivos de pacotes e outros arquivos no /var/lib/apt/list
diretório As cópias armazenadas lá recebem nomes distintos us.archive.ubuntu.com_ubuntu_dists_utopic_main_binary-amd64_Packages
, como , pois pode haver muitos desses arquivos.
Você perguntou apt-cache
especificamente. Ele consulta o banco de dados do pacote, mas não faz nenhuma alteração no sistema nem baixa nenhum arquivo.
Quando o Ubuntu Software Center baixa dados para seu próprio uso, específicos e não relacionados à funcionalidade geral do APT (ou dpkg
), ele os armazena /var/cache/software-center
.
Por exemplo, no meu sistema (e na maioria dos sistemas), essa pasta contém uma xapian
subpasta:
ek@Ilex:/var/cache/software-center/xapian$ ls
flintlock postlist.baseB record.baseB spelling.baseB termlist.baseB
iamchert postlist.DB record.DB spelling.DB termlist.DB
postlist.baseA record.baseA spelling.baseA termlist.baseA
O Software Center usa o Xapian para indexar informações para pesquisa rápida.
Alguns utilitários adicionais que funcionam com o sistema APT baixam e armazenam arquivos como parte de sua operação. apt-file
não está instalado por padrão no Ubuntu, mas pode ser instalado a partir do pacote apt-file .
apt-file
armazena informações sobre quais arquivos são fornecidos por quais pacotes (mesmo para pacotes que não são instalados localmente). Ele obtém essas informações sobre o conteúdo dos pacotes baixando Contents
arquivos compactados :
$ sudo apt-file update
Downloading complete file http://us.archive.ubuntu.com/ubuntu/dists/utopic/Contents-amd64.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 29.6M 100 29.6M 0 0 856k 0 0:00:35 0:00:35 --:--:-- 832k
Quando apt-file update
é executado como root (como acima), esses arquivos são baixados no /var/cache/apt/apt-file
diretório. Para descobrir isso, eu corri:
$ sudo updatedb
$ locate Contents-amd64
/var/cache/apt/apt-file/us.archive.ubuntu.com_ubuntu_dists_utopic-proposed_Contents-amd64.gz
/var/cache/apt/apt-file/us.archive.ubuntu.com_ubuntu_dists_utopic_Contents-amd64.gz
Observe que as informações fornecidas nesta publicação fornecem vários exemplos de arquivos de dados transferidos e armazenados por utilitários de gerenciamento de pacotes no Ubuntu, mas não devem ser considerados uma lista exaustiva de instâncias em que esses arquivos são usados e armazenados.
apt-cache
ou / eapt-file
também baixa muitas coisas? Se sim, onde eles estão?