Localize o melhor mirror para atualizações do Linux

 Por Ciro Mota |  24, Setembro 2021 |  Tempo de leitura aproximadamente 6 minutos.
 Edições: Revisão textual. Em 26, Fevereiro 2022.

Olá pessoal, como vão? Espero que todos estejam muito bem.

Atualizações são partes cruciais de um S.O e nada mais frustrante do que elas demorarem para baixar. Mais frustrante ainda é o método de instalação lá nos Microsoft, mas isso é papo para uma outra hora. Este artigo nasceu de um problema relatado por um dos participantes em um dos grupos no Telegram que participo, o relato dele era da imensa demora para carregar as atualizações do sistema dele, o Zorin OS.

Por ser um S.O de base Ubuntu, ele usa o mesmo processo de atualização da distro pai com exceção dos repositórios dos próprios mantenedores da distro. Neste artigo vamos conferir como podemos lidar em caso de problemas assim.

Disclaimer

Pessoal, este artigo tem a intenção de tão somente ser uma forma de troubleshooting, você deve sempre usar os mirros que forem recomendados e nunca fazer alterações indevidas nos arquivos de source.list sem ter um backup prévio do mesmo.

PS: Eu utilizei containers para os testes de artigo por uma mera questão de conveniência.

Ubuntu

Como cito logo acima, o Ubuntu é a distro pai para muitas outras distros como o Zorin OS que eu cito, como também para o Mint (falaremos dele logo abaixo), Pop!_OS entre outros. Seu sistema de atualizações consistem em mirrors espalhados pelo mundo, no qual o sistema sempre irá definir um principal da sua região.

Se acessarmos o site http://mirrors.ubuntu.com/mirrors.txt daqui do Brasil, veremos essa lista carregar endereços daqui mesmo. Caso usemos uma VPN para os EUA por exemplo, outra lista será gerada neste link. Caso nos conectemos nessa VPN em um servidor da Europa, outra lista será carregada com base no país e assim por diante. Em comum a todas as listas estará o endereço global da Canonical http://archive.ubuntu.com/ubuntu/. Muitos do que usam Ubuntu em algum momento já tiveram problemas com o mirror brasileiro e foi obrigado a mudar para o mirror global, ou simplesmente mudam para o global assim que a instalação do S.O é concluída. Perdemos um pouco de velocidade nos downloads mas ganhamos em estabilidade.

Mas e como podemos verificar um incidente de indisponibilidade? Para isso podemos usar um scrip em Python que fará essa checagem para nós, o apt-smart.

Tanto sua instalação e posterior atualização, quanto a sua sintaxe são extremamente simples e necessitamos apenas de um pequeno comando para realizar essa checagem.

Há uma ressalva para os passos de instalação indicados no link para o que de fato funciona hoje. Devido ao Python2 já ter sido depreciado, os comandos deverão ser sinalizados para Python3:

sudo apt update
sudo apt install python3-pip python3-setuptools -y
pip3 install --user apt-smart
echo "export PATH=\$(python3 -c 'import site; print(site.USER_BASE + \"/bin\")'):\$PATH" >> ~/.bashrc
source ~/.bashrc

Ao executar o comando abaixo, teremos o resultado com os mirrors ordenados em ordem do seu último update (do mirror).

apt-smart -l --url-char-len=50 -q

Resultado do script apt-smart

Após o resultado, se necessário faça alterações manuais no arquivo /etc/sources.list ou utilize a ferramenta gráfica para mudança da própria distro. Eu particularmente opto pela utilização do mirror global, mas isso vai de cada um.

Janela do Ubuntu Software e Updates

Seleção de mirror do Ubuntu Software e Updates

Linux Mint

Se você usa o Linux Mint, já deve estar familiarizado com esta função, caso ainda não esteja então saiba que fazendo jus a fornecer a melhor experiência out-of-the-box o Linux Mint já conta com uma ferramenta de verificação de mirrors interna. Para acessá-la basta ir até o Mint Update » Fontes de programas. Ao clicar em qualquer uma das opções Principal ou Base, o teste irá carregar e te informará o melhor resultado.

Fontes de programas do Mint

Se é a sua primeira vez executando o Mint Update, o mesmo te encoraja para mudar para um mirror local. Novamente, isso é opcional e caso esteja tendo alguma dificuldade nas atualizações, pode tudo ser alterado via interface gráfica.

Debian

Se o Ubuntu é o pai, o Debian é certamente o avô da maioria das distro Linux hoje. Se o uso dele em Desktops é amplo, em servidores é ainda maior.

Com isso, o Debian conta com um pacote em seus repositórios no qual é possível fazer checagem dos mirrors, para tanto precisamos apenas instalar o pacote netselect-apt. E ao executá-lo temos o resultado, nesta linha estamos fazendo um filtro para somente servidores localizados no Brasil.

netselect-apt -c BR

Resultado do netselect-apt

Como as coisas no Debian são mais direto ao ponto, se incrementarmos os parâmetros nesta linha de cima e ao final teremos um novo source.list com os resultados obtidos:

netselect-apt -c BR -n --outfile sources.list.new
  • Você deve fazer um backup do arquivo original antes de mesclar as alterações.
  • O parâmetro “n” indica que você pode querer usar os repos nonfree. Ele é puramente opcional.

Família Red Hat

Se tem um gestor de pacotes no qual eu sou fã, apesar de ser user do Ubuntu, é o dnf. Limpo, muito organizado, gosto da forma como ele executa as tarefas.

Não se convenciona a falar em troca de mirrors com ele mas saiba que possamos tirar ainda melhor proveito do poder do seu poder e objetividade. Para isso precisamos adicionar apenas dois parâmetros ao arquivo /etc/dnf/dnf.conf:

O fastestmirror=1 fará com que o S.O encontre o melhor mirror para a sua região e substitua pela definição padrão do S.O. Olha só que legal, você não precisa fazer alterações manuais de mirrors.

echo -e "fastestmirror=1" >> /etc/dnf/dnf.conf

O max_parallel_downloads=3 pode ser útil se você tem uma boa conexão e permite incrementar o número de downloads que o dnf consegue fazer de forma simultânea, caso não goste que ele faça downloads individuais.

echo -e "max_parallel_downloads=3" >> /etc/dnf/dnf.conf

Adição de linhas ao dnf.conf

Como bônus e caso você tenha um PC com boa capacidade de processamento e velocidade de disco (leia-se SSDs/Nvme) e isso é importante, poderá se aproveitar mais um pouco adicionando a flag deltarpm=true, que fará com que o download dos arquivos seja ainda menor.

echo -e "deltarpm=true" >> /etc/dnf/dnf.conf

Você pode consultar mais opções que podem ser adicionadas na documentação.

Mas e se ainda assim você quiser fazer testes nos mirrors, temos uma ferramenta para isso. Aparentemente disponível apenas para o Fedora.

Executei para testes e demorou horrores para finalizar. Mas se estiver afim de diversão, monta um container, segue os passos de compilação que são bem simples e não demoram e por fim executa.

Manjaro e outros Arch based

Na família Arch Linux e seus baseados como o Manjaro, o gestor de pacotes pacman possui a habilidade de checagem de mirrors e dos mirrors mais rápidos. Ao executar sudo pacman-mirrors teremos como resultado a lista de mirrors disponíveis como padrão da instalação. Outros parâmetros podem ser utilizados com este comando como por exemplo sudo pacman-mirrors --continent na qual serão listados e adicionados os mirrors por continente.

Manjaro mirrors continente

Além de continente, seria possível a verificação de outros mirrors por país com o comando sudo pacman-mirrors --country Brazil por exemplo.

E por fim, caso queira localizar o mirror mais rápido, o comando sudo pacman-mirrors --fasttrack seria aquele que você precisa.

Particularmente, mesmo não sendo um user do Arch e distros filhas, creio que o mirror global seria aquele que traria melhor desempenho e estabilidade em geral.

Conclusão

Reiterando o que cito acima, este artigo tem a intenção de tão somente ser uma mera forma de troubleshooting à exceção do tweak para o dnf, apesar de que ele já funciona de forma muito boa com configurações padrão, mas detalhar formas de como pode ser possível tirar um melhor proveito dos mirrors de atualização do sistema.

E você, já conhecia algum dos tópicos que foram apresentados? Conhecem outros? Me deixem saber logo abaixo nos comentários.

Até a próxima!