====== GNU Stow ====== A partir da documentação, com o comando //man stow//, podemos verificar que ele foi criado para auxiliar que pacotes compilados da fonte pudesse ter seus binários //linkados// para os diretórios padrão, permitindo assim uma maior flexibilidade sobre qual versão poderíamos usar no sistema, isto é, o ususário compila em seu diretório pessoal e faz os links simbólicos dentro dos diretórios padrão, por exemplo, ///usr/local/bin/emacs// será um link para o binário emacs dentro de um diretório que possue o emacs compilado direto da fonte. Hoje os gerenciadores de pacote modernos já constroem os links e muitos como o Nix e o Guix conseguem gerenciar versões distintas do mesmo pacote de uma forma até simples, então o que resta de funcionalidade para o **stow**? ===== Instalação ===== Em sistemas tipo Debian, apenas faça $ sudo apt install stow ===== Uso básico ===== Vou usar como exemplo duas configurações básicas, uma que geralmente está em todos os diretórios pessoais logo na raiz, o arquivo //.bashrc//, e outra está escrita dentro da pasta //.config/qutebrowser//, para ilustrar arquivos de configurações de aplicativos que deixam suas configurações dentro do diretório //.config//. Primeiramente vamos organizar nossos //dotfiles// dentro de um diretório para esse propósito, posteriormente podemos usar o //git// para gerenciar o versionamento desses arquivos e subir os mesmos para um serviço como o [[https://www.github.com|github]] ou o [[https://www.codeberg.org|codeberg]], assim teremos nossas configurações sempre salvas há um comando de distância para termos todas as configurações de volta. Crie um diretório dos //dotfiles//, por exemplo $ mkdir ~/dotfiles Agora queremos que nossa primeira configuração seja do //bash// então $ cd dotfiles $ mkdir bash e adicionamos o arquivo //.bashrc// dentro desse diretório, de preferência já com as personalizações que você fez ao longo do uso de seu sistema e deseja armazená-las. Para adicionar esse arquivo basta dentro do diretório //dotfiles// usar o //stow// $ stow -t /home/username bash Agora pode verificar que seu arquivo //~/.bashrc// é um link simbólico para o arquvo armazenado em //~/dotfiles//. veja que usamos **-t** isso indica o alvo (//target//) para o qual queremos que o link seja contruído e **bash** indica o aplicativo o qual queremos adicionar os dotfiles, nesse caso só existe um arquivo //.bashrc//. Vamos a mais um exemplo, agora o arquivos não fica na raiz do diretório do //username// mas sim no diretório oculto de configurações (//.config//). Em nosso diretório //~/dotfiles// vamos criar a pasta do pacote que iremos armazenar as configurações $ mkdir qutebrowser $ mkdir qutebrowser/.config $ mkdir qutebrowser/.config/qutebrowser Dentro do último diretório criado podemos adicionar o arquivo //config.py// que contém as configurações personalizadas do navegador //qutebrowser//, que desejamos guardar. Agora basta usar o //stow//, sempre dentro da pasta //dotfiles// stow -t /home/username qutebrowser ===== Resumo ===== A sintaxe básica é $ stow -t /home/username package Claro que dentro de seu diretório de dotfiles, trocando o //username// pelo seu nome de usuário e //package// pelo pacote que você organizou os dotfiles dele dentro desse caminho. Para construir tudo de uma vez só $ stow -t /home/username * -R Assim todos os pacotes organizados no ///dotfiles// serão linkados no //target// (**-t**), a opção **-R** (//restow//) é usual para remover links simbólicos que você não usa mais, caso não use esse opção os links antigos irão continuar.