Controlando DOTFILES com GNU Stow e GNU Make
Hello, TabNews!
Devo me apresentar brevemente. Me chamo Leonardo. Estou começando a estudar programação e tenho experiência como usuário avançado de sistemas GNU/Linux — e espero que este conhecimento venha ser útil nos meus estudos.
Em seguida apresento os elementos do título do artigo sem enrolação.
DOTFILES
Comumente são arquivos de configurações do usuário de determinadas aplicações. Eles costumam ser nomeados com um “.” ( ponto = dot ) no início.
Exemplo:
~/.nvmrc
~/.gitignore
~/.env
GNU Stow
Quando você instala um programa, são gerados arquivos em diferentes localizações dependendo de seu sistema operacional. Considere o programa tabnews
instalado em um Linux, os arquivos, como executáveis, dados de usuário e man pages podem ser encontrados em:
/usr/bin/tabnews
/usr/share/tabnews
/usr/man/tabnews
Fazer o controle e tracking de arquivos em locais distintos pode virar uma dor de cabeça — e o GNU Stow pode ser o remédio certo. Leia mais na documentação online.
GNU Make
O utilitário make
tem o propósito básico de manter grupos de programas, por meio de regras ( rules ) declaradas seguindo uma estrutura padrão:
target ... : prerequisites ...
recipe
...
Um rule é referenciada pelo arquivo alvo ( target ) que pode tanto ser apenas um nome simbólico de uma ação para cumprir — por exemplo, install
, test
, clean
— ou um diretório real.
Os pré-requisitos ( prerequisites ) ou dependências podem ser arquivos, pastas ou outras rules — que serão chamadas previamente.
A receita ( recipe ) é composta de ações que o make
pode executar no sistema. Leia mais em GNU Make.
Eu menti...
Sim, eu menti. Na verdade, são três as ferramentas que uso para gerenciar meus dotfiles, pois o git
é tão importante quanto as outras. Ontem, 3 de maio de 2025, resolvi planejar quais ferramentas, das que conhecimento, vou usar para minha nova jornada de aprendizagem.
No mesmo dia, percebi que, no meu caso de uso, o make
resolve o problema de praticidade que eu tinha; primeiro, interagir com o stow
; segundo, instalar as aplicações que preciso enquanto documento e mantenho de maneira simples o meu sistema.
Veja no meu GitHub como ficou simples a integração: