Você tem alguma ideia sobre como instalar pacotes no Ubuntu com o comando apt
. Esses pacotes vêm dos repositórios do Ubuntu.
O que dizer sobre repositórios terceirizados ou externos? Não, eu não estou falando de PPA aqui.
Mais cedo ou mais tarde, você encontrará instruções de instalação que vão em pelo menos quatro linhas. Você instala algo chamado apt-transport-https
e, em seguida, faz algo com gpg e sources list. Depois disso, você instala o pacote.
Não se lembra completamente. Deixe-me compartilhar um exemplo para instalar a versão mais recente do Yarn no Ubuntu:
sudo apt install apt-transport-https curl
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
sudo sh -c 'echo "deb https://dl.yarnpkg.com/debian/ stable main" >> /etc/apt/sources.list.d/yarn.list'
sudo apt update && sudo apt install yarn
Você geralmente se depara com esse método de instalação, instalando ferramentas de programação diretamente dos desenvolvedores.
Muitas pessoas apenas seguem as instruções sem pensar duas vezes sobre o que está acontecendo aqui. Nada de errado com isso, mas saber que o processo realmente melhora seus conhecimentos sobre o assunto e também pode ajudar na solução de problemas.
Deixe-me explicar a lógica por trás dessas linhas.
Compreendendo o procedimento de instalação de repositórios externos
Antes de prosseguir, recomendo ler esses dois artigos para que as coisas sejam um pouco mais claras para você:
Para se lembrar rapidamente, aqui está uma representação visual de repositórios e gerenciador de pacotes no Linux.
Ilustração do repositório e do gerenciador de pacotes
A ideia inteira aqui é que você adiciona um novo repositório externo ao seu sistema. Desta forma, você poderá baixar e instalar pacotes disponíveis neste novo repositório. Se o repositório fornecer uma atualização na versão do pacote, você chegará a atualizar o pacote instalado junto com as atualizações do sistema (apt update && apt upgrade
).
Então, como isso funciona? Vamos pelas linhas uma por uma.
Parte 1: Obtendo suporte HTTPS para apt
A primeira linha é esta:
sudo apt install apt-transport-https curl
curl
é uma ferramenta para download de arquivos no terminal Linux. A parte principal aqui é a instalação de apt-transport-https
e na verdade não precisamos mais dele.
Confuso? Este pacote apt-transport-https
permite que seu sistema acesse repositórios sobre o protocolo HTTPS seguro. Por padrão, repositórios do Ubuntu usam http, não https.
Dê uma olhada na captura de tela abaixo. Os https são os repositórios externos que adicionei no meu sistema. Repositórios do Ubuntu e PPA usam http.
Na versão mais antiga do Gerenciador de Pacotes APT, o suporte HTTPS não foi incluído. O pacote apt-transport-https
adiciona suporte a HTTPS ao APT. Para adicionar um repositório que use HTTPS, este pacote é instalado primeiro.
Eu não disse que não é mais necessário? Sim, porque as versões mais recentes do APT (superior a 1,5) suportam HTTPs e, portanto, você não precisa mais instalar mais o apt-transport-https
.
E ainda assim você vê este pacote mencionado nas instruções. Isso é mais por motivos legados ou para versões de distribuição realmente antigas que podem estar usando uma versão mais antiga do APT.
Agora, você pode se perguntar por que os repositórios do Ubuntu usam http, não https quando https é o protocolo seguro. Não é um risco de segurança? O próximo segmento responderá a essa pergunta.
Parte 2: Adicionando a chave GPG do repositório remoto
Repositórios do Linux têm esse mecanismo de segurança baseado em GPG integrado. Cada repositório adicionou sua chave pública GPG às chaves confiáveis do seu sistema. Os pacotes dos repositórios são "assinados" por essa chave GPG e graças à chave pública armazenada, seu sistema verifica se o pacote vem do repositório.
Se houver uma incompatibilidade entre as chaves, seu sistema mostrará um erro em vez de instalar ou atualizar pacotes do referido repositório.
Até agora tudo bem. O próximo passo é adicionar a chave GPG pública do repositório externo ao seu sistema Linux para que confie no pacote vindo a partir deste repositório.
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
No comando acima, você baixa a chave GPG da URL dada usando curl
. A opção sS
garante que você não vê a saída inundada (modo silencioso), mas mostra só erro (se houver). A última -
diz ao apt-key
para tomar stdin
em vez de um arquivo (que é a saída do comando curl
neste caso).
A chave de download é adicionada ao sistema com o comando apt-key add
.
Você pode ver as chaves GPG adicionadas por vários repositórios em seu sistema usando o comando apt-key list
.
Lista de chaves GPG
Essa é uma maneira de adicionar a chave GPG ao sistema. Você verá alguns outros comandos que parecem um pouco diferente, mas fazem o mesmo trabalho de adicionar a chave pública do repositório para o seu sistema.
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
Você notará um aviso de que o apt-key
está obsoleto. Você ainda pode usar o comando apt-key
até Ubuntu 22.04, mas ele acabará por ser removido. Não vamos nos preocupar com isso no momento.
Parte 3: Adicionando o repositório externo à sua lista de fontes
O próximo comando adiciona uma nova entrada na lista de fontes do seu sistema. Desta forma, o sistema vai saber que tem de verificar este repositório de pacotes e atualizações.
sudo sh -c 'echo "deb https://dl.yarnpkg.com/debian/ stable main" >> /etc/apt/sources.list.d/yarn.list'
Há um arquivo /etc/apt/sources.list
que contém os detalhes dos repositórios do Ubuntu. Este arquivo não deve ser tocado. Todos os repositórios adicionais devem ser colocados em seu próprio respectivo arquivo (que termina com a convenção .list
) no diretório /etc/apt/sources.list.d
.
Repositórios externos devem ter seu arquivo próprio no diretório /etc/apt/sources.list.d
Isso torna o gerenciamento de pacotes mais fácil. Se você estiver removendo um repositório do sistema, você só precisa excluir o arquivo fonte correspondente. Não há necessidade de mexer com o arquivo sources.list
principal.
Vamos olhar o comando em um pouco mais detalhadamente.
sudo sh -c 'echo "deb https://dl.yarnpkg.com/debian/ stable main" >> /etc/apt/sources.list.d/yarn.list'
Com sh
, você está pedindo para executar o comando em um novo shell, em vez do subshell. A opção -c
informa ao comando sh
para ler os comandos do operando em vez de entrada padrão. Em seguida, ele executa o comando echo
que basicamente acrescenta a linha deb https://dl.yarnpkg.com/debian/ stable main
ao arquivo /etc/apt/sources.list.d/yarn.list
(arquivo será criado )
Agora, pode haver inúmeras maneiras que você pode criar um arquivo .list
no diretório especificado e adicionar a linha com detalhes de repositório na mesma. Você poderia fazer assim:
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
Você entendeu a essência, certo?
Parte 4: Instalando a aplicação do repositório recentemente adicionada
Até agora, você adicionou a chave GPG do repositório e a URL do repositório para o sistema.
Mas o sistema ainda não sabe sobre pacotes disponíveis a partir deste novo repositório. É por isso que você precisa atualizar o cache local de metadados do pacote pela primeira vez com este comando:
sudo apt update
Seu sistema terá as informações sobre os pacotes disponíveis a partir do repositório recém-adicionado e você pode instalar o pacote agora:
sudo apt install yarn
Para economizar tempo, você pode executar os dois comandos um após o outro em uma única linha.
sudo apt update && sudo apt install yarn
Os &&
garantem que o segundo comando é executado somente quando o comando anterior foi concluído sem qualquer erro.
E assim o processo é concluído.
Será que tornou as coisas claras ou confundiu ainda mais?
Eu expliquei a lógica por trás dos passos para a utilização de repositórios externos no Ubuntu. Espero que você tenha uma melhor compreensão do tema agora, mas também é possível que muitos detalhes ficaram confusos.
Se as coisas ainda não estão claras ou se você tiver outras dúvidas, por favor me avise. Se você notar imprecisões técnicas, por favor, deixe-me saber na seção de comentários.
Via itsfoss.com. Você pode conferir o post original em inglês:
Installing Packages From External Repositories in Ubuntu [Explained]Última atualização deste artigo: 4 de august de 2021