2024. április 18., csütörtök

Gyorskeresés

Linux: konfig fájlok mentése a Githubra

Írta: | Kulcsszavak: linux . git . github . config . konfig . tutorial . terminál

[ ÚJ BEJEGYZÉS ]

Beveztő

Az alábbit írást azoknak ajánlom, akik szeretnék a telepített programjaik beállításait (esetleg saját scripteket) a Githubra menteni biztonsági okokból, ami egy esetleges meghibásodás vagy újratelepítés esetén jól jöhet (vagy akár csak ha követni szeretnénk a változásokat/módosításokat).

A Github egy git-en alapuló hosting szolgáltatás, azaz lényegében ide tölthetünk fel különféle fájlokat, projekteket. Leginkább fejlesztők, programozók, power userek használják, de bárki ingyenesen regisztrálhat és feltöltheti a saját dolgait is.

Fontos, hogy a Github nem a Dropbox-hoz, Google Drive-hoz vagy más egyéb file hosting szolgáltatáshoz hasonló célból működik, tehát ide nem azért regisztrálunk, hogy fotókat, netán videókat, vagy zenéket töltsünk fel. Ide elsősorban forráskódok, scriptek, konfigurációs fájlok kerülnek feltöltésre.

A git egy verziókezelő rendszer, melyet Linus Torvalds fejlesztett ki. A git segítségével a fájlok változásait lehet követni, vissza lehet állítani korábbi állapotokat stb. Rendívül hasznos szoftver.

A dokumentációja elég hosszú, ezért nem is fejtegetem bővebben, én csak néhány alapparancsot fogok használni az alábbiakban, csak azokat, amik jelenleg kellenek. Ha bővebben szeretnél róla olvasni, akkor:

- Dokumentáció + Videók
- Github: Help
- Wikipédia: Git
- Wikipédia: Github

------------------------------------------------------------------------------------------------------------------------------------------------------------

Github és git

Először is, telepítsd a csomagkezelőddel a git csomagot.

Aztán szükséged lesz egy Github regisztrációra. A regisztráció során válaszd csak az ingyenes fiókot, aztán kövesd az ott leírt utasításokat.

Fent találsz egy + gombot, vagy a főoldalon egy zöld + New repository gombot, amivel új repót ("tárolót") adhatsz hozzá. (Itt egy videó, az első néhány perce ezt mutatja be: [link] )

A repository neve bármi lehet. konfig fálj menedzsment esetén szokás a dotfiles nevet használni, de lehet configs is, vagy ami tetszik, nevezd el, ahogyan szeretnéd. Én a példák esetében a dotfiles névnél maradok, ha mást használsz, akkor nyilván majd helyettesítsd be azzal a névvel.

A Description (leírás) opcionális, nem kötelező megadni, de írhatod például, hogy "My config files".

Válaszd a Public opicót, ami ingyenes. A Privát fizetős, de persze választhatod azt is, ha neked az jobban megfelel. Fontos, hogy a Public az tényleg publikus, tehát a Githubra soha ne tölts fel olyat, amit nem szeretnél a nyilvánosság elé tárni!

Utána legyen bepipálva a README opció, így a repó azonnal klónozhatóvá válik. A License és a gitignore beállításokkal most nem kell foglalkoznod.

Nyomd meg a Create repository gombot és ezzel a résszel készen is vagy.

Jobb oldalon találod a HTTPS clone URL-t, másold ki a linket és irány a terminál, klónozd le ezt a HOME könyvtáradba ( ~ ):

git clone <clone url>

például:

git clone https://github.com/felhasználóneved/dotfiles.git

Megjegyzés:

A dotfiles könyvtáradban lesz egy .git nevű rejtett könyvtár. Azt ne bántsd, ne töröld le, ne nevezd át, ne piszkáld! Ez egy fontos könyvtár, a git verziókövetés annak a segítségével fog működni.

------------------------------------------------------------------------------------------------------------------------------------------------------------

Konfig menedzsment

Ezután van mondjuk 2 lehetőséged: (nyilván van több is, de most ezeknél maradunk)

1. a dotfiles könyvtárba bemásolod azokat a fájlokat, amiket a Github repódba akarsz küldeni.

- Előny: nem követel meghatározott könyvtárstruktúrát.
- Hátrány: Mindig egyenként kell (oda-vissza) másolgatnod a fájlokat, amik frissülnek.

2. a stow program segítségével menedzseled, én ezt fogom az alábbiakban bemutatni:

- Előny: nem kell oda-vissza másolgatni mindig a fájlokat.
- Hátrány: meghatározott könyvtárstruktúrát kíván.

Telepítsd a stow nevű programot a csomagkezelőddel.

Példák:

Az első példában az Openbox ablakkezelő szerepel.

Rakjuk az Openbox konfigurációs fájljait (~/.config/openbox) a dotfiles könyvtárba. Mint fentebb is írtam, ez a stow esetében meghatározott könyvtárstruktúrát kíván.

Menjünk a dotfiles könyvtárba, készítsük el a választott programhoz való könyvtárstruktúrát, aztán helyezzük át .config könyvtárból a dotfiles alá ezeket. (Én terminálos példát mutatok be, de elvégezheted ezt a műveletet bármilyen grafikus fájlmenedzserrel.)

cd ~/dotfiles
mkdir -p openbox/.config
mv ~/.config/openbox ~/dotfiles/openbox/.config

Hopp, az openbox könyvtár eltűnt a ~/.config alól és a ~/dotfiles/openbox/.config/openbox helyen található meg.

Magyarázat:

~/dotfiles/openbox/.config/openbox

Furcsának tűnik a fenti struktúra, de ez lesz az alapja a jelenlegi módszernek. Egyszerű "ábrával":

dotfiles
|__openbox
|__.config
|__openbox

A dotfiles a "fő könyvtár", pontosabban a repó (ez fix).
Az első openbox a program neve, aminek a konfigurációs fájljait másoltuk. Ez a könyvtárnév lényegében tetszőleges, de érdemes az adott program nevét megadni, hogy ne legyen kavarodás.
Aztán jön a struktúra többi része, ami alapján a stow tudja, hogy milyen elérési útra kell symlinkelni.

Mivel a működéshez muszáj a ~/.config alatt lennie a openbox könyvtárnak, ezért a stow segítségével symlinkelni fogjuk az egészet.

Legyünk a dotfiles könyvtárban (~/dotfiles) majd adjuk ki a stow openbox parancsot. A stow parancs az utána írt könyvtárban (openbox) található könyvtárakat és fájlokat az azoknak megfelelő helyre fogja symlinkelni, így tehát a ~/.config/openbox a helyére kerül és minden rendben lesz.

Újabb példa:

A tint2 (panel) konfig szintén a ~/.config könyvtárban van, tehát a könyvtárakat az előző példához hasonlóan alakítsuk ki:

~/dotfiles/tint2/.config/tint2

Ha megvagyunk vele, akkor a stow tint2 paranccsal tudjuk symlinkelni.

Tehát a példákat követve így fog kinézni a struktúra:

dotfiles
|__openbox
| |__.config
| |__openbox
|__tint2
|__.config
|__tint2

Megjegyzés:
Nem muszáj teljes könyvtárakat áthelyezni a dotfiles alá, lehet akár csak egy-egy konfig fáljt is, a lényeg, hogy az elérési út (struktúra) stimmeljen, hogy a stow tudja symlinkelni.

Másik példa (ha nem a ~/.config könyvtárban van, ami nekünk kell):

Vannak olyan konfig fájlok, amik nem .config könyvtárban vannak, hanem mondjuk a HOME könyvtárban közvetlenül. Ilyen például a .bashrc is.

Ebben az esetben az alábbiak szerint alakítsuk ki a könyvtárstruktúrát:

~/dotfiles/bash/.bashrc

(tehát a .bashrc-t át kell helyezni a dotfiles/bash könyvtárba)

Ha megvagyunk vele, akkor a stow bash paranccsal tudjuk symlinkelni.

Tehát a példákat követve most már így fog kinézni a struktúra:

dotfiles
|__openbox
| |__.config
| |__openbox
|__tint2
| |__.config
| |__tint2
|__bash

A ~/.xinitrc-t is mentsük a Githubra? Azt rakhatjuk például egy xorg nevű könyvtárba, tehát mondjuk így nézne ki:

~/dotfiles/xorg/.xinitrc

(tehát a .xinitrc-t át kell helyezni a dotfiles/xorg könyvtárba)

Ha megvagyunk vele, akkor stow xorg és kész is.

Az eddigi példákat követve így fog kinézni a struktúra:

dotfiles
|__openbox
| |__.config
| |__openbox
|__tint2
| |__.config
| |__tint2
|__bash
|__xorg

Remélem, hogy a fenti példák érthetőek voltak és a saját konfigjaidat ezek alapján be tudod állítani.
------------------------------------------------------------------------------------------------------------------------------------------------------------

Szinkronizálás a Githubra

Megvannak a cuccaink a dotfiles könyvtárban, symlinkelve a helyükre is kerültek, úgyhogy toljuk is fel őket a githubra. Ehhez néhány alapparancsra lesz szükség.

Mielőtt feltöltenénk a cuccokat, érdemes tudni, hogy egyes könyvtárakat, fájlokat, fájltípusokat tiltólistára is lehet tenni. Ez olyankor (is) jól jöhet, amik mondjuk bizonyos programok ideiglenes fájlokat generálnak (cache, swap, backup stb.) a konfigok közé, amelyeket nyilván nem akarunk feltölteni.

A tiltólista készítése nagyon egyszerű, csak létre kell hozni egy .gitignore nevű fájlt a repó könyvtárába, tehát jelen esetben például:

~/dotfiles/.gitignore

Ez egy sima szöveges fájl, amibe meg tudjuk adni (soronként), hogy mely elérési utakat vagy fájlokat/fájltípusokat hagyja figyelmen kívül:

Például:
*.swp
thunar/.config/Thunar/accels.scm

A kis kitérő után térjünk rá a fájlok feltöltésére:

Váltsunk a dotfiles könyvtárba: cd ~/dotfiles

Csekkoljuk a státuszt: git status

Ez mutatni fogja, hogy mik az új fájlok amik még nem lettek hozzáadva (nem követi őket a git), illetve azokat, amik már hozzá lettek adva (követi őket a git), de módosultak.

Ha szeretnénk, akkor a változásokat is meg tudjuk nézni, erre a git diff parancs szolgál. Ez az összes módosított fájl módosításait megmutatja. Ha csak egy-egy bizonyos fájlét szeretnék megnézni, akkor a git diff <fájlnév vagy elérési út> parancsot adjuk ki.

Megjegyzés: teljesen új fájloknál, amiket még nem követ a git, azoknál nyilván nem tudja a változásokat megmutatni a git diff, de a későbbiekben még hasznos lehet.

Adjuk hozzá az összes fájlt: git add --all

Ezután egy commit üzenetet kell írnunk, ami lényegében megjegyzés/jegyzet, hogy pl. miket változtattunk. A lustábbak írhatnak rövid commit üzeneteket, például:

git commit -m "openbox settings update"

Mivel ez egy saját konfig repó, nem valami komolyabb projekt, ezért itt nem feltétlenül szükséges a részletes commit üzenet írása (komoly projektek esetén viszont követelmény).

Majd pedig fel kell küldeni a változásokat a Github szerverére:

git push origin master

Kérni fogja a githubos felhasználónevet és jelszót, és kész is. Ezután, ha bármilyen változtatást végzünk a menedzselt konfig fájlokon, akkor azt git tudni fogja, és a fentebb leírt módszerekkel újra fel kell küldeni változtatásokat a github szerverére, tehát újra ezekre az alapparancsokra lesz szükség:

git status
git add --all
git commit -m "megjegyzés"
git push origin master

Én nem szeretek annyit gépelni, úgyhogy jelenleg ezeket az aliasokat használom ezekre a parancsokra:

alias gst='git status'
alias gdiff='git diff'
alias gadd='git add --all'
alias gcommit='git commit -m'
alias gpush='git push origin master'

Új rendszer telepítése esetén csak le kell klónozni a repót és a stow segítségével visszállítani (azaz symlinkelni) a konfigokat. Arra ügyelni kell ilyenkor, hogy ha már van egy alapértelmezett konfig (például a .bashrc), akkor azt előbb törölni kell (vagy még jobb áthelyezni valahova), különben a stow nem fogja tudni symlinkelni a helyére.

A Githubra más könyvtárakat/fájlokat is feltölthetsz (másik repódba). Ha például van saját ~/Scripts könyvtárad (amiben a saját scriptjeidet tárolod), annak készíthetsz egy Scripts repót.

És még egyszer, mert fontos: a Public fiókba/repóba kizárólag publikus fájlokat tölts fel. Ügyelj arra, hogy privát adat/fájlt soha ne kerüljön a repó könyvtárába, nehogy véletlenül is feltöltsd, főleg, ha sok fájlt töltesz egyszerre (ezért is érdemes végignézni a git status listáját.)

Ha egyéb, githez vagy Githubhoz kapcsolódó kérdésed van, akkor azt a Github használata című topikban tedd fel, bár mivel az a topik eléggé halott, lehet, hogy jobb, ha inkább a Linux haladóknak topikban kérdezel.

Copyright © 2000-2024 PROHARDVER Informatikai Kft.