yadm – czyli trzymajmy swoje pliki konfiguracyjne pod kontrolą

Kto z nas nie pamięta tych wspaniałych chwil – gdy zdecydowaliśmy się zmienić po raz pierwszy kolory w terminalu, gdy ustawiliśmy w vim tryb nocompatible, zainstalowaliśmy pluginy, gdy stworzyliśmy swój własny skrypt, pozwalający na zdalne włączenie ekspresu do kawy. Tyle pięknych momentów i jedna wspólna cecha – kropka przed ich nazwą właściwą. I nazwa ogólna, “dotfiles”.

Wszystkie pliki konfiguracyjne, które wraz z wydłużającym się użytkowaniem komputera gromadzą się w naszym katalogu domowym, zawierają w sobie pewną część nas. I choćby zwykły profil przeglądarki, gdzie zmieniliśmy tylko kolor okienka – szkoda byłoby je stracić. Jednocześnie, przy ustawianiu nowej maszyny, warto swój zestaw konfiguracyjny mieć pod ręką, gdyż powłoka zdaje się zachowywać zupełnie nieintuicyjnie bez modyfikacji, do których jesteśmy przyzwyczajeni, edytor bez podświetlania składni kodu zupełnie nieczytelny, a przeglądarka bez odpowiedniego koloru okna najzwyczajniej w świecie brzydka. Więc jak zadbać o swoje środowisko, by trzymać je z dala od niebezpieczeństw związanych z utratą danych, a jednocześnie na tyle łatwo dostępne, aby przy dowolnej okazji móc po nie sięgnąć?

Jest kilka sposobów na radzenie sobie z tym problemem, ale aplikacja, którą chciałbym dziś zarekomendować to yadm – w skrócie od “yet another dotfiles manager”. Historia powstania nie jest, zgodnie z przewidywaniami, pełna zwrotów akcji – autor nie odnalazł tego czego potrzebował w podobnych programach, dlatego stworzył własny, różniący się od nich o denerwujące go detale. Osoby obcujące z VCS git poczują się jak w domu, bo yadm to tak naprawdę nakładka na ten system, utrzymująca ukryte repozytorium z naszymi plikami oraz linki do nich w naszym katalogu domowym. Dla osób nieobeznanych natomiast z tematem, pokrótce – git to system kontroli kodu, zapisujące zmiany w nim, pozwalający na wspólną pracę nad projektami i jednoczesne zmiany. Pomaga on w rozwiązywaniu konfliktów gdy takie się pojawią i ułatwia synchronizację repozytorium z kodem z serwerami zewnętrznymi.

Nietrudno więc zrozumieć dlaczego autor zdecydował się na takie a nie inne podejście. Ale jak używa się tego narzędzia? Poniżej zrzutu instrukcja, pozwalająca postawić szybko pierwsze kroki z yet another dotfile manager.

Screen Shot 2016-08-02 at 11.05.31
yadm screenshot

Obsługa yadm jest na szczęście bardzo prosta, z racji bycia użytkownikiem Arch Linuksa opiszę ją tak, jak zachodzi na tym systemie:

1.) Instalujemy program według instrukcji dla danej dystrybucji zamieszczonej na oficjalnej stronie projektu: https://github.com/TheLocehiliosan/yadm (program nie jest szeroko dostępny w repozytoriach kluczowych dystrybucji, obecnie tylko w Gentoo, OS X-ie oraz w Arch Linuksie, a i tu tylko w User Repos).

 pacaur -S yadm 
 # w sprawie wrappera co kto lubi, ale musimy paczkę wyciągnąc z AUR

2.) Inicjujemy repozytorium w taki sam sposób, jakbyśmy inicjowali repozytorium git.

 yadm init

3.) Dodajemy plik z konfiguracją, który chcemy trzymać w synchronizacji, np.: .Xresources, z wszystkimi kolorami naszego terminala.

 yadm add .Xresources

4.) Zmiany musimy zatwierdzić – poprzez kolejną komendę znaną użytkownikom git.

 yadm commit -a # najprostszy sposób, zatwierdza wszystkie zmiany
 yadm commit .Xresources ...
 # w przypadku dodania kilku plików wymaga wypisania ich wszystkich

5.) Aby jednak dotrzeć do swojej konfiguracji w razie kłopotów, bądz z racji ustawiania nowej maszyny, musimy nasze dokonania utrwalić na zewnętrznym serwerze. Jako, że yadm to pod maską zwykły git, potrzebujemy takiego właśnie repozytorium. Przeciętny użytkownik nie posiada jednak serwera, na którym mógłby utworzyć sobie repozytorium, dlatego warto rozejrzeć się za dostępnymi w sieci opcjami.

Jako, że sama konfiguracja nie jest niczym ściśle tajnym ani szczególnie niebezpiecznym, wiele osób trzyma ją w otwartych repozytoriach na githubie. Dzięki temu mogą one służyć za inspirację, a jednocześnie są zgodnie z założeniem dostępne i bezpieczne. Jeżeli natomiast preferujesz rozwiązanie z większą dozą prywatności, to gitlab oferuje darmowe, prywatne i nielimitowane repozytoria git. Wystarczy utworzyć na jednym z serwisów konto, utworzyć repozytorium i skopiować do niego link. Następnie ten link dodamy do naszego yadm’owego jako remote origin, czyli to główne i najważniejsze.

 yadm remote add origin https://gitlab.com/twojnick/twojerepo/

7.) Pozostaje już tylko popchnąć zmiany online.

 yadm push origin master

8.) Teraz gdy dostaniemy nowego laptopa i zainstalujemy na nim nowego OSa, wystarczy doinstalować yadm, zainicjować repozytorium, ustawić taki sam adres zdalny i wpisać

 yadm pull origin master

A wtedy całe nasze środowisko pojawi się momentalnie na nowej maszynce.

Yadm posiada wiele sposobów na odpowiednie dobieranie plików, posiadanie kilku wersji jednego dokumentu i tym podobne – wszystko to opisane jest na stronie projektu oraz na man page’u.

To wszystko, co mam dzisiaj do przekazania w serii “Zrób jedną rzecz, tylko zrób ją dobrze”. Jeżeli znasz ciekawszy program do tego zadania, albo inny program do zupełnie innego zagadnienia – śmiało napisz w komentarzu i spróbuję go przedstawić jako jeden z odcinków tej serii. Do zobaczenia!

3 thoughts on “yadm – czyli trzymajmy swoje pliki konfiguracyjne pod kontrolą

  1. Mam kilka przemyśleń co do łatwego zarządzania plikami konfiguracyjnymi.
    1) po co yadm skoro czysty git zrobi to równie dobrze?
    2) niektórzy robią na githubie repo o nazwie dotfiles i umieszczają tam swoje configi. Osobiście mam zrobiony skrypt z tekstowym interfejsem, którym mogę wybrać które programy zainstalować wraz z plikiem konfiguracyjnym. Czy to nie byłoby dla was lepsze rozwiązanie? Oczywiście skrypt i configi w oddzielonym folderze są w jednym repo na githubie. Ewentualnie czy są jakieś argumenty w stronę osobnego repo z samymi configami

    Like

    1. To jest wlasnie piekno unixopodobnych systemow – kazdy moze znalezc wlasna droge do sukcesu. Osobiscie preferuje yadm bo to wlasnie taki skrypt, tylko juz gotowy. Przyzwyczailem sie wiec uzywam, w kazdym przeze mnie uzywanym srodowisku dziala. Twoje rozwiazania sa conajmniej rownie dobre. Jezeli chodzi o argumenty – sadze ze to tez kwestia preferencji 😃 wybacz brak polskich znakow, nie mam jeszcze w telefonie polskiego slownika i slabo to dziala 😅

      Like

Leave a comment