102.4 Gerenciamento de pacotes Debian
Toda distribuição pode trabalhar com sistema de instalação de aplicações em 2 níveis, o primeiro é o nível local e o segundo é o nivel remoto ou online. No local o pacote (aplicação que será instalada), está localmente na máquina, não tendo que baixar ela e na online/remoto, devemos primeiro baixar o pacote de um repositório (diretório onde ficam armazenados as aplicações) para que ele seja instalado.
A maioria das distribuições possuem normalmente 2 gerenciadores de pacotes, um para aplicações locais na máquina e outro que vão gerenciar as aplicações em repositórios (remoto), algumas possuem só uma, mas isso não vem ao caso, observe uma comparação entre Debian e RedHat:
Padrão (DEB) Debian | Padrão (RPM) RedHat | |
---|---|---|
Extensão do arquivos | .deb | .rpm |
Gerenciador de pacote local | dpkg | rpm |
Gerenciador de pacote remoto (possui aplicações locais também) | apt-get | yum |
Outros comandos | dpkg-reconfigure apt-cache dselect aptitude alien | yumdonwloader rpm2cpio |
Nome do Arquivo | name_version.revision-debiancodename_architeture.deb | name-version-release.arch.rpm |
O gerenciador de pacotes sempre mantém uma base de dados relacionando todos os pacotes instalados, dependências deles, entre outras informações.
DPKG
O dpkg
é o gerenciador de pacotes locais na máquina, não podendo efetuar a instalação de pacotes que estejam em reposítorios online.
Opções:
Opção | Descrição |
---|---|
-l | Lista todos os pacotes instalados |
-l \<pacote> | Mesma coisa acima, mas exibe apenas um pacote. |
-L \<pacote> | Lista os arquivos 'pertencentes' ao(s) pacote(s). |
-I \<pacote.deb> | Exibe informações do pacote. |
-s \<pacote> | Exibe o status do pacote com algumas informações do pacote. |
-S \<file> | Mostra qual pacote originou o arquivo. |
-S \<pacote> | Mostra todos os arquivos originados pelo pacote |
-r \<pacote> | Remove o pacote, mas mantém arquivos de configurações, --purge remove tudo. |
-i \<pacote.deb> | Instala o pacote. |
-c \<pacote.deb> | Lista o conteúdo do pacote. |
--configure \<pacote> | Configura um pacote. |
--unpack \<pacote> | Irá desempacotar o pacote. |
-p \<pacote> | Mostra informações como Tamanho, arquitetura, versão etc. |
-C | Procura parcotes parcialmente instalados (--audit) |
Ao rodar o comando dpkg -l
podemos ver 2 letras no início da linha, antes do nome da aplicação NÃO CAI NA LPI.
Primeira Letra | Ação desejada |
---|---|
u | Desconhecido - unknown |
i | Instalado - install |
r | Removido/Desinstalado |
p | Removido inclusive os arquivos de configuração - purge |
h | Segurar/Manter - Hold |
Segunda Letra | Status do pacote |
n | Não instalado |
i | Instalado |
c | Existem arquivos de configuração instalado |
U | Descompactado |
F | Meio configurado (falha na configuração) |
h | Meio instalado (Falha na instalação) |
W | Triggers-awaited (Pacote está esperando por um gatilho de outro pacote) |
t | Triggers-pendentes (pacote foi disparado) |
Terceira Letra | Estado de erro (Se tudo tiver bem não verá nada na terceira letra) |
\<vazio> | Não existe problema relacionado a terceira letra. |
R | Reinst-required (Pacote quebrado, Reinstalação necessária) |
Para reconfigurar um pacote, usamos o comando dpkg-reconfigure
.
APT-GET
O gerenciador apt-get
é usado para fazer o gerenciamento de pacotes online, normalmente ele baixa e instalado usando dpkg
. Antes de iniciar o download, ele irá verificar se o pacote existe na sua base de dados, e caso exista, ele vai baixar e usar o dpkg
para instalar.
Comando | Descrição |
---|---|
apt-get update | Atualiza o banco de dados local (vê o que tem no mirror; repositório online), não atualiza as apicações. |
apt-get install \<pacote> | Instala um pacote. |
apt-get install -s \<pacote> | Simula a instalação de um pacote. |
apt-get upgrade | Atualiza as aplicações locais, todas que tiverem uma atualização. |
apt-get dist-upgrade | Atualiza tudo de forma inteligente, tentando resolver as dependências, muito usado para migrar de uma versão antiga de uma distro para uma mais nova (precisa ter o novo mirror). |
apt-get check \<pacote> | Atualiza o cache do pacote e verifica se há dependências quebradas |
apt-get clean | Remove todos os pacotes baixados pelo apt-get install <pacotes> , mas não limpa arquivos de bloqueio /var/cache/apt/archives e /var/cache/apt/archives/partial/ . |
apt-get autoclean | Assim como o clean, o autoclean limpa o repositório local dos arquivos de pacote. A diferença é que ele remove apenas arquivos de pacote que não podem mais ser baixados e são amplamente inúteis. |
apt-get -d install \<pacotes> | Faz somente o download do pacote, eles ficaram em /var/cache/apt/archives/ . |
apt-get remove \<pacotes> | Remove os pacotes, igual dpkg -r <pacote> |
apt-get autoremove | É usado para remover pacotes que foram instalados automaticamente para satisfazer dependências de outros pacotes e agora não são mais necessários. |
apt-get source \<pacotes> | Baixa a fonte de um determinado pacote. Para isso você precisa ter o deb-src habilitado nos mirrors. |
apt-get build-dep \<pacotes> | Configura as dependências do programa a ser instalado a partir do fonte deste programa. |
apt-get changelog \<pacotes> | Obtem o changelog do programa/pacote. |
-q | Saída para registo - sem indicador de progresso. |
Sem saída, excepto para erros. | |
-d | Fazer apenas o download - NÃO instalar ou descompactar arquivos. |
-f | Tentar corrigir um sistema com dependências erradas. |
-m | Tentar continuar se os arquivos não poderem ser localizados. |
-u | Mostrar também uma lista de pacotes actualizados. |
-b | Construir o pacote de código-fonte depois de o obter. |
-V | Mostrar números da versão detalhados. |
-c | Ler este ficheiro de configuração. |
-o | Definir uma opção de configuração arbitrária. |
Para fazer um upgrade de sistema operacional (uma versão antiga para uma versão mais nova de uma distro), o recomendado mesmo é utilizar o comanod do-release-upgrade
, ele irá atualizar de uma maneira ainda mais inteligente, resolvendo conflitos ou tentando.
APT-CACHE
Exibe as informações que ele tem na base de dados (informações sobre pacotes, versões, em qual repositório eles estão etc).
Comandos | Descrição |
---|---|
apt-cache show \<pacote> | Mostra informações do pacote que está remoto. |
apt-cache depends \<pacote> | Quais são as dependências do pacote. |
apt-cache search \<pacote> | Busca um pacote remotamente. |
apt-cache policy \<pacote> | Pesquisa tanto na base de aplicações instaladas como no mirror, mostra qual mirror o pacote está, quais versões tem disponível, qual a versão instalada, quando foi instalado (se é que foi...). |
apt-cache pkgnames | Mostra o nome de todos os pacotes instalados no sistema. |
apt-cache showpkg \<pacote> | Mostra informações completas sobre o pacote. |
apt-cache stats | Mostra uma estátistica, informando número de pacotes instalados, número de dependências entre outas informações. |
apt-cache unmet \<pacote> | Mostrar todas as dependências não satisfeitas |
apt-cache gencaches | Construir os caches de pacotes e de código-fonte |
-p | Cache de pacotes. |
-s | Cache de fontes. |
-q | Desabilita o indicador de progresso. |
-i | Mostra apenas dependências importantes para o comando unmet. |
-c | Irá ler este ficheiro de configuração. |
-o | Define uma opção arbitrária de configuração. |
Os repositórios, mais conhecidos como mirrors, ficam em /etc/apt/sources.list
.
APT-FILE
Ssado para executar mais operações no índice do pacote, como listar o conteúdo de um pacote ou localizar um pacote que contenha um arquivo específico. Esse utilitário talvez não esteja instalado por padrão no seu sistema.
Essa ferramenta funciona tanto para aplicações que estão na máquina como para aquelas que não esteja.
Nesse caso, geralmente é possível instalá-lo usando apt-get
:
$ sudo apt-get install apt-file
Após a instalação, será preciso atualizar o cache do pacote usado para apt-file
:
$ sudo apt-file update
Exibindo o conteúdo de um pacote:
$ apt-file list ksh
ksh: /etc/skel/.kshrc
ksh: /usr/bin/ksh2020
ksh: /usr/bin/rksh2020
ksh: /usr/bin/shcomp2020
ksh: /usr/share/applications/ksh.desktop
ksh: /usr/share/doc-base/ksh2020
ksh: /usr/share/doc/ksh/CHANGELOG.md.gz
ksh: /usr/share/doc/ksh/COMPATIBILITY.gz
ksh: /usr/share/doc/ksh/DESIGN.gz
ksh: /usr/share/doc/ksh/NEWS.Debian.gz
ksh: /usr/share/doc/ksh/OBSOLETE
ksh: /usr/share/doc/ksh/README.md.gz
ksh: /usr/share/doc/ksh/RELEASE.gz
ksh: /usr/share/doc/ksh/RELEASE88.gz
ksh: /usr/share/doc/ksh/RELEASE93.gz
ksh: /usr/share/doc/ksh/TODO.Debian
ksh: /usr/share/doc/ksh/TYPES.gz
ksh: /usr/share/doc/ksh/changelog.Debian.gz
ksh: /usr/share/doc/ksh/copyright
ksh: /usr/share/ksh/ksh2020.binfmt
ksh: /usr/share/lintian/overrides/ksh
ksh: /usr/share/man/man1/ksh2020.1.gz
ksh: /usr/share/man/man1/rksh2020.1.gz
ksh: /usr/share/man/man1/shcomp2020.1.gz
ksh93: /etc/skel/.kshrc
Procurando o pacote dono de um arquivo:
$ apt-file search shcomp2020.1.gz
ksh: /usr/share/man/man1/shcomp2020.1.gz
$ apt-file search libSDL2.so
libsdl2-dev: /usr/lib/x86_64-linux-gnu/libSDL2.so
Outros gerenciadores
O dselect
é uma interface de menu para o apt-get
.
O pacote denominado alien
é usado para converter pacotes .deb
(pacotes para Debian) em pacotes .rpm
(pacotes RedHat) e vice versa. Se não for usado argumento irá converter para Debian e com -r
converte para RedHat e o -i
instala o pacote.
Opção do APTITUDE | Descrição |
---|---|
aptitude full-upgrade | Executar uma atualização, possivelmente instalando e removendo pacotes |
aptitude safe-upgrade | Faz uma atualização segura de todos os pacotes do sistema |
aptitude search \<pacote> | Busca um pacote. |
aptitude reinstall \<pacote> | Baixar e reinstalar um pacote já instalado |
aptitude changelog \<pacote> | Mostrar o log de mudanças do pacote/programa |
aptitude download nmap | Baixa o pacote. |
install | Instala pacotes. |
hold | Coloca pacotes em retenção. |
unhold | Cancela o comando hold para um pacote. |
markauto | Marca pacotes como tendo sido automaticamente instalados. |
unmarkauto | Marca pacotes como tendo sido manualmente instalados. |
forbid-version | Proíbe o aptitude de atualizar para uma versão específica do pacote. |
update | Baixa as listas de pacotes novos/atualizáveis. |
build-dep | Install the build-dependencies of packages. |
forget-new | Esquece quais pacotes são "novos". |
show | Exibe informações detalhadas sobre um pacote. |
clean | Apaga arquivos de pacotes baixados. |
autoclean | Apaga arquivos antigos de pacotes baixados. |
why | mostra por que um ou mais pacotes precisariam de dado pacote. |
why-not | mostra por que um ou mais pacotes levariam a um conflito com o dado pacote, se instalado. |