Módulo 4 · 4.1
Gestão de pacotes com apt
Módulo 4: Software e atualizações · Tempo de leitura: 10 minutos
Objetivo de aprendizagem: Depois desta lição, saberá instalar, atualizar e remover software com apt, ver de onde vem um pacote e reconhecer quais as atualizações que são atualizações de segurança.
Conceitos-chave: pacote, fonte de pacotes (repository), sources.list, ficheiro .sources (deb822), signed-by, apt update, apt upgrade, apt full-upgrade, remove, purge, autoremove, apt-cache policy, fonte de segurança, dnf
Porquê um gestor de pacotes?
No Windows, descarrega um programa de instalação de um site. Num servidor Linux, isso quase nunca acontece. O software chega como pacote a partir de uma fonte de pacotes (repository): um servidor da distribuição com milhares de programas, todos compilados e testados para a sua versão de Debian ou Ubuntu. O programa que obtém, instala e atualiza esses pacotes chama-se gestor de pacotes. No Debian e no Ubuntu é o apt (com o dpkg por baixo), no AlmaLinux e no Rocky Linux é o dnf.
Isto tem três grandes vantagens:
- Um só comando atualiza tudo. O servidor web, o servidor SSH, as bibliotecas e o kernel vêm da mesma fonte. Não precisa de verificar em cada site se existe uma nova versão de cada programa.
- A origem é verificada. Cada fonte de pacotes é assinada com uma chave. O apt recusa pacotes cuja assinatura não esteja correta.
- As dependências são tratadas automaticamente. Se o nginx precisar de uma biblioteca, o apt instala-a automaticamente e, mais tarde, volta a removê-la.
As fontes de pacotes: de onde vem o software?
As fontes que o apt utiliza estão em /etc/apt/. Durante muito tempo, era um único ficheiro sources.list com linhas como:
deb http://deb.debian.org/debian bookworm mainO Ubuntu 24.04 e posteriores, as imagens cloud do Debian e cada vez mais instalações novas utilizam o formato mais recente deb822: ficheiros separados com a extensão .sources em /etc/apt/sources.list.d/. É possível converter um sources.list antigo com sudo apt modernize-sources (apt 3, Debian 13). Por exemplo, no Debian 13:
anna@web1:~$ cat /etc/apt/sources.list.d/debian.sources
Types: deb
URIs: http://deb.debian.org/debian
Suites: trixie trixie-updates
Components: main
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
Types: deb
URIs: http://deb.debian.org/debian-security
Suites: trixie-security
Components: main
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpgLeia assim: a suite é a versão (trixie é o Debian 13; noble é o Ubuntu 24.04), o component é uma parte da fonte (main no Debian; main, universe, restricted e multiverse no Ubuntu), e Signed-By indica com que chave a fonte tem de estar assinada. Este último ponto é importante: uma chave pertence a uma fonte, não a todas as fontes ao mesmo tempo. Se mais tarde adicionar uma fonte de um fabricante (Docker, Caddy, PostgreSQL), esta recebe o seu próprio ficheiro de chave e a sua própria linha Signed-By (lição 9.2).
A fonte com -security no nome é a fonte de segurança. É daí que vêm as atualizações de segurança, normalmente no mesmo dia em que uma falha se torna pública. No Ubuntu, essa suite chama-se noble-security (ou o nome da sua versão).
Se ainda utilizar o antigo sources.list, tudo continua a funcionar normalmente. Apenas não misture a mesma fonte nos dois formatos, porque o apt queixa-se de linhas duplicadas.
update, upgrade e full-upgrade
A diferença entre estes três conceitos é a primeira armadilha para quem está a começar.
| Comando | O que faz |
|---|---|
apt update | Obtém a lista dos pacotes e versões disponíveis nas fontes. Não instala nada. |
apt upgrade | Atualiza os pacotes instalados para a versão mais recente dessa lista. Nunca remove nada. Uma atualização que obrigaria a remover outro pacote é ignorada. |
apt full-upgrade | O mesmo, mas também pode remover pacotes ou instalar novos, se necessário. É necessário numa atualização de versão da distribuição (lição 4.3) e, por vezes, com um novo kernel. |
Portanto, primeiro sempre update e depois upgrade:
anna@web1:~$ sudo apt update
Hit:1 http://deb.debian.org/debian trixie InRelease
Get:2 http://deb.debian.org/debian-security trixie-security InRelease [43.4 kB]
...
3 packages can be upgraded. Run 'apt list --upgradable' to see them.
anna@web1:~$ apt list --upgradable
Listing... Done
libssl3t64/trixie-security 3.5.1-1+deb13u1 amd64 [upgradable from: 3.5.1-1]
openssh-server/trixie-security 1:10.0p1-7+deb13u1 amd64 [upgradable from: 1:10.0p1-7]
tzdata/trixie-updates 2026b-0+deb13u1 all [upgradable from: 2026a-0+deb13u1](Os números de versão acima são um exemplo.) A seguir ao nome está indicada a suite de onde vem a nova versão. Tudo o que tem -security é uma atualização de segurança: essas devem ser instaladas o mais depressa possível. -updates são outras atualizações estáveis, como novos dados de fusos horários.
Em seguida:
anna@web1:~$ sudo apt upgradeO apt mostra o que vai mudar e pede confirmação. Leia essa lista. Se aparecer "The following packages will be REMOVED" (os pacotes seguintes serão removidos), passa-se algo invulgar e convém saber primeiro porquê.
Instalar, remover e limpar
anna@web1:~$ sudo apt install nginx
anna@web1:~$ sudo apt remove nginx # programa removido, a configuração em /etc mantém-se
anna@web1:~$ sudo apt purge nginx # programa e configuração removidos
anna@web1:~$ sudo apt autoremove # limpar o que já ninguém precisaA diferença entre remove e purge é útil: se quiser remover algo temporariamente e voltar a instalá-lo mais tarde com as mesmas definições, utilize remove. Se quiser mesmo começar do zero, utilize purge.
Pesquisar e obter mais informações:
anna@web1:~$ apt search fail2ban
anna@web1:~$ apt show fail2ban
anna@web1:~$ apt-cache policy openssh-server
openssh-server:
Installed: 1:10.0p1-7
Candidate: 1:10.0p1-7+deb13u1
Version table:
1:10.0p1-7+deb13u1 500
500 http://deb.debian.org/debian-security trixie-security/main amd64 Packages
*** 1:10.0p1-7 500
500 http://deb.debian.org/debian trixie/main amd64 Packagesapt-cache policy é o comando a utilizar quando quer saber de onde vem um pacote e que versão o apt vai escolher. O *** aparece junto da versão instalada, Candidate é o que uma atualização instalaria.
Versões do Debian e a versão de um programa
Uma queixa frequente: "O Debian traz uma versão antiga do nginx." É verdade e é propositado. O Debian e o Ubuntu congelam as versões no lançamento de uma release e, a partir daí, apenas acrescentam correções de segurança e reparações graves, sem novas funcionalidades. Por isso, um pacote com um número de versão "antigo" pode ter todas as correções de segurança recentes: estas foram retroportadas (backport) para a versão antiga. Reconhece-se isso pelo sufixo, como +deb13u1 ou ubuntu0.1.
Por isso, nunca compare apenas o número de versão com o site do fabricante para avaliar se está vulnerável. Consulte os avisos de segurança da sua distribuição: o Debian Security Tracker (security-tracker.debian.org) e as Ubuntu Security Notices (ubuntu.com/security/notices) indicam, para cada falha, se a sua versão foi corrigida.
Algumas regras para um servidor tranquilo
- Instale apenas o que precisa. Cada pacote é código que tem de ser atualizado e, por vezes, um serviço que fica à escuta (lição 5.1).
- Prefira a distribuição a um site. Um programa que compila por si ou descarrega como ficheiro avulso não é atualizado pelo
apt upgrade. Nesse caso, terá de acompanhar os avisos de segurança por conta própria. - Uma fonte adicional apenas do próprio fabricante, com uma chave própria e
Signed-By. Nunca adicione uma chave "para tudo" e nunca uma fonte de um site desconhecido (lição 4.3). - Leia o que o apt pergunta. Numa atualização, o apt pode perguntar se quer substituir um ficheiro de configuração alterado pela nova versão do fabricante. Se não souber o que alterou, escolha "keep the local version" (manter a versão local, a opção predefinida) e veja mais tarde a diferença com
diff: a nova versão fica ao lado como.dpkg-dist.
No AlmaLinux e no Rocky Linux
Aí, o gestor de pacotes chama-se dnf e os pacotes são .rpm. Os comandos são semelhantes aos do apt: dnf check-update (a lista), dnf upgrade (atualizar, update e upgrade num só), dnf install, dnf remove, dnf info. As fontes estão em /etc/yum.repos.d/*.repo. Muito software adicional (como o fail2ban) vem da fonte separada EPEL, que ativa primeiro com dnf install epel-release. Para mostrar apenas as atualizações de segurança, utilize dnf updateinfo list --security.
Na prática: o ecrã do VPS
Na WebOké, e na maioria dos outros fornecedores, a instalação do seu VPS já configura corretamente as fontes predefinidas da distribuição. Normalmente, não precisa de alterar nada. Atualize o servidor logo após o primeiro início de sessão com apt update e apt upgrade (lição 1.2) e, antes de grandes alterações, crie um snapshot no painel do seu fornecedor.
Resumo
- No Debian e no Ubuntu, o software vem de fontes de pacotes assinadas; o apt obtém, instala, atualiza e limpa.
apt updateapenas obtém a lista;apt upgradeatualiza sem remover;apt full-upgradetambém pode remover.- As atualizações de segurança vêm da suite com
-securityno nome;apt list --upgradableeapt-cache policymostram de onde vem uma versão. - Um número de versão antigo com
+deb13u1ouubuntu0.xpode ter todas as correções (backport): consulte os avisos de segurança da sua distribuição. - Uma fonte adicional apenas do próprio fabricante, com uma chave própria em
Signed-By.
Questionário
Exercício
Exercício Z4.1: Que atualizações são atualizações de segurança? O ficheiro de exemplo apt-upgradable.txt contém a saída de apt list --upgradable e apt-cache policy de um servidor Debian 13. Responda: que pacotes vêm da fonte de segurança, que pacote vem de uma fonte de um fabricante em vez do Debian, que versão de openssh-server está instalada neste momento, e que pacote é uma atualização estável normal sem motivo de segurança? O programa compara com a chave fixa. Se já tiver um servidor próprio, execute os mesmos comandos e veja o que obtém.
Para saber mais
- Proteger o seu VPS: os primeiros cinco minutos
- Começar a utilizar o seu VPS
- Manual do administrador Debian, capítulo 6 (apt): https://debian-handbook.info/browse/stable/apt.html
- Manual de
sources.list(5)(formato deb822): https://manpages.debian.org/trixie/apt/sources.list.5.en.html - Debian Security Tracker: https://security-tracker.debian.org/tracker/
- VPS: do primeiro início de sessão a um servidor seguro 3.3: Atualizações e atualizações automáticas
