rcm - gerenciador de arquivos rc: ajuste e uso

Antecedentes


Quando mais de um dispositivo em funcionamento aparece em suas mãos,% username% chega a você para ter a mesma configuração aqui e ali, no trabalho e em casa. Quando comecei a tentar sincronizar arquivos, o Dropbox e o Yandex.disk eram suficientes para mim. Eles eram especialmente bons em sincronizar documentos e histórico de tagarelice, mas assim que tentei adaptá-los a .bashrc, .vimrc e similares, vários efeitos colaterais apareceram. Por exemplo, com links simbólicos nos dois sistemas, é um desastre completo; existe algum tipo de histórico apenas na caixa de depósito. Bem, eu precisaria escrever scripts para gerenciar o zoológico. Certamente algo já foi escrito, certo?


A história


Na página https://dotfiles.imtqy.com/, você pode ver um pouco menos de uma centena de utilitários, plug-ins e abordagens diferentes para gerenciar configurações - de programas individuais a programas universais. Eu recomendo fortemente que você se familiarize, é bem possível que você pare de ler mais e escolha algo mais aceitável.


O significado geral de filosofia se resume ao fato de que as configurações estão no repositório% your_favorit_vcs% de uma certa forma e a partir daí se arrastam para $HOME . Como% default_vcs% é git agora, vou usá-lo ainda mais.


Comecei meu conhecimento com dotfiles-in-git com um utilitário chamado dotgit . Começou como "simples e direto em pura festa". Mas no momento em que o autor adicionou criptografia lá, com a capacidade de criar links simbólicos diretamente para o diretório, e eu tentei descobrir tudo (por volta do início de 2017), um pepino do meu cérebro aconteceu na minha pasta pessoal com links quebrados e recuperação manual de arquivos do gita. Em geral, um dia foi alocado para procurar alternativas com a possibilidade de ajustar o comportamento e uma configuração simples.


rcm


Portanto, como já mencionado, existem realmente muitas opções para utilitários. O rcm foi escolhido pelos seguintes motivos:


  • Sh puro, nem mesmo festança. Não puxa nem python nem rubi, nada mais
  • Permite que você configure o comportamento de entrega da configuração
  • A presença de páginas de manual
  • Personalização da implantação usando as pastas tag-* e host-*
  • Suporte longo, projeto em desenvolvimento animado
  • No momento do uso, até hoje não é relevante, mas os ganchos {pre,post}-{up,down} para atualização e limpeza de arquivos de configuração são suportados

O ponto mais importante é, é claro, a documentação, porque sem ela eu não teria ido tão longe a ponto de personalizar totalmente o comportamento da implantação para mim.


Após instalar o gerenciador, 4 comandos estarão disponíveis:


  • lsrc - lista como será a configuração após o rcup
  • mkrc - adiciona o arquivo a ~/.dotfiles (por padrão, você pode alterá-lo para ~/.rcrc ) e depois instala-os novamente. Se você precisar de comportamento fora do padrão, é melhor primeiro corrigir ~/.rcrc , caso contrário, poderá haver efeitos especiais inesperados.
  • rcdn - exclui todos os arquivos de configuração gerenciados pelo rcm.
  • rcup - instala todos os arquivos. Se você usar a opção -g , será gerado um script de shell separado, que também poderá ser colocado no repositório para uso em hosts nos quais o gerenciador não está instalado.

Como tal, o ~/.rcrc é simplesmente parte do script shell incluído no comando source toda vez que os utilitários rcm são chamados. Com base nisso, ele pode ser modular, com lógica integrada. De acordo com a documentação, seu conteúdo permite controlar com precisão as configurações dos arquivos de ponto usando o rcup , por exemplo:


  • comportamento padrão: para cada arquivo dentro de ~/.dotfiles , um link simbólico é criado na pasta inicial sem um ponto de partida (por exemplo, '/home/felixoid/.dotfiles/bashrc' -> '/home/felixoid/.bashrc' , '/home/felixoid/.dotfiles/README.md' -> '/home/felixoid/.README.md' )
  • daddy ~/.vim : é um link simbólico para a pasta /home/felixoid/.dotfiles/vim (opção SYMLINK_DIRS)
  • daddy ~/.some_secret_files : copiado de /home/felixoid/.dotfiles/tag-dmz/some_secret_files (opção COPY_ALWAYS)
  • o arquivo ~/.README.md é realmente ignorado (opção EXCLUI)
  • o arquivo '/home/felixoid/.zshenv' é um link simbólico para '/home/felixoid/.dotfiles/tag-zsh/zshenv' (parâmetro TAGS)
  • a ~/bin também ~/bin gerenciada com o rcm, seu conteúdo vem de /home/felixoid/.dotfiles/bin/ (parâmetro UNDOTTED)

Às vezes, pode ser necessário mencionar o mesmo arquivo em várias opções. Por exemplo, o trecho .rcrc deve ter esta aparência se todo o conteúdo de ~/bin estiver em ~/.dotfiles/tag-bins/bin e copiado da seguinte maneira:


 COPY_ALWAYS="bin/*" TAGS="bins" UNDOTTED="bin" 

Na verdade, um exemplo de como organizar o conteúdo da pasta ~/.dotfiles está no repositório com dotfiles. Informações abrangentes estão contidas na documentação, sinta-se à vontade para ler as seguintes páginas do manual: lsrc (1), mkrc (1), rcrc (5) rcdn (1), rcm (7), rcup (1).


Incalculável e incalculável


Enquanto escrevia esse texto, surgiram boas idéias sobre como organizar o armazenamento de dados confidenciais dentro de um repositório público. Por exemplo, eu sempre estava preocupado com a pergunta: faz sentido e é possível fazer backup de chaves gpg e ssh? Só por isso, ganchos podem ser úteis: empacotá-los no alcatrão e depois criptografar com o mesmo gpg simétrico, seguido pela descompactação. Talvez eu dedique a seguinte nota a isso após a implementação. Ou talvez essa seja outra bicicleta? E tudo já foi inventado? Adicione os comentários se esse for realmente o caso.


Eu realmente espero que este material desperte interesse e desejo tentar organizar o gerenciamento de configurações em um modo semi-automático!


E uma pequena pesquisa:

Source: https://habr.com/ru/post/pt419281/


All Articles