Localize o melhor mirror para atualizações do Linux

 Por Ciro Mota |  24, Setembro 2021 |  Tempo de leitura aproximadamente 11 minutos.
 Edições: Adição do Pop_OS Em 10, Outubro 2023.

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, que consistia 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 desse tipo nas principais distros e claro, abordaremos o Zorin OS.

Índice:

Pequena observação

Pessoal, este artigo tem a intenção inicialmente de ser uma forma de correção de problemas. Você deve sempre usar os mirros que forem recomendados pela sua distro e apenas mudar somente em caso de problemas, além do principal que é nunca fazer alterações indevidas nos arquivos de source.list ou /etc/yum.repos.d ou /etc/pacman.d/mirrorlist sem ter um backup prévio dos mesmos ou ter conhecimento de como reverter essas modificações sob pena de deixar o sistema incomunicável com os servidores de atualizações e consequentemente suscetível a problemas devido a falta das atualizações.

PS: Eu utilizei containers em alguns dos testes deste artigo por uma mera questão de conveniência.

Continua após a publicidade

Ubuntu

O Ubuntu é a distro pai para muitas outras distros como é o caso do Zorin OS citado como o motivador da escrita do artigo, como também para o Mint (falaremos dele logo abaixo) e entre outros. Seu sistema de atualizações assim como todas outra distros consistem em mirrors espalhados pelo mundo no qual o sistema sempre irá definir um principal da sua região durante o processo de instalação.

Se acessarmos daqui do Brasil o site http://mirrors.ubuntu.com/mirrors.txt 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 que usou de conexão na VPN 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 (eu já tive) 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.

Continua após a publicidade

Mas e como podemos verificar um incidente de indisponibilidade e decidir ou não pela mudança? Para isso podemos usar um script em Python que fará essa checagem para nós, o apt-smart. Apesar de ser um script antigo ele ainda é funcional.

Tanto sua instalaçã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 GitHub para o que de fato funciona hoje. Devido ao Python2 já ter sido depreciado nas distros 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 (Servidor Principal) mas isso vai de cada um.

Janela do Ubuntu Software e Updates

Seleção de mirror do Ubuntu Software e Updates

Pop!_OS

Ubuntu é a base para o sistema da System76 que vem sendo bem usado aqui no Brasil e mundo à fora. Porém seus repositórios não são os do Ubuntu sendo o pessoal da System76 que realiza a curadoria e disponibilização dos pacotes que serão lançados na distro e todos eles apontam para um único endereço: apt.pop-os.org. Não há como alterá-los e nem há alternativas públicas recomendadas pela distro de acordo com a sua documentação.

Continua após a publicidade

De qualquer forma se desejar verificar as fontes existentes elas são gerenciadas pela Loja da distro. Acesse e clique no menu hamburger, lá você encontrará a opção System Software Sources e na nova janela que abrir você terá controle sobre as fontes de apps da distro incluindo Flatpaks.

Loja de apps do Pop!_OS com exibição do menu lateral

Janela de configuração de fontes de atualizações do Pop!_OS

Zorin OS

O Ubuntu também é a base para o Zorin OS e com isso os mirrors de atualizações para a base do sistema são os mesmos da distro pai. Neste caso poderá contar com os mesmos problemas com o mirror local brasileiro e consequentemente a mesma solução que é a mudança para o mirror global.

Continua após a publicidade

As configurações de mirrors estão um pouco escondidas nele mas podemos acessá-la através do “Atualizador de programas” e em seguida clicar em “Configurações”. Diga-se, a mesma tela de atualizações e configurações do Ubuntu. Em "Baixar de" podemos então marcar como Servidor Principal confirmar e aceitar que o sistema recarregue as listas.

Seleção de mirrors no Zorin OS

Aqui um pequeno adendo, pelo que pude notar esse procedimento não atualiza todos os endereços dos mirrors configurados na instalação e será necessário editar alguns manualmente como na imagem abaixo:

Alteração manual de alguns mirrors no Zorin OS

Daria para resolver de forma muito mais rápida? Sim. O terminal quando bem utilizado é seu amigo. Especificamente neste caso basta executar a linha abaixo:

sudo sed -i 's/http:\/\/br./http:\/\//g' /etc/apt/sources.list

Vai funcionar também no Ubuntu. Mas lembre-se: Backup do conteúdo ou do arquivo antes das alterações.

Linux Mint

Se você usa o Linux Mint, já deve estar familiarizado com esta função e caso ainda não esteja então saiba que fazendo jus de fornecer a melhor experiência pronto para uso 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 para o melhor mirror da sua região.

Continua após a publicidade

Você também pode aplicar exatamente este mesmo procedimento caso esteja utilizando a versão LMDE da distro.

Debian

Debian é certamente a base da maioria das distro Linux hoje e incluindo o próprio Ubuntu. Talvez seu uso em Desktops não seja tão amplo quanto o Ubuntu e seu sabores mas em servidores é sabidamente largamente bem utilizado.

Ao contrário do servidor do Ubuntu os servidores nacionais do Debian costumam funcionar muito bem. Mas ainda assim o Debian conta com um pacote em seus repositórios no qual é possível fazer checagem dos mirrors e para tanto precisamos apenas instalar o pacote netselect-apt. Ao executá-lo com esta linha de comando abaixo estamos fazendo um filtro para somente servidores localizados no Brasil e ao final temos o resultado:

netselect-apt -c BR

Resultado do netselect-apt

Como as coisas no Debian são mais direto ao ponto, se incrementarmos parâmetros nesta linha de cima ao final teremos um novo arquivo source.list com os resultados obtidos e poderemos substituir ou copiar as informações mostradas ou inserir manualmente:

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 e poderá ser omitido.
Continua após a publicidade

Família Red Hat

Se tem um gestor de pacotes no qual eu sou fã é o dnf. Limpo, muito organizado, gosto da forma como ele executa as tarefas. Muito mais verificações são feitas nas operações afim de evitar uma quebra do sistema e por isso algumas pessoas tendem a dizer que ele é “lento”, o que não é tão verdade assim.

Não se convenciona a falar em troca de mirrors com ele mas saiba que possamos tirar 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 dnf 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 ou escolha de mirrors. Porém pode ser que você caia na limitação de banda dos servidores, ai infelizmente não terá muito o que ser feito.

sudo 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. O seu padrão são 3 downloads simultâneos, caso opte você pode incrementar o valor. Até 10 é um valor interessante de se usar apesar da documentação citar como limite de 20. Valores maiores que 10 poderão contar com a limitação dos servidores de atualizações conforme cito logo acima.

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

Adição de linhas ao dnf.conf

Como bônus, nas versões mais recentes do Fedora o dnf já conta de forma automática com a configuração deltarpm=true ativa por padrão, o que significa que o dnf fará downloads levemente menores dos arquivos durante o processo de atualização. Caso não esteja utilizando uma versão mais recente você poderá forçar também essa configuração no arquivo dnf.conf. Contudo essa é uma função que está próxima de ser descontinuada.

Continua após a publicidade

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

Manjaro

No o Manjaro apesar do gestor principal ser o pamac o gestor de pacotes por debaixo do capô é pacman e ele claro, 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 creio que o mirror Global ou Estados Unidos seria aquele que traria melhor desempenho e estabilidade em geral.

Continua após a publicidade

Arch Linux

Mas se você for um usuário Arch (BTW) então você deve usar o reflector, com ele você terá sempre disponível e atualizados os mirrors mais rápidos na região que você configurar.

sudo pacman -Sy reflector

Após instalado configure as regiões nas quais você quer que o script faça a varredura de mirrors editando o arquivo /etc/xdg/reflector/reflector.conf com o editor de sua preferência, descomente a linha # --country e defina nela o/os países que deseja.

Configuração do reflector

Após editar você deverá reiniciar o sistema ou forçar o recarregamento do serviço através do sudo systemctl start reflector. Ative também o sudo systemctl enable reflector.timer para que as checagens sejam feitas de forma automática sempre semanalmente. Consulte a documentação do Arch (que é maravilhosa) para um pouco mais de detalhes.

Continua após a publicidade

OpenSUSE

O OpenSUSE talvez seja a distro que é menos usada aqui em terra Brasilis e algumas pessoas podem atribuir a isso a uma demora na utilização dos repos. Na instalação padrão do OpenSUSE Leap 15.4 no momento da escrita deste artigo (versão de longo prazo) não conta nativamente com opção de mirrors, apenas o mirror padrão e oficial. Contudo nós podemos utilizar outros mirrors do mundo inteiro e inclusive brasileiros.

Neste link podemos ver uma lista desses mirrors. É importante verificar se a versão que você tem instalado está disponível para o mirror local. Caso esteja é possível adicionar através de interface gráfica. Para isso acesse o YaST » Repositórios de Software. Em seguida devemos clicar no botão “Adicionar” e por fim apontar para o link direto do repo. No caso do teste abaixo adicionei os repos oss (apenas Open Source) e non-oss (com software proprietários).

Tela inicial da adição de repositórios do YaST

Adição de repositório free

Adição de repositório non-free

Feito isso você pode desabilitar os outros repositórios configurados. E finalmente no próprio YaST há o botão para atualizar a nova lista de pacotes ou via terminal através do comando sudo zypper update.

Continua após a publicidade

Uma observação, você deverá passar o caminho completo para o repo e versão do sistema como mostrado na imagem. Caso opte pelo repo da Unicamp você deverá fazer o mesmo e como exemplo teremos uma URL parecida: “https://ftp.unicamp.br/pub/opensuse/distribution/leap/15.4/repo/"

Caso use o Tumbleweed você também precisará fazer o apontamento correto da URL do mirror. Para ele você pode tentar o mirror-br.opensuse.org ou opensuse.c3sl.ufpr.br.

Meio trabalhoso mas creio que deva resolver os problemas de velocidade nos updates da distro.

Continua após a publicidade

Conclusão

À exceção do tweak para o dnf apesar de que ele já funciona de forma muito boa com configurações padrão, mas caso necessário, este artigo também detalha formas de como pode ser possível tirar um melhor proveito dos mirrors de atualização do sistema e adaptar ao nosso uso. Reitero também que podemos utilizar esse artigo como uma forma de correção de problemas caso ocorram. Uma das duas situações deverá ser o seu caso.

E você, já conhecia algum dos métodos que foram apresentados? Conhecem outros além do bom e velho terminal? Me deixem saber logo abaixo nos comentários.

Até a próxima!