Scroll to navigation

DEBCONF(7) Miscellaneous Information Manual DEBCONF(7)

NUME

debconf - sistemul de configurare a pachetelor Debian

DESCRIERE

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

Preconfigurarea pachetelor

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.

Reconfigurarea pachetelor

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.

Interfețe

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:

Interfața implicită, aceasta utilizează programele whiptail(1) sau dialog(1) pentru a vă afișa întrebările. Aceasta funcționează în modul text.
Cea mai tradițională interfață, aceasta arată destul de asemănător cu modul în care a fost întotdeauna configurarea Debian: o serie de întrebări, afișate la consolă folosind text simplu, și solicitări realizate folosind biblioteca readline. Oferă chiar și suport pentru completarea cu tabulatorul. Pachetul libterm-readline-gnu-perl este foarte recomandat dacă alegeți să utilizați această interfață; modulul readline implicit nu acceptă solicitarea cu valori implicite. Cel puțin, veți avea nevoie de pachetul perl-modules instalat pentru a utiliza această interfață.

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.

Aceasta este anti-interfața. Nu interacționează deloc cu dvs. și face ca răspunsurile implicite să fie utilizate pentru toate întrebările. Poate trimite mesaje de eroare către root, dar asta este tot; în rest, este complet silențioasă și discretă, o interfață perfectă pentru instalările automate. Dacă utilizați această interfață și aveți nevoie de răspunsuri la întrebări care nu sunt implicite, va trebui să preconfigurați baza de date debconf; consultați secțiunea de mai jos privind instalarea nesupravegheată a pachetelor pentru mai multe detalii.
Aceasta este o interfață grafică X modernă care utilizează bibliotecile gtk și gnome. Desigur, necesită ca variabila de mediu DISPLAY să aibă o valoare validă pentru a funcționa; debconf se va întoarce la alte interfețe dacă nu poate funcționa. Rețineți că această interfață necesită să aveți instalat pachetul libgtk3-perl.
Această interfață oferă o interfață grafică X modernă bazată pe platforma KDE. Desigur, aveți nevoie ca variabila de mediu DISPLAY să aibă o valoare validă pentru a utiliza această interfață și trebuie să instalați pachetul debconf-kde-helper. Interfața va reveni la dialog dacă unele dintre condițiile prealabile nu sunt îndeplinite.
Aceasta este pentru acei fanatici care trebuie să facă totul într-un editor de text. Acesta rulează editorul dvs. preferat pe un fișier care seamănă cu un fișier de configurare unix tipic, iar dvs. editați fișierul pentru a comunica cu debconf. Autorul Debconf preferă să nu comenteze cu privire la circumstanțele care au dus la scrierea acestei interfețe.
Această interfață acționează ca un server web, la care vă conectați cu navigatorul dvs. web, pentru a parcurge întrebările și a răspunde la ele. Este foarte promițător, dar deocamdată este puțin greoi. Atunci când această interfață pornește, ea va afișa locația către care trebuie să îndreptați navigatorul dvs. web. Din motive de securitate, trebuie să executați navigatorul web pe aceeași mașină pe care o configurați.

Ț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ă.

Priorități

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:

Întrebări foarte banale care au valori implicite care vor funcționa în marea majoritate a cazurilor.
Întrebări normale care au valori implicite rezonabile.
Întrebări care nu au un răspuns implicit rezonabil.
Întrebări pe care trebuie să le vedeți cu adevărat (altfel...).

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.

Baza de date principală

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/ .

Instalarea nesupravegheată a pachetelor

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.

Dezvoltarea pentru Debconf

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.

VARIABILE DE MEDIU

Utilizată pentru a schimba temporar interfața utilizată de debconf. A se vedea mai sus.
Utilizată pentru a modifica temporar prioritatea minimă a întrebării pe care debconf o va afișa. A se vedea mai sus.
Activează ieșirea de depanare la ieșirea de eroare standard. Poate fi definită ca un nume de facilitate sau o expresie regulată care corespunde unui nume de facilitate (cum ar fi '.*' pentru a afișa toate informațiile de depanare). Numele facilităților includ:
Informații de depanare de interes pentru un utilizator debconf.
Informații de depanare de interes pentru un dezvoltator de pachete.
Informații de depanare despre baza de date principală.
Definiți la „yes” pentru a dezactiva unele avertismente pe care debconf le poate afișa. Nu suprimă afișarea erorilor fatale.
Definiți la „yes” pentru a activa modul laconic, în care interfețele debconf reduc cantitatea de detalii cât mai mult posibil.
Stivuiește o bază de date după bazele de date utilizate în mod normal, astfel încât aceasta să fie utilizată ca soluție de rezervă pentru obținerea informațiilor de configurare. Consultați „Instalarea nesupravegheată a pachetelor” de mai sus. Dacă valoarea variabilei este numele unei baze de date existente în debconf.conf, atunci acea bază de date va fi utilizată. În caz contrar, variabila de mediu poate fi utilizată pentru a configura o bază de date din mers, prin indicarea tipului de bază de date și, opțional, prin transmiterea parametrilor câmp:valoare, în interiorul unor acolade după tip. Spațiile sunt utilizate pentru a separa câmpurile, astfel încât nu puteți specifica o valoare de câmp care conține spații albe.

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.

Stivuiește o bază de date înaintea bazelor de date utilizate în mod normal, astfel încât să poată trece peste valorile din acestea. Valoarea variabilei funcționează la fel ca valoarea lui DEBCONF_DB_FALLBACK.
Utilizează o anumită bază de date în locul bazelor de date utilizate în mod normal. Acest lucru poate fi util pentru testarea cu o bază de date separată fără a fi nevoie să creați un debconf.conf separat sau pentru a evita blocarea bazelor de date normale.
Dacă această variabilă de mediu este activată, debconf va ignora fișierul ~/.debconfrc al unui utilizator și va utiliza în schimb fișierul de sistem. Dacă este definită la numele unui fișier obișnuit, debconf va utiliza acel fișier cu prioritate față de fișierele de configurare ale sistemului.
Dacă această variabilă de mediu este activată, debconf va utiliza dialog în locul whiptail pentru interfața de dialog.
Dacă această variabilă de mediu este activată, debconf va utiliza Xdialog în loc de whiptail pentru interfața de dialog.
Stabiliți-o la „true” pentru ca fanionul „seen” să fie activat pentru întrebările adresate în interfața neinteractivă.

ERORI

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:

*
Interfața debconf pe care o foloseați când a apărut problema
*
Ce ați făcut pentru a declanșa problema.
*
Textul integral al oricărui mesaj de eroare. Dacă puteți reproduce eroarea, faceți acest lucru cu DEBCONF_DEBUG='.*' definită și exportată. Acest lucru accelerează foarte mult depanarea.

CONSULTAȚI ȘI

debconf.conf(5), debconf-devel(7), dpkg-preconfigure(8), dpkg-reconfigure(8), debconf(1),

AUTOR

Joey Hess <joeyh@debian.org>

TRADUERE

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