Como detalhar as atualizações de pacotes com apt, apt-get e aptitude

Sempre surge alguma curiosidade específica, sobre algum pacote de software, em particular, que está para ser atualizado no meu sistema.
Esta dica funciona no Ubuntu e no Debian e pode ser aplicada com os comandos apt, apt-get ou o aptitude.
Quem usa o Debian Testing ou o Ubuntu Alpha/Beta, pode ter que atualizar diariamente o seu sistema.
Este “incômodo” é o preço que se paga para usar software atualizado e (razoavelmente) seguro.
Claro que o processo de atualização diária do sistema sempre pode ser incluído no cron, caso seja um incômodo.
Eu gosto, contudo, de acompanhar as mudanças no software instalado em meu notebook pessoal.
Portanto, diariamente, tenho o costume de rodar o comando apt para verificar e fazer as atualizações necessárias.

Este texto é para aqueles casos em que você se pergunta “que diabos estão atualizando neste pacote, aí?”

Como detalhar atualizações de um pacote com o apt-get, apt ou aptitude

Tanto faz usar um como o outro. O resultado é o mesmo.
Com a opção ‘changelog’, é possível baixar e mostrar os relatório de atualizações dos pacotes. Veja um exemplo, envolvendo o pacote do wget:

apt-get changelog wget

O resultado exibe o log de atualizações e correções de bugs em ordem de data, a partir da mais recente:

wget (1.18-2) unstable; urgency=medium

  * added OpenSSl 1.1.0 patch from upstream git. closes: #828599

 -- Noël Köthe <noel@debian.org>  Sat, 02 Jul 2016 16:45:14 +0200

wget (1.18-1) unstable; urgency=medium

  * new upstream release from 2016-06-10
    - fixed CVE-2016-4971 closes: #827003
    - fixed segmentation fault when terminal width is small. closes: #823891
  * debian/control: updated Standards-Version, no changes needed
  * debian/changelog fixed spelling errors

 -- Noël Köthe <noel@debian.org>  Sat, 11 Jun 2016 20:30:44 +0200

wget (1.17.1-2) unstable; urgency=low

  * applied patch from Margarita Manterola. Thanks a lot:
    - Add udeb support, taken from the work done by Colin Watson for Ubuntu
      in 1.10.2-2ubuntu2 and forward.
    - Added dependency on libssl-dev for the udeb, as gnutls does not provide
      a udeb package.

...

Só pela curiosidade, é possível ver, na listagem acima, que existe trabalho da hacker argentina Margarita Manterola, na correção de bugs no wget.
Se você prefere usar o apt para realizar o trabalho, tudo funciona igual. Veja:

apt changelog systemd

Esta é uma forma de acompanhar a evolução de seus aplicativos favoritos.
Para os que preferem usar o aptitude, o procedimento é idêntico:

aptitude changelog wget

wget changelog

10 exemplos de uso do comando APT no Debian e Ubuntu

Você pode usar o comando apt para instalar novos aplicativos no seu sistema Ubuntu, Debian e distribuições derivadas.
A ferramenta trabalha com o gestor de pacotes padrão do Debian, dpkg, e é usada também para manter o seu sistema atualizado.
O apt tem as mesmas funcionalidades que o aptitude e a apt-get.
Este texto se baseia na versão 1.2.9, presente no Ubuntu 16.04 LTS Xenial Xerus. Vale destacar que o desenvolvimento do apt é um trabalho em progresso — e funcionalidades podem ser acrescentadas, modificadas ou retiradas em versões futuras — mas acho que isto vale para qualquer software.
Há 2 bons motivos para usar o apt, em vez das outras duas mais conhecidas:

  1. Você pode digitar menos, se optar pelo apt, na linha de comando.
  2. Esta será uma ferramenta padrão no Ubuntu, a partir da versão 16.04 LTS Xenial Xerus e no Debian.

A sigla APT, quer dizer Advanced Package Tool — ferramenta de pacotes avançada, numa tradução livre.
É constituída de uma séria de ferramentas, que fazem parte do núcleo do sistema Debian e Ubuntu.
O comando apt provê uma interface limpa e bonita, na linha de comando, com barra de progresso e cores para identificar itens da interface.

Use a ferramenta para instalar e atualizar aplicativos ou todo o sistema

A sintaxe do comando apt

Se você já conhece e usa o aptitude e o apt-get, será fácil se adaptar a esta ferramenta.
A sintaxe básica se resume a:
apt opções comando nome-do-pacote
ou (caso queira instalar mais de um pacote)
apt opções comando nome-do-pacote1 nome-do-pacote2
É possível usar curingas, para instalar múltiplos pacotes, com o mesmo prefixo:
apt install nome-do-pac*

O conjunto de ferramentas do APT, para realizar tarefas administrativas, requer privilégios. Portanto, você precisa se autenticar como superusuário (root) ou usar o sudo para executar o utilitário apt.

Se quiser entender a diferença entre o su e o sudo, leia este artigo.
Vamos aos exemplos práticos.

Como sincronizar pacotes com o apt

Para baixar informações sobre pacotes de todas as fontes configuradas, use apt update:

apt update

Este procedimento é recomendável antes de iniciar uma instalação ou um upgrade. Ou seja, antes de executar um install, use um update, conforme o exemplo anterior.
Ao final do relatório do comando, é possível localizar uma linha falando quantos pacotes (packages) há para ser atualizados.

Get:1 http://br.archive.ubuntu.com/ubuntu xenial InRelease [247 kB]
Hit:2 http://br.archive.ubuntu.com/ubuntu xenial-updates InRelease             
Hit:3 http://security.ubuntu.com/ubuntu xenial-security InRelease       
Hit:4 http://br.archive.ubuntu.com/ubuntu xenial-backports InRelease    
Get:5 http://br.archive.ubuntu.com/ubuntu xenial/universe amd64 Packages [7.392 kB]
Get:6 http://br.archive.ubuntu.com/ubuntu xenial/universe i386 Packages [7.373 kB]
Get:7 http://br.archive.ubuntu.com/ubuntu xenial/universe Translation-en [4.299 kB]
Fetched 19,3 MB in 10s (1.911 kB/s)                                            
Reading package lists... Done
Building dependency tree       
Reading state information... Done
156 packages can be upgraded. Run 'apt list --upgradable' to see them.

Como atualizar o sistema com o apt

Use o comando ‘upgrade’ para realizar a atualização de todos os pacotes atualmente instalados em seu sistema (desde que haja atualizações disponíveis).
Este comando segue algumas regras:

  • Ele instalará pacotes adicionais, que sejam requeridos para satisfazer as dependências.
  • Pacotes já existentes e instalados, não serão removidos pelo processo de upgrade.
  • Não instala a nova versão de algum pacote se houver a necessidade de remover outro pacote conflitante ou desatualizado.
apt upgrade

Se você preferir, pode optar pelo uso do ‘full-upgrade’ — que remove pacotes instalados, caso seja necessário para atualizar o sistema como um todo.

apt full-upgrade

A opção ‘full-upgrade’ é necessária para atualizar, por exemplo, o Ubuntu 16.04 para 16.04.1.
Ele não vai atualizar a sua distro de 16.04 para 16.10, contudo.
Se quiser apenas obter uma lista de pacotes que podem ser atualizados no seu sistema, use o comando assim:

apt list --upgradable

Como instalar novos pacotes de aplicativos

O comando ‘install’ realiza a instalação de novos pacotes no seu sistema.
Para instalar o editor de áudio Audacity, use o seguinte comando, por exemplo:

apt update
apt install audacity

Como remover pacotes de aplicativos do sistema

Para remover, use o ‘remove’:

apt remove audacity

ou

apt purge audacity

O ‘purge’ desinstala, além dos pacotes, seus arquivos de configuração.

Como encontrar o pacote de aplicativos que eu quero

Se você não sabe exatamente qual o nome de determinado pacote ou aplicação, use o mecanismo de busca do apt.
Com o comando ‘search’ é possível fazer busca por palavras dentro das descrições dos pacotes nos repositórios.

apt search audio

Você pode combinar o comando grep, para obter uma busca mais refinada:

apt search audio | grep -C 2 -i blue
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

  Bandlimited wavetable-based oscillator plugins for LADSPA hosts

bluedevil/xenial 4:5.5.4-0ubuntu1 amd64
  KDE Bluetooth stack

bluez-btsco/xenial 1:0.50-0ubuntu6 amd64
  Bluez Bluetooth SCO tool

bplay/xenial 0.991-10 amd64
--
  jQuery plugin that plays and controls audio files in a webpage

jquery-jplayer-bluemonday/xenial,xenial 2.7.0-1 all
  Blue Monday skin for jPlayer

Como exibir informações sobre pacotes antes de instalar

Se você quiser obter informações específicas sobre algum destes pacotes, use o comando ‘show’:

apt show bplay
Package: bplay
Version: 0.991-10
Priority: optional
Section: universe/sound
Origin: Ubuntu
Maintainer: Ubuntu MOTU Developers <ubuntu-motu@lists.ubuntu.com>
Original-Maintainer: Carlos Laviola <claviola@debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 73,7 kB
Depends: libc6 (>= 2.6.1-1)
Download-Size: 18,8 kB
APT-Sources: http://br.archive.ubuntu.com/ubuntu xenial/universe amd64 Packages
Description: Buffered audio file player/recorder
 The bplay package provides a simple command-line utility for playing
 and recording audio files in raw sample, VOC and WAV formats.
 .
 To use this program you need a soundcard of some kind and the
 appropriate driver configured into your kernel.
 .
 When run the program creates two processes which share a memory
 buffer.  It does reading/writing on the disk and the sound device
 simultaneously, in order to be less liable to `pause' because the
 disk is too slow or too busy.

Os comandos ‘apt search’, ‘apt show’ e ‘apt list’, entre outros, não requerem privilégios administrativos para serem executados.
Somente aqueles capazes de produzir alterações no sistema, irão pedir seu “crachá de superusuário”.

Como listar pacotes disponíveis para instalação nos repositórios

Você pode obter uma lista completa de pacotes através da opção ‘list’.
Se você quiser encontrar os pacotes relacionados ao PHP 7, use o comando desta forma:

apt list 'php7*'
Listing... Done
php7.0/xenial,xenial 7.0.4-5ubuntu2 all
php7.0-bcmath/xenial 7.0.4-5ubuntu2 amd64
php7.0-bz2/xenial 7.0.4-5ubuntu2 amd64
php7.0-cgi/xenial 7.0.4-5ubuntu2 amd64

...

php7.0-sqlite3/xenial 7.0.4-5ubuntu2 amd64
php7.0-sybase/xenial 7.0.4-5ubuntu2 amd64
php7.0-tidy/xenial 7.0.4-5ubuntu2 amd64
php7.0-xml/xenial 7.0.4-5ubuntu2 amd64
php7.0-xmlrpc/xenial 7.0.4-5ubuntu2 amd64
php7.0-xsl/xenial,xenial 7.0.4-5ubuntu2 all
php7.0-zip/xenial 7.0.4-5ubuntu1 amd64

ubuntu 16.04 list php7 packages
Esta forma é equivalente à opção combinada ao comando grep:
apt list | grep php7. A opção é sua.

Jogue fora o lastro, para voar mais alto

Remova os pacotes de bibliotecas e aplicativos desnecessários do seu sistema.

Em computadores e carros: não basta ter potência. Tem que ser leve!

Tirar tudo o que não se precisa, é a chave para ter um sistema rápido e seguro.
O ‘autoremove’ ajuda a enxugar o seu sistema, removendo pacotes de bibliotecas instaladas (por que eram necessárias para a instalação de outros programas), que não são mais requeridas por nenhum outro pacote.
Pode ser usado para encontrar e remover versões antigas do kernel (que ocupam espaço considerável) no seu sistema.
Veja como usar:

apt autoremove

Uma opção mais completa (radical) é a seguinte:

apt --purge autoremove

Como editar as fontes dos pacotes

Se você sabe o que está fazendo pode editar as fontes dos repositórios — de onde o sistema irá baixar seus softwares.

sudo apt edit-sources 

Ubuntu 16.04 edit sources

Como configurar uma barra de progressos colorida na execução do apt, apt-get e aptitude

Adicionar uma barra de progressos é uma das personalizações mais rápidas a ser feita com os comandos apt, apt-get e aptitude.
O ajuste é feito em uma única linha, em um único arquivo e serve para os aplicativos da família APT.
Se você tem o Ubuntu 16.04 LTS Xenial Xerus, estes ajustes já são padrão para o utilitário apt. Mas você pode usar este tutorial para fazer os ajustes de cores, conforme descrito no final.
A barra tem um apelo visual, mostra o andamento do processo de instalação ou remoção de aplicativos e não pesa no seu sistema — de fato, é um recurso que já está incluído desde a versão do apt 1.0.
Barra de progressos na execução do apt-get e aptitude no Ubuntu e no Debian
Se você estiver interessado em conhecer as diferenças entre os programas apt-get e aptitude, leia este post.
E, se estiver com tempo sobrando, confira esta brincadeira com os dois utilitários.

Como instalar a barra de progressos do apt

Não há necessidade de instalar qualquer software novo.
Tudo o que se precisa fazer é adicionar um arquivo texto à configuração do apt.
Crie o arquivo de configuração:

sudoedit /etc/apt/apt.conf.d/99progressbar

… e acrescente a seguinte linha a ele:

Dpkg::Progress-Fancy "1";

Grave o arquivo e saia.
Dpkg::Progress-Fancy "1";
O novo ajuste terá efeito na execução dos seguintes comandos:

  • apt-get install, aptitude install e apt install
  • apt-get remove, aptitude remove e apt remove

Se você tiver algum problema com a alteração ou não gostar dela, pode revertê-la apenas removendo o arquivo criado:

sudo rm /etc/apt/apt.conf.d/99progressbar

Você também pode desabilitar a barra de progresso mudando a variável Progress-Fancy "1"; para Progress-Fancy "0";.

Como alterar a cor da barra

Você pode alterar a cor da barra, acrescentando a seguinte linha ao arquivo de configuração:

Dpkg::Progress-Fancy::Progress-Bg "%1b[40m";

Na Wikipedia, há uma tabela com códigos de cores adequados para uso nesta linha da configuração.

Referências:

https://mvogt.wordpress.com/2014/04/04/apt-1-0/.
http://askubuntu.com/questions/445245/how-do-i-enable-fancy-apt-colours-and-progress-bars.

Introdução ao aptitude no Debian, para usuários Ubuntu.

Se você se espantou com o fato de não ter encontrado o apt-get no Debian, este texto é pra você.
De fato o apt-get, que nasceu no Debian GNU/Linux, não lhe pertence mais. A ferramenta evoluiu e agora se chama aptitude.
Há 2 boas notícias para você:

  1. Você pode continuar a usar o aptitude com (quase) todas as mesmas opções e parâmetros que usava o apt-get
  2. se quiser, pode instalar o apt-get no Debian e usá-lo também

Dicas de uso do aptitude

Geralmente, as ferramentas de linha de comando integram uma série de operações — gestão de listas de pacotes, obtenção de pacotes, desempacotamento e instalação, configuração — dentro de um único comando acompanhado de seus argumentos.
No Debian, a principal ferramenta de instalação de software é o aptitude (e você pode instalá-la e usá-la no Ubuntu também).
O apt-get tem o mesmo propósito, mas não é mais recomendada para uso no Debian.
Veja algumas instruções básicas de uso do aptitude:

  • aptitude update — equivalente ao ‘apt-get update’, serve para atualizar o banco de dados interno dos pacotes disponíveis para instalação (ou remoção).
  • aptitude safe-upgrade — equivalente ao ‘apt-get -u upgrade’, usado para atualizar todos os pacotes já instalados no seu sistema.
  • aptitude search string — equivalente ao ‘apt-get cache string‘, usado para buscar uma string dentro da relação de pacotes do repositório. Se você quiser encontrar aplicativos que capturem a tela, use o comando ‘aptitude search screenshot’.
  • aptitude show nome-do-pacote — equivalente a ‘apt-get show nome-do-pacote, serve para obter informações sobre o pacote pesquisado.
  • aptitude install — equivale ao ‘apt-get install’, que é usado para instalar novos pacotes de softwares no sistema.
  • aptitude remove — tal como o ‘apt-get remove nome-do-pacote‘, serve para remover, desinstalar pacotes do sistema.

Diferenças entre o aptitude e o apt-get

A lógica dos desenvolvedores Debian é diferente da lógica que move os desenvolvedores da Canonical.
Isto traz, como consequencia natural, algumas diferenças aos seus projetos.
Veja alguns pontos em que o aptitude difere do apt-get:

  • O aptitude irá remover automaticamente pacotes elegíveis, enquanto sua contra-parte requer um comando em separado para isto.
  • Os comandos para atualizar a distro tem nomes diferentes:
    apt-get upgrade e apt-get dist-upgrade (Ubuntu); aptitude safe-upgrade e aptitude full-upgrade (Debian).
  • O aptitude compreende todas as funções do apt-get, do apt-cache e do apt-mark — 3 comandos separados no Ubuntu.
  • Há leves diferenças sintáticas nas queries de busca do aptitude em relação ao apt-cache.
  • O aptitude tem os comandos ‘why’ e ‘why-not’ que servem para informar quais pacotes, dentre os que foram instalados manualmente, estão interpondo barreiras a alguma ação que você esteja tentando no sistema.
  • O aptitude pode te dizer por que algumas de suas ações não são possíveis (como os comandos de instalação, remoção e atualização de pacotes).
    Além disto, pode sugerir como resolver o problema.
    O apt-get só avisa que sua ação não é possível.

O aptitude foi concebido para ser usado como programa de nível alto (de nível de usuário). O apt-get foi concebido para usado por programas de alto nível, como o aptitude.

Conclusão

sudo vs su

Uma outra mudança, para quem chega do Ubuntu, é que o comando sudo não vem instalado no Debian.
Claro que você pode instalar o sudo.
A filosofia de trabalho e uso do Debian, contudo, é outra.
Aqui, quando você precisa realizar tarefas administrativas, como (des)instalação de softwares, você deve se logar como administrador do sistema.
Uma forma de se logar como root, executar a tarefa e sair em seguida, como se faz usando o sudo, é através do comando ‘su -c’.
Veja um exemplo:
No Debian: su -c 'aptitude install synaptics'.
No Ubuntu: sudo apt-get install synaptics.
Tenha em mente que, no Debian, a senha pedida pelo sistema é a do root e não a sua (de usuário).
Sugiro a leitura do artigo Diferenças entre SU e SUDO, onde o tema é abordado com maior profundidade.

As diferenças tendem a diminuir, com o passar do tempo.
Alguns desenvolvedores trabalham nos dois projetos — o que traz um intercâmbio de experiências.
Da minha parte uso as 2 ferramentas — aptitude, no Debian. apt-get, no Ubuntu.
Cada qual, no seu quadrado.

Referências

https://elias.praciano.com/2015/08/qual-a-diferenca-entre-su-e-sudo/
https://wiki.debian.org/DebianPackageManagement
http://unix.stackexchange.com/questions/767/what-is-the-real-difference-between-apt-get-and-aptitude-how-about-wajig

Como instalar e usar softwares a partir das PPAs?

Para poder instalar algum software de alguma PPA, é necessário mostrar ao Ubuntu onde encontrá-la.
PPA é uma abreviatura para Personal Package Archive ou Arquivo de Pacote Pessoal.
Ubuntu logo
É sempre bom lembrar que os softwares contidos nas PPAs não são verificados ou monitorados pela Canonical.
A responsabilidade de verificar, monitorar e atualizar é da pessoa ou instituição de onde você os está baixando.
Em outras palavras, não fazem parte dos repositórios oficiais e você deve instalá-los por sua própria conta e risco.
Existe artigos que recomendam não instalar programas fora dos repositórios oficiais da sua distribuição — especialmente em máquinas de produção.
Você foi avisado.

As PPAs são uma forma legítima para desenvolvedores distribuírem seus softwares diretamente a usuários Ubuntu.
Muitos aplicativos começaram sendo disponibilizados desta forma até serem incluídos nos repositórios oficiais.
Este meio também é usado por programadores e empresas para disponibilizar versões mais novas (ainda em teste) de seus aplicativos — enquanto estes não chegam aos repositórios oficiais

Se pra você é mais importante a estabilidade do sistema do que experimentar novidades em softwares, este post não é pra você.

Como adicionar uma PPA a lista de fontes

É possível adicionar uma PPA ao seu sistema com uma simples linha de comando, no terminal.
Siga os passos:

  1. — Na página em que se encontra a PPA que você quer, procure por um título que sugira algo como “adicione esta PPA” ou “add this PPA“. Anote a localização da PPA, que deve ser parecido com ppa:nome_do_pacote/ppa.
  2. — Abra um terminal e digite o comando
    sudo add-apt-repository ppa:user/ppa-name

    Captura de tela  do ubuntu add-apt-repository
    Exemplo de uso do add-apt-repository.

    Substitua ppa:user/ppa-name pela localização da qual você tomou nota, acima.
    Ao executar este comando, o sistema irá buscar a chave da PPA — isto permite ao seu sistema Ubuntu verificar a autenticidade dos pacotes, desde que foram disponibilizados pelo autor.
  3. — Para finalizar, atualize e sincronize os repositórios no seu sistema:
    sudo apt-get update
  4. Se você está instalando uma PPA de uma versão mais nova de algum software já existente nos repositórios oficiais, acrescente o comando:

    sudo apt-get dist-upgrade

Isso é tudo.
Agora já é possível instalar todos os softwares contidos no novo repositório, com o apt-get.
Alternativamente, é possível fazer isto tudo editando o arquivo sources.list, conforme ensinado neste tutorial.