====== Guix ====== O **guix** é um gerenciador de pacotes que funciona em qualquer sistema Linux com algumas funcionalidades interessantes. O gerenciamento puro e simples dos pacotes a serem instalados, com a vantagem de não necessitar de privilégios de superusuário após a instalaçao do **guix**. Também é possível usá-lo para criar //containers// dentro dos chamados ''guix shell''. Portanto o gerenciamento de pacotes dele permite a criação de ambientes controlados. Como o próprio [[https://guix.gnu.org/manual/devel/pt-br/guix.pt_BR.html#Introdu_00e7_00e3o|manual do guix]] define // > GNU Guix é uma ferramenta de gerenciamento de pacotes e distribuição do sistema GNU. O Guix facilita a instalação, a atualização ou a remoção de pacotes de software, a reversão para um conjunto de pacotes anterior, a compilação de pacotes a partir do código-fonte e geralmente ajuda na criação e manutenção de ambientes de software. // O uso do **guix** para além do gerenciamento com as funcionalidades como as descritas acima é a construção de ambientes controlados, que pode ser compreendido como uma alternativa a chroot, containers (docker ou podman), etc. Nesses ambientes podemos escolher quais pacotes irão compor o mesmo, se terá acesso á rede externa, certificados compartilhados, etc. E claro é possível usá-lo apenas para instalar e remover pacotes, não os misturando com seu sistema. Existe também o **Guix System** que é uma distribuição Linux inteiramente baseada nesse gerenciador de pacotes, mas que está fora do escopo desta postagem. ===== Instalação ===== Num sistema como o debian ou arch basta executar o script oficial de instalação com privilégios de super usuário Aqui temos que avisar que não é muito recomendado a execução de scripts de terceiros baixados da internet. Porém neste caso o projeto é tão confiável quanto os projetos que criaram o debian ou o arch linux. Portanto faça no terminal: cd /tmp wget https://guix.gnu.org/guix-install.sh chmod +x guix-install.sh ./guix-install.sh usando ''su'' para executar todos os comando acima como //root// ou adicionar ''sudo'' no início da linha de execução do script. Se preferir use o pacote oficial de sua distribuição linux. No debian sudo apt install guix No arch o pacote AUR não procede todas as configurações necessárias, fica sendo um processo de instalação completamente manual, portanto é mais fácil instalar pelo script oficial. ===== Configuração adicional ===== Para que os pacotes instalados pelo **guix** estejam acessíveis para seu perfil, é necessário informar o diretório dos binários, um script simples é sugerido pelo próprio gerenciador após você proceder com o comando ''guix'' sem nenhuma opção, apenas para verificar se a instalação foi bem sucedida. A saída será essa GUIX_PROFILE="$HOME/.guix-profile" . "$GUIX_PROFILE/etc/profile" basta adicionar essas linhas no seu //.bashrc// ou no seu //.profile//. ===== Uso básico ===== Buscar pacotes guix search nome_do_pacote pode utilizar parte do nome apenas, o problema será a saída extensa com todas as correspondências. Intalar pacotes guix install pacote1 pacote2 … Desinstalar pacotes guix remove pacote1 pacote2 … Você pode se assustar pela velocidade em que uma pacote é desistalado, isso ocorre porque o **guix** apenas desvincula aquele pacote do perfil atual. Para que os arquivos possam ser removidos de fato, será necessária uma coleta de lixo com o comando guix gc Se preferir faça a coleta de lixo de forma periódica especificando a idade é que os arquivos estão armazenados, por exemplo, para uma coleta de lixo de arquivos mais velhos que uma semana faça guix gc -d 1w Isso indica que o primeiro comando irá excluir tudo que não esteja sendo usado pelo perfil, enquanto que o último mesmo que existam arquivos não sendo usados, mas que tenham sido armazenados a menos de uma semana (flag, ''-d 1w''), tais arquivos irão permanecer. Essa funcionalidade é útil pois existem certas bibliotecas que são compartilhadas por vários pacotes. Então se um pacote é tirado do perfil mas trouxe com ele algumas bibliotecas, e num outro momento você queira instalar outro pacote que usa algumas das mesmas bibliotecas do pacote anterior, elas já não serão necessárias mais serem baixadas, apenas revinculadas ao perfil deixando de ser lixo. ==== Atualizando pacotes ==== Para atualizar os pacotes do seu perfil é necessário carregar a última versão do *guix*, para isso guix pull após a construção da nova versão do gerenciador de pacotes no seu perfil, pode proceder com a atualização dos pacotes instalados guix package --upgrade Como o **guix** funciona a partir de um //daemon// que é executado pelo root do sistema, devemos atualizar o perfil raiz também sudo -i guix pull essa flag ''-i'' permite que o comando seja executado a partir do perfil do super-usuário. Basta que faça isso com a mesma frequência de atualização do seu sistema.