Importante! Este material foi elaborado para ser lido em terminais e acompanhado (e praticado) em dispositivos de desktop!
No terminal:
$ sudo passwd [USERNAME]
passwd
altera a senha de qualquer
usuário.root
, a informação de seu
nome é opcional.Por convenção, argumentos apresentados entre colchetes são sempre opcionais, a menos que se especifique o contrário.
Na instalação, eu cometi um erro de digitação do nome da máquina, por isso, teremos que aletrá-lo!
Utilitário hostname
:
$ hostname
trila
Arquivo /etc/hostname
:
$ cat /etc/hostname
trila
Arquivo /etc/hosts
:
$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 trila
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Utilitário hostnamectl
:
Static hostname: trila
Icon name: computer-vm
Chassis: vm 🖴
Machine ID: 56bb08bff9e14b7bb18bf4810ad5eabc
Boot ID: 38af6c1545474fbb8f502e409a8d89df
Virtualization: kvm
Operating System: Debian GNU/Linux trixie/sid
Kernel: Linux 6.6.13-amd64
Architecture: x86-64
Hardware Vendor: QEMU
Hardware Model: Standard PC _Q35 + ICH9, 2009_
Firmware Version: 2023.11-6
Firmware Date: Sat 2024-02-10
Firmware Age: 1w
blau@trila:~$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 trila
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Como root
ou com sudo
:
# hostnamectl set-hostname NOVO_NOME
Para conferir as informações de hostname:
$ hostnamectl
Conteúdo atual:
$ vi /etc/hosts
i
.ESC : x ENTER
.Importante! Sempre confira se a alteração foi bem-sucedida!
Nota: só precisaremos reiniciar o sistema quando houver atualizações do kernel.
Como root
ou com sudo
:
# apt update
Como usuário normal:
$ apt list --upgradable
Como root
ou com sudo
:
# apt upgrade
Como root
ou com sudo
:
# apt full-upgrade
Como root
ou com sudo
:
# apt autoremove
Como root
ou com sudo
:
# apt purge ~c
Para os próximos encontros, precisamos garantir que os seguintes programas estejam instalados:
git
: Sistema de controle de versões;gawk
: Implementação GNU da linguagem AWK;lynx
: Navegador web pelo terminal;w3m
: Navegador web pelo terminal;vim
: Compilação mais completa do editor Vim
(vim-common
);fzf
: Buscador fuzzy de propósito geral
(utilizaremos em scripts);build-essential
: Coleção de bibliotecas e compiladores
C/C++.Como root
ou com sudo
:
# apt install PACOTES
Como root
ou com sudo
:
# apt purge PACOTES
Como usuário normal:
$ apt-cache search '.*'
Hoje, esta lista resulta em mais de 70 mil pacotes! Para reduzir os
resultados, nós podemos filtrá-lo com uma expressão regular mais
específica e a opção --names-only
.
Por exemplo:
$ apt-cache search --names-only 'w3m'
w3m - paginador para navegação WWW com excelente suporte a tabelas/quadros
w3m-el - interface Emacs simples para w3m
w3m-img - Utilitários com suporte a imagens embutidas para w3m
w3m-el-snapshot - simple Emacs interface of w3m (development version)
Nota: se você ainda não souber expressões regulares, não se preocupe, porque o padrão que você digitar será buscado em qualquer parte do nome do pacote.
Existem outras formas de listar e buscar pelos pacotes disponíveis, mas esta tem a vantagem de ser simples e ainda trazer uma breve descrição dos pacotes encontrados. Caso queiramos uma descrição mais completa, podemos executar:
$ apt search '^w3m'
Sorting... Pronto
Full Text Search... Pronto
w3m/unstable,now 0.5.3+git20230121-2+b2 amd64 [installed]
paginador para navegação WWW com excelente suporte a tabelas/quadros
w3m-el/unstable 1.4.632+0.20210201.2305.54c3ccd-3 all
interface Emacs simples para w3m
w3m-el-snapshot/unstable 1.4.632+0.20221206.2328.4f27810-1 all
simple Emacs interface of w3m (development version)
w3m-img/unstable,now 0.5.3+git20230121-2+b2 amd64 [installed,automatic]
Utilitários com suporte a imagens embutidas para w3m
Se ainda não for completa o bastante, é só executar:
$ apt info '^w3m'
Antes de vermos as várias formas de listar os pacotes instalados no
Debian, é preciso observar que, na maioria das vezes, um pacote
dependerá da instalação de outros pacotes. Sendo assim, é muito difícil
listar apenas aqueles que nós instalamos ativamente usando o
apt
.
$ apt list --installed
Um problema do utilitário apt
é que ele não oferece uma
interface CLI confiável e faz questão de deixar isso claro emitindo o
aviso abaixo quando utilizado, por exemplo, em um pipe:
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
Como essa mensagem é impressa na saída padrão de
erros (STDERR
), nós podemos omiti-la
redirecionando-a para o dispositivo nulo /dev/null
.
Se o redirecionamento:
$ apt list --installed | wc -l
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
342
Com o redirecionamento:
$ apt list --installed 2> /dev/null | wc -l
342
Outro problema que afeta o uso do apt list
,
principalmente em scripts, é que ele emite a mensagem
Listing...
pela saída padrão
(STDOUT
):
$ apt list --installed 2> /dev/null | head -5
Listing...
adduser/unstable,now 3.137 all [installed]
apparmor/unstable,now 3.0.12-1+b2 amd64 [installed,automatic]
apt-listchanges/unstable,now 3.27 all [installed]
apt-utils/unstable,now 2.7.10 amd64 [installed]
Isso exige algum tipo de filtragem extra, como:
$ apt list --installed 2> /dev/null | grep -v 'Listing...' | head -5
adduser/unstable,now 3.137 all [installed]
apparmor/unstable,now 3.0.12-1+b2 amd64 [installed,automatic]
apt-listchanges/unstable,now 3.27 all [installed]
apt-utils/unstable,now 2.7.10 amd64 [installed]
apt/unstable,now 2.7.10 amd64 [installed]
A opção -l
do dpkg
lista os pacotes
instalados em uma tabela com várias outras informações:
$ dpkg -l
Como o dpkg
possui uma interface CLI confiável, nós
podemos filtrar as linhas para obter o resultado desejado.
Por exemplo:
$ dpkg -l | awk '$2 ~ /^python/ {print $2}'
python-apt-common
python3
python3-apt
python3-certifi
python3-chardet
python3-charset-normalizer
python3-debconf
python3-debian
python3-debianbts
python3-httplib2
python3-idna
python3-minimal
python3-pkg-resources
python3-pycurl
python3-pyparsing
python3-pysimplesoap
python3-reportbug
python3-requests
python3-six
python3-urllib3
python3.11
python3.11-minimal
Contudo, o dpkg
possui uma ferramenta específica para
filtrar os dados exibidos nos resultados…
Com o dpkg-query
, nós podemos escolher quais campos da
tabela deverão ser impressos no terminal.
Por exemplo, para vermos apenas os nomes dos pacotes:
$ dpkg-query -W -f='${Package}\n' | head -5
adduser
apparmor
apt
apt-listchanges
apt-utils
Nota: o comando é longo e difícil de memorizar, mas pode ser facilmente utilizado em scripts ou através de “apelidos”.