Tutorial de Ubuntu 26.04 / Gerencie Snap, canais e conexões de interfaces
Gerencie Snaps no Ubuntu Server pela linha de comando, conferindo revisões instaladas, provedores, canais, interfaces e atualizações. Snaps são separados dos pacotes Deb do APT; mesmo para programas de mesmo nome, diferencie caminhos de execução, formatos e locais de dados.
Identifique o formato e o provedor
Use snap info NOME_DO_APP para ler provedor, descrição e canais e compare nome, versão e canal acompanhado com snap list. Use command -v COMANDO para identificar o executável. Nomes iguais não provam que mantenedores, atualização ou configurações sejam iguais.
O guia de pacotes do Ubuntu Server descreve o gerenciamento de APT e Snap.
snap list
snap changes
snap refresh --time
Registre nomes, versões e canais reais de snap list. snap changes mostra operações como instalações e atualizações. A ausência de atualizações no APT não prova que todos os Snaps estejam atualizados.
Instale e execute um aplicativo pequeno de prática
snap info hello-world
sudo snap install hello-world
hello-world
Antes de instalar, confira se hello-world já existe; preserve uma instalação e seu canal existentes. Leia o provedor antes de instalar e confira a execução. Se o comando não estiver no PATH, examine a sessão de login e /snap/bin antes de instalar cópias.
Entenda canais e confinamento
Um canal pode especificar trilha, nível de risco e ramo. Stable, candidate, beta e edge são fluxos diferentes e não têm a mesma finalidade. Prefira o fluxo estável recomendado pelo provedor e registre o canal atual e o backup dos dados antes de mudar.
Strict, classic e devmode têm condições de isolamento diferentes. Se um aplicativo exigir classic, entenda o motivo. Não acrescente --classic ou --devmode apenas para suprimir um erro de instalação.
Examine interfaces e falhas de acesso
Escolha um nome instalado em snap list e examine snap connections NOME_DO_APP. Falhas de acesso a armazenamento externo podem envolver tanto interfaces quanto montagens do sistema de arquivos (lição em inglês) ou permissões. Não conecte todas as interfaces indiscriminadamente.
Identifique a interface necessária com snap info NOME_DO_APP, snap connections NOME_DO_APP e a documentação do provedor. Conceda apenas o acesso necessário e teste-o. Registre a situação anterior antes de conectar. As conexões não substituem as permissões dos arquivos no host.
Confira interfaces declaradas e teste uma conexão
Em um Snap de servidor instalado, identifique uma interface necessária na documentação do provedor. Compare Plug e Slot em snap connections NOME_DO_APP com snap interface NOME_DA_INTERFACE. Passe ao script somente o SNAP:PLUG e o SLOT exatos observados. Se não houver plug declarado, pare em vez de inventar uma permissão.
Use uma VM descartável e isolada, sem outros administradores ou processos alterando conexões durante a prática. Antes de salvar em ~/test-snap-interface.sh, confira se o caminho já existe ou é um link simbólico; escolha outro nome novo para não sobrescrever arquivos. Salve o script completo e execute bash ~/test-snap-interface.sh SNAP:PLUG SLOT com os valores reais. Conexões já exibidas como ativas são preservadas. Teste a função documentada em outro terminal e pressione Enter para desconectar o slot solicitado. Não conceda interfaces sensíveis apenas para praticar em um servidor de produção.
set -eu
if [ "$#" -ne 2 ]; then
printf 'Usage: bash test-snap-interface.sh SNAP:PLUG SLOT\n' >&2; exit 2
fi
plug=$1
slot=$2
app=${plug%%:*}
case "$plug" in *:*) ;; *) printf 'Use the exact Plug from snap connections.\n' >&2; exit 2 ;; esac
case "$slot" in *:*) ;; *) printf 'Use the exact Slot from snap connections.\n' >&2; exit 2 ;; esac
snap list "$app"
connections=$(LC_ALL=C snap connections "$app")
printf '%s\n' "$connections"
previous_slot=$(printf '%s\n' "$connections" | awk -v p="$plug" '$2 == p {print $3}')
case "$previous_slot" in
-) ;;
'') printf 'Declared plug not found; stop.\n' >&2; exit 1 ;;
*) printf 'Already connected to %s; preserve it.\n' "$previous_slot"; exit 0 ;;
esac
restore() {
original_status=$?
trap - EXIT HUP INT TERM
if ! connections=$(LC_ALL=C snap connections "$app"); then
printf 'Cannot inspect the connection; verify restoration manually.\n' >&2; exit 1
fi
current_slot=$(printf '%s\n' "$connections" | awk -v p="$plug" '$2 == p {print $3}')
case "$current_slot" in
"$previous_slot") ;;
"$slot")
if ! sudo snap disconnect "$plug" "$slot"; then
printf 'Restoration failed; inspect the connection.\n' >&2; exit 1
fi
;;
*) printf 'Unexpected connection state; inspect before disconnecting.\n' >&2; exit 1 ;;
esac
if ! connections=$(LC_ALL=C snap connections "$app"); then
printf 'Cannot verify restoration; inspect the connection.\n' >&2; exit 1
fi
printf '%s\n' "$connections"
restored_slot=$(printf '%s\n' "$connections" | awk -v p="$plug" '$2 == p {print $3}')
if [ "$restored_slot" != "$previous_slot" ]; then
printf 'Original connection state was not restored.\n' >&2; exit 1
fi
exit "$original_status"
}
trap restore EXIT
trap 'exit 129' HUP
trap 'exit 130' INT
trap 'exit 143' TERM
sudo snap connect "$plug" "$slot"
snap connections "$app"
read -r -p 'Run your documented app test in another terminal; press Enter to restore: ' answer
Confira se o Slot passa de - ao slot solicitado e, ao sair, consulte novamente snap connections NOME_DO_APP. O script tenta desconectar apenas o slot solicitado e confirmar que a coluna voltou a ficar sem conexão; falhas de desconexão ou verificação retornam código diferente de zero. Ele também tenta a limpeza em Ctrl+C e sinais de término, mas não cobre perda de energia ou todo encerramento forçado. A consulta e a conexão não são atômicas: alterações simultâneas podem invalidar a suposição de que a conexão pertence à prática.
Voltar a coluna Slot a - não comprova restauração completa da política anterior. Uma desconexão manual pode persistir e impedir reconexão automática em uma atualização. A opção --forget altera essa política e não deve ser usada às cegas, pois a desconexão anterior também pode ter sido intencional. Registre o estado inicial e consulte o comportamento específico na documentação oficial de conexão de interfaces Snap. Verifique separadamente permissões de arquivos e política de serviços do host.
Confira atualizações, reversão e dados após a remoção
É possível solicitar uma atualização com sudo snap refresh NOME_DO_APP depois de avaliar o efeito sobre aplicativos e serviços em uso. Reverter a revisão não garante compatibilidade retroativa dos dados e não substitui backups.
Remova com sudo snap remove hello-world apenas o aplicativo de prática instalado por você. Confira snapshots automáticos de dados, quando criados, com snap saved e decida sua retenção separadamente. Remover um aplicativo, guardar um snapshot e apagar todos os arquivos do usuário são operações distintas.




