Teste aplicativos do AUR em um Docker container

 Por Ciro Mota |  21, Março 2022 |  Tempo de leitura aproximadamente 4 minutos.
 Edições: Revisão e correção de caixa de código faltante. Em 28, Março 2022.

Olá pessoal, como vão vocês? Espero que todos estejam bem.

Recentemente depois de quase dois anos usando o Ubuntu e que foi minha porta de entrada no mundo Linux decidi então migrar para o Arch Linux por algumas razões, a primeira delas ser Rolling Release, ou seja, recebe atualizações frequentes e não precisamos mais nos preocupar com versões do S.O. A segunda diz respeito ao desafio de tentar montar um sistema que chega até você cru.

Além de ser um sistema mínimo e isso tem seu público, um dos maiores atrativos do Arch Linux e seus derivados como o Manjaro é sem dúvida o AUR, o Arch User Repository, que funcionaria como uma espécie de PPA nos de base Debian/Ubuntu. Ou seja, se um app não existir no AUR muito provavelmente ele talvez não exista disponível para Linux.

E talvez ai esteja um dos problemas, por se tratar de um repositório público alguns cuidados precisam ser tomados quanto a construção e segurança dos pacotes que são disponibilizados lá. E que tal fazermos nossos próprios testes em um container e evitarmos “sujar” o sistema? É isso que vamos ver logo à seguir.

Aqui não tem muito segredo, vamos utilizar um Docker container com uma imagem devel do próprio Arch Linux e fazer a nossa mágica acontecer. Se você leu meu outro artigo sobre como rodar aplicações gráficas em um container verá que boa parte do que foi falado lá será aproveitado aqui. Caso não tenha lido: RODE APLICAÇÕES GRÁFICAS EM UM DOCKER CONTAINER.

Primeiro passo é rodar um container com a imagem archlinux:base-devel e no modo “privileged” para que tenhamos acesso ao servidor X11 e possamos rodar aplicações gráficas. Execute o comando abaixo:

docker container run -ti --privileged --name archaur -e DISPLAY=$DISPLAY \
-v /etc/localtime:/etc/localtime \
-v /tmp/.X11-unix:/tmp/.X11-unix archlinux:base-devel

Iniciação do Container

Para explicação do que cada comando faz, leia o artigo no link acima.

Como todo container o acesso é feito via modo root e para segurança na execução das aplicações as ferramentas AUR Helpers não permitem que sejam rodados comandos em modo root. Mas como no Linux nós podemos sempre contornar a situação em nosso favor, vamos adicionar um usuário e fazer toda a construção e testes por ele. Execute as linhas abaixo onde inicialmente precisamos instalar o git que é a ferramenta necessária não só para a instalação de um AUR Helper como as compilações vindas do AUR:

pacman -Sy git --needed --noconfirm

Abaixo criaremos o usuário que será utilizado para as compilações:

useradd -m archuser

Em seguida nos certificamos de que esse usuário não tenha nenhuma senha:

passwd -d archuser

Agora liberamos a execução de todo e qualquer comando deste usuário através do arquivo de controle sudoers:

echo -e '\narchuser ALL=(ALL) ALL\n' | tee -a /etc/sudoers

Se tudo deu certo até aqui, você verá algo igual:

Configuração do usuário do container

Neste passo iremos instalar o yay, um dos mais simples AUR Helpers, sugiro que consulte a sua documentação. Ou você poderia também utilizar o paru que é mantido atualmente por um dos desenvolvedores que foi do yay. Os procedimentos foram concatenados em uma única linha mas você poderia facilmente executar uma a uma apenas utilizando o prefixo sudo -u builduser bash -c '', onde o sudo chama o usuário com um shell e com a execução de comandos dentro das aspas simples.

sudo -u archuser bash -c 'cd ~&& git clone https://aur.archlinux.org/yay.git && cd yay && makepkg -si --noconfirm'

Instalação do yay

Como exemplo do funcionamento decidi testar o VSCodium, um VSCode sem telemetria e mantido pela comunidade.

sudo -u archuser bash -c 'yay -S vscodium-bin --noconfirm'

Instalação do vscodium

Depois de instalado para chamar a aplicação basta executar o nome do seu binário utilizando ainda a mesma sintaxe através do sudo e do usuário:

sudo -u archuser bash -c 'vscodium'

Nesta segunda imagem podemos ver este texto sendo redigido ao fundo e a tela do VSCodium rodando através do container:

Execução do vscodium

E só! Podemos fazer isso com qualquer aplicação gráfica ou outro pacote que esteja disponível no AUR e testá-lo sem que tenhamos que fazer no nosso próprio sistema.

Então, se dava conta de que isso era possível? Pretende usar de agora em diante para testar essas aplicações antes de instalar no seu próprio sistema? Utiliza outro método de teste ou usa o método Go horse? Me deixe saber logo abaixo nos comentários.

Espero que mais este artigo seja útil para vocês.

Abraços e até a próxima!