Dispatch-conf
emerge — configuration — ebuild repository — dispatch-conf
world file — USE flags — ebuilds — profiles
upgrades — using testing packages — binary packages
tools — gentoolkit — eselect
Portage FAQ — cheat sheet — FAQ
all articles
- how to revert a change
- how backups are made
- is archive-dir still an option ? it isn't in the config file by default
A dispatch-conf a Portage csomagkezelőhöz tartozó segédprogram, amellyel biztonságosan és kényelmesen kezelheti a konfigurációs fájlokat a csomagfrissítések után. Ez egy fontos eszköz a csomagfrissítések közötti konfiguráció átállításának kezelésére anélkül, hogy a felhasználónak manuálisan kellene áttelepítenie a változtatásokat.
A dispatch-conf lehetővé teszi a rendszergazdák számára, hogy áttekintsék a Portage által végrehajtott konfigurációs fájlok módosításait, és kecsesen kezeljék a frissített csomag konfigurációjának szerkezetét, szabványos módon. A Portage jelzi, ha a konfigurációs fájlok frissítésre szorulnak, és a dispatch-conf futtatása javasolja az új konfiguráció használatát, a változtatások elutasítását vagy a módosítások szelektív összevonását. A dispatch-conf automatikusan frissíti azokat a konfigurációs fájlokat, amelyeket a felhasználó soha nem módosított, vagy amelyek csak CVS cruft-ban, megjegyzésekben vagy szóközökben különböznek az aktuális verziótól.
A dispatch-conf megőrzi a változtatások előzményeit, és lehetővé teszi a visszaállítást a korábbi verziókra, így az esetleges hibákat vissza lehet állítani. A konfigurációs fájlok módosításai az archívum könyvtárába kerülnek. Alternatív megoldásként integrálható a rcs-al, hogy lehetővé tegye verziókövetéssel a konfigurációs fájlok kezelését.
A dispatch-conf ellenőrzi a CONFIG_PROTECT környezeti változóban tárolt összes könyvtárat, hogy vannak-e változások. A CONFIG_PROTECT_MASK környezeti változó elérési útjaiban található konfigurációs fájlok nem védettek, és automatikusan felülíródnak.
A dispatch-conf első futtatása előtt módosítani kell a /etc/dispatch-conf.conf fájl beállításait, és létre kell hozni az /etc/dispatch-conf.conf fájlban megadott archív könyvtárat (/etc/config-archive alapértelmezés szerint).
A konfigurációkezelési probléma a frissítésekkel
A konfiguráció áttelepítése általános probléma minden szoftverfrissítési folyamatnál: Bizonyos verziómódosítások olyan módon módosítják a viselkedést, hogy a korábbi konfigurációs paraméterek már nem vonatkoznak az új verzióra. Új konfigurációs opciók adhatók hozzá, eltávolíthatók, jelentésük megváltozhat, vagy az egyes direktívák neve vagy formátuma megváltozhat.
Minden szoftverprojekt a maga módján kezeli ezt. Néhány projekt robusztus konfigurációs verziókövetéssel rendelkezik, és automatikusan átviheti a konfigurációt egyik verzióról a másikra. Egyes projektekben problémák adódhatnak a főbb verziók között, vagy ha sokkal régebbi verziókról frissítenek. Egyes projektek esetében a frissítés a korábbi konfigurációk megőrzése közben problémákat okozhat, vagy akár lehetetlen is lehet.
Régóta létezik egy Unix konvenció, amely szerint egyszerű szöveges fájlokat használnak, gyakran félig szabványos szintaxissal a konfiguráció tárolására. A nagyobb frissítések megkövetelhetik a fájlok kézi áttelepítését, vagy fennáll annak a veszélye, hogy elavulnak. Ez nehézkesnek tűnhet ma, de továbbra is nagyon robusztus módja a konfiguráció kezelésének, és elkerülhető a kétértelműség azzal kapcsolatban, hogy a konfigurációs direktívák hogyan változhatnak az egyes verziók között, ami sok – olykor kritikus – szolgáltatásnál, például internetes szervereknél fontos.
Konfiguráció
Fájlok
A dispatch-conf konfigurációs fájl az /etc/dispatch-conf.conf. Előfordulhat, hogy létre kell hozni a fájlban található archive-dir változó által hivatkozott könyvtárat.
RCS (revision control system) integráció
Ha RCS használatára van beállítva, az archivált fájlok olvasási és végrehajtási engedélyei a fájl első bejelentkezésekor öröklődnek. Ha a munkafájl jogosultságai azóta megváltoztak, az első bejelentkezés engedélyei megmaradhatnak. Ez véletlenül biztonsági problémákat okozhat. Az RCS-fájlokhoz való hozzáférés a szülőkönyvtár engedélyeinek beállításával szabályozható.
Amikor a dispatch-conf úgy van beállítva, hogy integrálja az rcs-t, akkor az /etc/config-archive fájlban tárolja az összes változtatást.
Revízióvezérlő rendszer telepítése:
root #
emerge --ask dev-vcs/rcs
Ez a konfigurációs folyamat olyan egyszerű, mint a konfigurációs fájl szerkesztése, amely tartalmazza a következőket:
use-rcs=yes
Az adminisztrátorok ezután megtekinthetik a különbségeket az rcs segédprogramok, például az rlog segítségével, valamint a változtatások visszaállítását a co segítségével. Az rcs segédprogramok magával a fájlzárolással működnek, így abban a pillanatban, amikor szükség van rá adminisztrációs feladatokhoz, vegye figyelembe, hogy:
- A dispatch-conf csak azokat a módosításokat tárolja, amelyek akkor történtek, amikor a csomag a fájl módosítását javasolja. Az utólag végrehajtott változtatások még nem regisztráltak.
- Amikor kivesz egy fájlt, a rcs be akarja írni a fájlt a fájlrendszerbe, ezért először készítsen biztonsági másolatot a meglévő fájlokról, vagy dolgozzon szabványos kimenettel (lásd később).
- Egy fájl bejelentkezéséhez először zárolni kell az adott fájlt. Ügyeljen arra is, hogy ne távolítsa el a munkafájlt.
A commit előzmények megtekintése a(z) /etc/conf.d/udev-en:
user $
rlog /etc/config-archive/etc/conf.d/udev,v
RCS file: /etc/config-archive/etc/conf.d/udev,v Working file: udev head: 1.1 branch: locks: strict access list: symbolic names: keyword substitution: kv total revisions: 2; selected revisions: 2 description: Archived config file. ---------------------------- revision 1.1 date: 2011/06/15 18:14:59; author: root; state: Exp; branches: 1.1.1; dispatch-conf update. ---------------------------- revision 1.1.1.1 date: 2011/06/15 18:14:59; author: root; state: Exp; lines: +3 -2 dispatch-conf update. =============================================================================
Ha vissza szeretne térni egy adott verzióhoz, ennek egyszerű módja, ha megnézi az előző verziót:
root #
cp udev udev.orig
root #
co -p -r1.1.1.1 /etc/config-archive/etc/conf.d/udev,v > udev
etc/config-archive/etc/conf.d/udev,v --> standard output revision 1.1.1.
Az utolsó módosítások elvégzése után (lehetőség van az udev.orig biztonsági másolat használatával a későbbi módosítások egyesítésére), ellenőrizze újra a fájlt:
root #
co -p -l /etc/config-archive/etc/conf.d/udev,v
Szerkessze a fájlt, és végül ellenőrizze a módosításokat:
root #
ci -l /etc/config-archive/etc/conf.d/udev,v
/etc/config-archive/etc/conf.d/udev,v <-- udev new revision: 1.2; previous revision: 1.1 enter log message, terminated with single '.' or end of file: >> Merged changes for persistant rules >> . done
Diff vagy merge eszközök módosítása
A diff kimenetének színesítése
A szürke szöveg változásainak elolvasása kissé bosszantó lehet. Szerencsére a sys-apps/diffutils modern verzióinak van egy --color
kapcsolója, amely különböző színekben jeleníti meg a különböző típusú változtatásokat. A konfiguráció egyszerű. Módosítsa a diff sort a konfigurációs fájlban a következőre:
diff="diff --color=always -Nu '%s' '%s'"
Alternatív megoldásként az app-misc/colordiff csomag is használható. Telepítse a colordiff-et a következővel:
root #
emerge --ask app-misc/colordiff
Majd módosítsa a konfigurációt a használatához:
diff="colordiff -Nu '%s' '%s'"
Használja a (g)vimdiff-et a változtatások egyesítéséhez
Lehetséges a vimdiff/gvimdiff használata a fájlok egyesítésének alapértelmezett módja helyett. Ehhez módosítsa az /etc/dispatch-conf.conf konfigurációs fájlt az egyesítési sor módosításával:
merge="vimdiff -c'saveas %s' -c next -c'setlocal noma readonly' -c prev %s %s"
A vimdiff (a gvimdiff esetén az -f
kapcsolót is használja) szintén használható a változtatások egyesítésére. A Neovim használatához cserélje ki az %s %s
-t a végén -d %s %s
-re.
A bal oldali ablaktábla az eredeti konfigurációs fájlt fogja tárolni az egyesítés kimeneteként, ezért végezzen változtatásokat a bal oldali ablaktáblán, és mentse el azt. Hogy segítsen megjegyezni, hogy a jobb oldali ablaktábla (amely tartalmazza az új konfigurációs fájlt) nem módosítható és csak olvasható lesz.
Néhány hasznos parancs a vimdiff egyesítéséhez:
"]c" : jump to next change "[c" : jump to previous change "CTRL-W <Right>" or "CTRL-W <Left>" : go to the other window "do" (diff obtain): get the text of the highlighted block from the other window "dp" (diff put) : put the text of the highlighted block to the other window "zo" : open fold under the cursor "zc" : close fold under the cursor "zr" : open all folds ":wqa" : write and exit
További segítségért tekintse meg a Vim dokumentációját.
Az imediff2 használata a változások egyesítéséhez
Egy másik egyesítési alternatíva a dev-util/imediff2. Ez az egyszerű eszköz lehetővé teszi, hogy csak néhány billentyűt használjon a lehetőségek közötti váltáshoz. Ez elsősorban az a vagy b billentyűkkel történik. Továbbá az e billentyű megnyitja a felhasználó kedvenc szerkesztőjét, amelyet a EDITOR shell változója állított be a kézi egyesítéshez.
A dispatch-conf használatához először telepítse az imediff2-t:
root #
emerge --ask dev-util/imediff2
Majd állítsa be a következőt: /etc/dispatch-conf.conf:
merge="imediff2 -c -N --output='%s' '%s' '%s'"
Használat
Hívás
A dispatch-conf-t rendszergazdai jogosultágokkal kell futtatni, mivel a konfigurációs fájlok általában a rendszergazda tulajdonában vannak:
root #
dispatch-conf
Az AMD64 kézikönyv és a man súgó további információkat tartalmaz a használatról:
user $
man 1 dispatch-conf
Tippek
A konfigurációs változások megőrzése egy git tárolóban
Telepítéskor a etckeeper csatlakozik a dispatch-conf-hoz, hogy minden egyes meghíváskor biztonsági másolatot készítsen a konfigurációs fájlokról.
További olvasnivaló a témában
- etc-update (AMD64 kézikönyv)
- cfg-update — a utility used on Gentoo to manage configuration file updates.