Dispatch-conf

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Dispatch-conf and the translation is 100% complete.
Other languages:
Resources
This article has some todo items:
  • 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 szoftvercsomag-kezelőhöz tartozó segédprogram, amellyel biztonságosan és kényelmesen kezelheti a beállítási fájlokat a szoftvercsomag frissítések után. Ez egy fontos eszköz a szoftvercsomag frissítések közötti beállítás á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 beállításfájlok módosításait, és kecsesen kezeljék a frissített szoftvercsomag beállításának a szerkezetét, szabványos módon. A Portage jelzi, ha a beállításfájlok frissítésre szorulnak, és a dispatch-conf futtatása javasolja az új beállítás 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 beállításfájlok, 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 beállításfá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 beállításfá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ó beállításfájlok nem védettek, és automatikusan felülíródnak.

Important
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).

Beállításkezelési probléma a frissítésekkel

A beállítás á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 beállítási paraméterek már nem vonatkoznak az új verzióra. Új beállításopció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 beállítás-verziókövetéssel rendelkezik, és automatikusan átviheti a beállítást 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 beállítások 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 beállítás 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 beállítás kezelésének, és elkerülhető a kétértelműség azzal kapcsolatban, hogy a beállítá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.

Beállítás

Fájlok

A dispatch-conf beállításfá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ó

Warning
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 beállításfolyamat olyan egyszerű, mint a beállításfájl szerkesztése, amely tartalmazza a következőket:

FILE /etc/dispatch-conf.conf
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 szoftvercsomag 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 beállítás egyszerű. Módosítsa a diff sort a beállításfájlban a következőre:

FILE /etc/dispatch-conf.conf
diff="diff --color=always -Nu '%s' '%s'"

Alternatív megoldásként az app-misc/colordiff szoftvercsomag is használható. Telepítse a colordiff szoftvercsomagot a következő parancs segítségével:

root #emerge --ask app-misc/colordiff

Majd módosítsa a beállítást a használatához:

FILE /etc/dispatch-conf.conf
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 beállításfájlt az egyesítési sor módosításával:

FILE /etc/dispatch-conf.conf
merge="vimdiff -c'saveas %s' -c next -c'setlocal noma readonly' -c prev %s %s"

A vimdiff (a gvimdiff esetében használja az -f opciót is) szintén használható a változtatások egyesítésére.


A neovim számára:

FILE /etc/dispatch-conf.conf
merge="nvim -d -c'saveas %s' -c next -c'setlocal noma readonly' -c prev %s %s"
Note
A bal oldali ablaktábla az eredeti beállításfá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 beállításfá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 imediff használata a változások egyesítése érdekében

Egy másik egyesítési alternatíva a dev-util/imediff. 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 imediff programot:

root #emerge --ask dev-util/imediff

Majd állítsa be a következőt: /etc/dispatch-conf.conf:

FILE /etc/dispatch-conf.conf
# imediff-1.X
merge="imediff2 -c -N --output='%s' '%s' '%s'"
# imediff-3.X
merge="imediff --output='%s' '%s' '%s'"

Használat

Hívás

A dispatch-conf-t rendszergazdai jogosultságokkal kell futtatni, mivel a beállításfájl általában a rendszergazda tulajdonában vannak:

root #dispatch-conf

Az AMD64 kézikönyv és az dispatch-conf(1) man súgó további információkat tartalmaz a használatról:

user $man 1 dispatch-conf

Tippek

A beállításvá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 beállításfájlokról.

További olvasnivaló a témában