A Guide to Yum and Apt
Overview
P>Package Managers are a great feature of every Linux system. Permitem-nos manusear facilmente a instalação, remoção e inspecção de pacotes de software.
Neste tutorial, aprenderemos a usar dois dos mais famosos: YUM e APT.
Gerentes de Pacotes num Nutshell
Antes de começar, vamos ver quais são efectivamente os Gerentes de Pacotes.
Em Windows, normalmente instalamos software descarregando e executando instaladores executáveis.
Em Linux, ainda podemos fazer o mesmo, descarregando manualmente e instalando pacotes no formato esperado pela nossa distribuição. O método principal, contudo, consiste em confiar nos gestores de pacotes para navegar no software disponível (juntamente com o instalado), bem como instalá-lo, actualizá-lo, e desinstalá-lo.
As versões de software fornecidas pelos gestores de pacotes podem não ser sempre as mais recentes, mas todo o processo é mais simples, mais rápido e mais seguro.
Vamos agora ver o que são YUM e APT, e como funcionam.
YUM – Yellowdog Updater, Modified
YUM é um utilitário de gestão de pacotes para distribuições baseadas em RPM. RPM (Red Hat Package Manager) é o gestor de pacotes que sistemas como RHEL e CentOS são baseados em.
YUM usa RPM debaixo da capota, escondendo a sua complexidade através de uma abstracção de alto nível.
Fedora 22 e RHEL 8 introduziram uma reescrita de YUM, chamada DNF, que provavelmente se tornará o novo padrão para sistemas baseados em RPM.
APT – Advanced Packaging Tool
APT, do outro lado, é uma colecção de diferentes ferramentas utilizadas para gerir software em distribuições baseadas em DPKG.
DPKG significa Debian PacKaGe e é o gestor de pacotes no núcleo de sistemas como Debian e Ubuntu.
APT envolve as chamadas de baixo nível para DPKG para fornecer aos utilizadores uma interface de fácil utilização.
É digno de nota que APT é um acrónimo usado em vários contextos diferentes. É o sistema de embalagem (APT), o pacote Linux sob o qual é distribuído (apt), e também uma das ferramentas que formam a biblioteca (apt, apt-get, apt-cache, e outras).
4.1. apt
apt é a mais recente ferramenta do gestor de pacotes do APT.
É frequentemente uma fonte de confusão porque os utilizadores não têm a certeza se usam o apt ou apt-get para as suas operações e quais são as diferenças.
Deixemo-nos esclarecer aqui: o apt é a ferramenta certa quando se manipula manualmente um sistema baseado em Debian. Devemos sempre preferi-lo em vez de apt-get e apt-cache, pois unifica e simplifica as operações principais dos outros dois.
P>Também fornece uma barra de progresso útil juntamente com algumas outras pequenas vantagens, como saída colorida e informação adicional.
4.2. apt-get
apt-get, do outro lado, é a escolha certa se vamos escrever as nossas operações de gestão. Fornece uma interface mais estável, mais funcionalidades, e também permite uma personalização mais profunda.
Era a ferramenta padrão para todo o tipo de operações até ao Ubuntu 16.04. No Ubuntu 16.04, o apt tornou-se a opção preferida para uso humano.
4.3. apt-cache
apt-cache, finalmente, é uma ferramenta que complementa o apt-get, fornecendo informação sobre o software instalado e o software disponível também.
4.4. Snappy
Canonical, a empresa por detrás do Ubuntu, lançou recentemente um novo sistema de embalagem agnóstica de distribuição chamado Snappy.
snap packages are self-contained and can be installed in Ubuntu as well as in Fedora, CentOS, Arch, Gentoo, e assim por diante.
Enquanto as últimas versões Ubuntu distribuem alguns pacotes principalmente através do Snappy, o APT continua a ser a forma oficial de gerir pacotes de software, pelo menos por agora.
Perguntas
Vejamos agora como podemos usar estas ferramentas para consultar os nossos gestores de pacotes.
5.1. Listar pacotes
Podemos pedir ao YUM para listar os nossos pacotes com os seguintes comandos:
# List installed and available packages from repositories:yum list all# List only installed packages:yum list installed# List only available packages:yum list available# List installed and available kernel packages:yum list kernel
Com APT, em vez disso, podemos listar os nossos pacotes:
# List installed and available packages from repositories:apt list# List only installed packages:apt list --installed
No caso de querermos ver apenas os pacotes disponíveis, podemos recorrer a algum grep, uma vez que não há nenhum comando APT para o fazer fora da caixa:
# List only available packages:apt list | grep -v installed
Para o scripting, podemos também considerar recorrer à solução mais próxima da lista apt disponível a partir do apt-cache:
apt-cache search .
Cuidado que o resultado será diferente tanto no número de ocorrências como na sua ordem de retorno, no entanto.
5.2. Pacotes de Pesquisa
Com YUM, podemos procurar um pacote contendo um termo específico no seu nome ou descrição:
yum search SOMETHING
Desta vez, em APT é idêntico:
apt search SOMETHINGapt-cache search SOMETHING
5.3. Obter Detalhes do Pacote
Após sabermos em que pacote estamos interessados, podemos querer verificar os seus detalhes.
Em YUM:
yum info MY_PACKAGE
E de forma semelhante, em APT:
apt show MY_PACKAGEapt-cache show MY_PACKAGE
Gestão de Pacotes
Agora que já vimos como procurar e inspeccionar pacotes de software, vejamos como geri-los:
6.1. Actualização de Informação de Pacotes
Primeiro de tudo, precisamos de actualizar o nosso índice de pacotes.
Estes comandos não actualizam nenhum pacote instalado, apenas descarregam a informação mais recente sobre os pacotes que podem ser instalados ou actualizados.
Em YUM é:
yum check-update
Em APT, em vez disso, é simplesmente:
apt updateapt-get update
Devemos sempre executar o apt update antes de qualquer outra operação.
6.2. Instalação de um pacote
Para instalar um pacote em YUM:
yum install MY_PACKAGE
Again, em sistemas Debian não difere nada:
apt install MY_PACKAGEapt-get install MY_PACKAGE
6.3. A actualização de um pacote
Actualização de um pacote pode ser feita de formas diferentes.
No YUM, o comando yum update executa internamente a actualização do yum check-update, o que significa que não precisamos de executar o último, a menos que queiramos evitar instalar algo depois de actualizar o índice de pacotes. Podemos actualizar todos ou alguns pacotes como se segue:
# Update the package index and every package:yum update# Update only the package MY_PACKAGE:yum update MY_PACKAGE# Apply security-related package updates:yum update --security
Or:
# Update every package:apt upgradeapt-get upgrade # Update every package along with their dependencies:apt full-upgradeapt-get dist-upgrade# Update only the package MY_PACKAGE:apt-get install --only-upgrade MY_PACKAGE# Apply security-related package updates:unattended-upgrade --dry-run -d
É importante saber que actualizar os pacotes juntamente com as suas dependências implica potencialmente desinstalar o software existente e instalar também novo software se tal for exigido pelo processo de actualização.
Os comandos de actualização padrão, por outro lado, nunca desinstalarão nada. Contudo, ao contrário do apt-get upgrade (que também não instala nada), o apt upgrade poderá instalar novo software se necessário.
6.4. Remoção de um Pacote
Algumas vezes precisamos de remover um pacote de software. Vamos então explorar as diferentes formas de o fazer, desde o superficial e suave até ao profundo e final.
Para nos livrarmos de um pacote instalado e possivelmente das suas dependências em YUM podemos fazer um de dois comandos equivalentes:
yum erase MY_PACKAGEyum remove MY_PACKAGE
Em RHEL7 ou superior, é possível apagar também pacotes adicionais desnecessários com autoremove:
yum autoremove MY_PACKAGE
As formas Debian de apagar um pacote são, em vez disso:
apt remove MY_PACKAGEapt-get remove MY_PACKAGE
Contudo, se quisermos remover também a configuração do pacote, purgando completamente o sistema do mesmo, então podemos explorar a purga:
apt purge MY_PACKAGEapt-get purge MY_PACKAGE
6.5. Limpeza
Por vezes, o nosso sistema será poluído por pacotes órfãos, que já não são necessários mas que continuam a ocupar espaço.
Podemos remover estes pacotes indesejados em YUM através de autoremove, sem qualquer nome de pacote:
yum autoremove
Isto também funciona da mesma forma nas distribuições Debian:
apt autoremoveapt-get autoremove
Gestão de Repositórios
Cutem sistemas de empacotamento começam com um conjunto de repositórios oficiais a consultar para buscar pacotes.
No entanto, a comunidade está a prosperar, e muitas vezes o pacote que precisamos está em falta nos repositórios oficiais, ou está lá mas numa versão demasiado antiga para se adequar às nossas necessidades.
Nestes casos, podemos querer adicionar repositórios não oficiais à lista de gestores de pacotes (prestando sempre atenção ao facto de poder representar um problema de segurança).
7.1. Adição de um Repositório
Adicionar um repositório em YUM é uma operação manual, que consiste em criar um ficheiro com a extensão .repo sob a pasta /etc/yum.repos.d.
O ficheiro deve conter toda a informação sobre o repositório personalizado a que nos estamos a ligar.
Tentemos adicionar o repositório AdoptOpenJDK:
# /etc/yum.repos.d/adoptopenjdk.reponame=AdoptOpenJDKbaseurl=http://adoptopenjdk.jfrog.io/adoptopenjdk/rpm/centos/7/$(uname -m)enabled=1gpgcheck=1gpgkey=https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public
No APT, no entanto, as coisas são bastante diferentes. A chave GPG do repositório deve ser descarregada e adicionada ao chaveiro do APT com a tecla apt-key add:
wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | sudo apt-key add -
Então, neste ponto, o repositório pode ser adicionado através de add-apt-repository -sim seguido pelo URL:
add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/
Contrário para YUM, todos os repositórios são guardados num único ficheiro, /etc/apt/sources.list.
7.2. Remoção de um Repositório
Retirada de um repositório no YUM é realizada de forma diferente dependendo de como foi instalado.
Podemos executar o seguinte comando e analisar a sua saída:
rpm -qa | grep -i CUSTOM_REPOSITORY
Se o pacote RPM do repositório for encontrado, significa que foi instalado através do RPM, e podemos removê-lo usando -e:
rpm -e CUSTOM_REPOSITORY_RPM_PACKAGE
Outra forma, podemos simplesmente apagar o ficheiro do repositório:
rm /etc/yum.repos.d/CUSTOM_REPOSITORY.repo
Também podemos desactivá-lo sem o apagar, simplesmente rodando enable=1 para enable=0 no ficheiro do repositório.
No APT, por outro lado, podemos simplesmente fazer:
add-apt-repository --remove ppa:CUSTOM_REPOSITORY/ppa
Alternativamente, podemos comentar as linhas relativas ao repositório no ficheiro /etc/apt/sources.list.
Outras operações
Estes dois fazem muitas outras operações. Vamos cobrir algumas delas.
8.1. Reinstalando um pacote
Em caso de um pacote corrompido, como se faltassem alguns ficheiros, podemos reinstalá-lo com:
yum reinstall MY_PACKAGEapt reinstall MY_PACKAGEapt-get reinstall MY_PACKAGE
8.2. Instalando uma versão específica de um pacote
Por vezes, podemos precisar de instalar uma versão específica de um pacote.
P>Podemos verificar as versões disponíveis de um pacote com:
yum list MY_PACKAGE --showduplicatesapt-cache showpkg MY_PACKAGE
Então, podemos apontar para a versão desejada para uma nova instalação:
yum install MY_PACKAGE-WANTED_VERSIONapt install MY_PACKAGE=WANTED_VERSIONapt-get install MY_PACKAGE=WANTED_VERSION
YUM também nos permite baixar de uma versão existente para uma das versões previamente instaladas:
yum downgrade MY_PACKAGE-WANTED_VERSION
8.3. Instalar um Grupo de Pacotes
Alguns pacotes são combinados num grupo para um propósito comum e podem ser instalados de uma só vez.
Vamos dar outro exemplo do mundo real e pensar em instalar o ambiente gráfico num servidor Linux.
Instalar o Sistema X Window e grupos GNOME irá poupar-nos o incómodo de instalar centenas de pacotes à mão:
yum groupinstall 'X Window System' 'GNOME'
O gestor de pacotes Debian, no entanto, trata-os como pacotes simples, pelo que o clássico comando apt install é suficiente:
apt-get install xorg
Conclusion
Neste tutorial, aprendemos os conceitos relacionados com YUM e APT, bem como a utilização prática dos seus comandos principais.
Embora só tenhamos arranhado a superfície, devemos agora ser capazes de lidar com o software nos nossos sistemas RedHat e baseado em Debian.