| DEBCONF(7) | Miscellaneous Information Manual | DEBCONF(7) |
debconf - sistemul de configurare a pachetelor Debian
Debconf este un sistem de configurare pentru pachetele Debian. Există o comandă rar utilizată numită debconf, documentată în debconf(1)
Debconf oferă o interfață consistentă pentru configurarea pachetelor, permițându-vă să alegeți din mai multe interfețe de utilizator. Aceasta oferă suport pentru preconfigurarea pachetelor înainte ca acestea să fie instalate, ceea ce permite instalărilor și actualizărilor de mari dimensiuni să vă ceară toate informațiile necesare în prealabil și apoi să facă treaba în timp ce dumneavoastră faceți altceva. Vă permite, dacă vă grăbiți, să săriți peste întrebările și informațiile mai puțin importante în timpul instalării unui pachet (și să reveniți asupra acestora mai târziu).
Debconf poate configura pachetele chiar înainte ca acestea să fie instalate în sistemul dumneavoastră. Acest lucru este util deoarece permite ca toate întrebările pe care pachetele le vor pune să fie adresate la începutul unei instalări, astfel încât restul instalării să poată continua în timp ce sunteți plecat să serviți o ceașcă de cafea.
Dacă utilizați apt (versiunea 0.5 sau ulterioară) și aveți instalat apt-utils, fiecare pachet instalat de apt va fi preconfigurat automat. Acest lucru este controlat prin intermediul /etc/apt/apt.conf.d/70debconf
Uneori s-ar putea să doriți să preconfigurați un pachet manual, atunci când nu îl instalați cu apt. Puteți utiliza dpkg-preconfigure(8) pentru a face acest lucru, doar treceți-i numele de fișiere ale pachetelor pe care doriți să le preconfigurați. Veți avea nevoie de apt-utils instalat pentru ca acest lucru să funcționeze.
Să presupunem că ați instalat pachetul și ați răspuns la întrebările lui debconf, dar acum că l-ați folosit o vreme, vă dați seama că doriți să reveniți și să modificați unele dintre răspunsurile dumneavoastră. În trecut, reinstalarea unui pachet era adesea lucrul care trebuia făcut atunci când erați în această situație, dar atunci când reinstalați pachetul, debconf pare să își amintească că ați răspuns la întrebări și nu le mai pune din nou (aceasta este o caracteristică).
Din fericire, debconf facilitează reconfigurarea
oricărui pachet care îl utilizează. Să
presupunem că doriți să reconfigurați chiar
debconf. Trebuie doar să rulați, ca root:
dpkg-reconfigure debconf
Aceasta va pune toate întrebările pe care le-ați văzut când debconf a fost instalat prima dată. Este posibil să vă pună și alte întrebări, deoarece pune chiar și întrebări cu prioritate scăzută care ar fi putut fi omise atunci când pachetul a fost instalat. Îl puteți utiliza și pe orice alt pachet care utilizează debconf.
Una dintre caracteristicile unice ale debconf este faptul că interfața pe care v-o prezintă este doar una dintre multe altele, care pot fi schimbate după bunul plac. Există multe interfețe debconf disponibile:
Această interfață are câteva taste rapide speciale. «pageup» (sau «ctrl-u») va reveni la întrebarea anterioară (dacă pachetul care utilizează debconf acceptă acest lucru), iar «pagedown» (sau «ctrl-v») va trece la următoarea întrebare.
Aceasta este cea mai bună interfață pentru munca de administrare de la distanță pe o conexiune lentă, sau pentru cei care se descurcă bine cu unix.
Țineți cont de faptul că aceasta nu este o interfață foarte sigură. Oricine are acces la calculatorul care este configurat poate accesa serverul web și configura lucrurile în timp ce această interfață rulează. Prin urmare, aceasta este mai mult o dovadă de concept decât orice altceva.
Puteți schimba interfața implicită
utilizată de debconf prin reconfigurarea debconf. Pe de altă
parte, dacă doriți să schimbați interfața
doar pentru un minut, puteți defini variabila de mediu
DEBIAN_FRONTEND la numele interfeței de utilizat. De exemplu:
DEBIAN_FRONTEND=readline apt-get install slrn
Comenzile dpkg-reconfigure(8) și dpkg-preconfigure(8) vă permit, de asemenea, să le pasați opțiunea --frontend=, urmată de numele interfeței pe care doriți să o utilizeze.
Rețineți că nu toate interfețele vor funcționa în toate situațiile. Dacă o interfață nu reușește să pornească din anumite motive, debconf va afișa un mesaj explicând de ce și va trece la următoarea interfață similară.
O altă caracteristică plăcută a debconf este că întrebările pe care vi le pune sunt prioritizate. Dacă nu doriți să fiți deranjat de fiecare lucru mărunt, puteți configura debconf să vă pună doar cele mai importante întrebări. Pe de altă parte, dacă sunteți obsedat de control, îl puteți face să vă arate toate întrebările. Fiecare întrebare are o prioritate. În ordinea crescătoare a importanței:
Vi se vor afișa numai întrebările cu o prioritate egală sau mai mare decât prioritatea aleasă. Puteți stabili valoarea priorității prin reconfigurarea debconf sau temporar, pasând --priority= urmată de valoare, comenzilor dpkg-reconfigure(8) și dpkg-preconfigure(8), sau prin definirea variabilei de mediu DEBIAN_PRIORITY.
Debconf utilizează o bază de date principală destul de flexibilă și potențial complicată pentru stocarea datelor, cum ar fi răspunsurile la întrebări. Fișierul /etc/debconf.conf este utilizat pentru a configura această bază de date. Dacă trebuie să configurați ceva complicat, cum ar fi să faceți debconf să citească o bază de date de la distanță pentru a obține valorile implicite, cu suprapuneri locale, citiți pagina de manual debconf.conf(5) pentru toate detaliile sângeroase. În general, baza de date principală este localizată în /var/cache/debconf/ .
Dacă aveți multe mașini de gestionat, vă veți afla uneori în situația de a trebui să efectuați o instalare sau o actualizare nesupravegheată a pachetelor pe mai multe sisteme, atunci când răspunsurile implicite la unele întrebări de configurare nu sunt acceptabile. Există mai multe moduri de a aborda această problemă; toate implică crearea unei baze de date și utilizarea acesteia de către debconf pentru a obține răspunsurile dorite.
Ar trebui să citiți debconf.conf(5) înainte de această secțiune, deoarece trebuie să înțelegeți cum funcționează bazele de date ale debconf.
Cel mai simplu mod de a configura baza de date este să instalați pachetele pe o mașină și să răspundeți la întrebările lor ca de obicei. Sau ați putea folosi dpkg-preconfigure(8) pentru a configura un set de pachete fără a le instala efectiv. Sau ați putea decide chiar să scrieți manual o bază de date debconf în text simplu sau ceva de acest gen.
Odată ce aveți baza de date, trebuie să vă dați seama cum să faceți sistemele la distanță să o utilizeze. Acest lucru depinde, desigur, de configurația acestor sisteme și de tipurile de baze de date pe care sunt configurate să le utilizeze.
Dacă utilizați baza de date debconf LDAP, un singur server LDAP poate răspunde automat la oricare sau la toate întrebările privind instalarea pachetelor pentru o întreagă rețea de mașini debian.
Dar poate că utilizați ceva mai ușor de configurat, cum ar fi, de exemplu, configurația implicită a bazei de date debconf, sau pur și simplu nu doriți ca sistemele dvs. de la distanță să utilizeze LDAP tot timpul. În acest caz, cea mai bună abordare este să configurați temporar sistemele la distanță pentru a stivui baza dvs. de date sub propriile baze de date existente, astfel încât să extragă valorile implicite din aceasta. Debconf oferă două variabile de mediu, DEBCONF_DB_FALLBACK și DEBCONF_DB_OVERRIDE, pentru a facilita acest lucru din mers. Iată un exemplu de utilizare:
cat /var/cache/debconf/config.dat | \
ssh root@target "DEBIAN_FRONTEND=noninteractive \
DEBCONF_DB_FALLBACK=Pipe apt-get upgrade"
Acest lucru face ca debconf de pe gazda de la distanță să citească datele care sunt transmise prin conexiunea ssh și să le interpreteze ca o bază de date debconf în format text simplu. Apoi utilizează această bază de date ca bază de date de rezervă - o bază de date numai pentru citire care este interogată pentru răspunsuri la întrebări în cazul în care baza de date debconf principală a sistemului nu are răspunsuri.
Iată o altă modalitate de a utiliza variabila de mediu DEBCONF_DB_FALLBACK:
ssh -R 389:ldap:389 root@target \
"DEBCONF_DB_FALLBACK='LDAP{host:localhost}' apt-get upgrade"
Aici ssh este utilizat pentru a configura o conexiune LDAP tunelată și pentru a rula debconf. Debconf este instruit să utilizeze serverul LDAP ca bază de date de rezervă. Observați utilizarea lui „{host:localhost}” pentru a configura modul în care debconf accesează baza de date LDAP prin furnizarea câmpului „host” cu valoarea „localhost”.
Iată o altă metodă:
scp config.dat root@target:
ssh root@target "DEBCONF_DB_FALLBACK='File{/root/config.dat}' apt-get
upgrade
Aici copiați baza de date cu scp, apoi ssh și faceți debconf să utilizeze fișierul pe care l-ați copiat. Acest lucru ilustrează o prescurtare pe care o puteți utiliza în parametrii DEBCONF_DB_FALLBACK - dacă un nume de câmp este omis, acesta devine implicit „nume fișier”.
Există o singură problemă cu aceste utilizări ale parametrului DEBCONF_DB_FALLBACK: În timp ce baza de date de rezervă poate oferi răspunsuri la întrebări pe care celelalte baze de date debconf nu le-au văzut niciodată, aceasta este interogată doar ca o soluție de rezervă; după celelalte baze de date. Dacă trebuie să înlocuiți temporar o valoare existentă pe gazda de la distanță, trebuie să utilizați în schimb variabila DEBCONF_DB_OVERRIDE. Ca și DEBCONF_DB_FALLBACK, aceasta stabilește o bază de date temporară, dar această bază de date este consultată înaintea celorlalte și poate fi utilizată pentru a înlocui valorile existente.
Dezvoltatorii de pachete și alte persoane care doresc să dezvolte pachete care utilizează debconf ar trebui să citească debconf-devel(7) .
Pe scurt, debconf comunică cu scripturile de întreținere sau cu alte programe prin intermediul intrării și ieșirii standard, utilizând un limbaj de comandă simplu, orientat pe linii, similar cu cel utilizat de protocoalele comune de internet, cum ar fi SMTP. Programele utilizează acest protocol pentru a solicita debconf să afișeze întrebări utilizatorului și să recupereze răspunsurile utilizatorului. Întrebările în sine sunt definite într-un fișier separat, denumit fișier de șabloane „templates file”, care are un format asemănător unui fișier de control debian.
Pachetele Debian care utilizează debconf furnizează de obicei atât un fișier de șabloane „templates”, cât și un script „config” (rulat pentru a preconfigura pachetul) în secțiunea de metadate de control a pachetului.
Astfel, aceasta utilizează fallbackdb în
debconf.conf:
DEBCONF_DB_FALLBACK=fallbackdb
În timp ce acest lucru creează o nouă
bază de date de tip File, îi indică un nume de
fișier de utilizat și dezactivează efectuarea copiilor
de rezervă:
DEBCONF_DB_FALLBACK=File{Filename:/root/config.dat Backup:no}
Și ca o prescurtare, aceasta creează o bază
de date de tip File cu un nume de fișier:
DEBCONF_DB_FALLBACK=File{/root/config.dat}
Rețineți că, dacă o bază de date de rezervă este configurată din mers, aceasta va fi implicit numai pentru citire.
Probabil destul de multe, există o grămadă de cod aici.
Dacă depuneți un raport de eroare, asigurați-vă că includeți următoarele informații:
debconf.conf(5), debconf-devel(7), dpkg-preconfigure(8), dpkg-reconfigure(8), debconf(1),
Joey Hess <joeyh@debian.org>
Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>, 2024
Dacă găsiți o greșeală în traducere, vă rugăm să o raportați autorului acestei traduceri, pe lista de discuții <debian-l10n-romanian@lists.debian.org> sau trimițând un raport de eroare contra pachetului „debconf” către sistemul de urmărire al erorilor din Debian (BTS).