Apt get update ce face. Sistemul de gestionare a pachetelor APT

Utilitarul apt-get este un program puternic de consolă gratuit care este utilizat și funcționează cu biblioteca APT (Advanced Packaging Tool) pentru a instala pachete software noi, a elimina cele existente, a le actualiza pe cele instalate și, de asemenea, pentru a actualiza întregul sistem de operare.

Utilitarul de consolă apt-cache este folosit pentru a căuta în cache pachetele software APT. Cu cuvinte simple, acest instrument este folosit pentru a căuta pachete, pentru a colecta informații despre pachete și pentru a găsi pachete disponibile pentru instalare pe sistemele de operare bazate pe Debian sau Ubuntu.

Cum pot obține o listă cu toate pachetele disponibile?

Pentru a vedea toate pachetele disponibile, rulați următoarea comandă:

Nume de pachete Apt-cache

Cum pot găsi numele pachetului și descrierea acestuia.

Pentru a găsi numele și descrierea pachetului înainte de instalare, utilizați indicatorul „căutare”. Utilizarea „căutare” cu apt-cache va afișa o listă de pachete potrivite cu o scurtă descriere. De exemplu, doriți să găsiți descrierea pachetului vsftpd: pentru a face acest lucru, comanda ar trebui să fie astfel:

Căutare Apt-cache vsftpd

Pentru a găsi și lista toate pachetele al căror nume începe cu vsftpd puteți folosi următoarea comandă:

Apt-cache pkgnames vsftpd

Cum pot vedea informațiile pachetului?

De exemplu, dacă doriți să vizualizați informații despre un pachet, cu o scurtă descriere a acestuia care să arate numărul versiunii, sumele de verificare, dimensiunea, dimensiunea instalată, categoriile și așa mai departe, puteți utiliza subcomanda „show” așa cum se arată mai jos:

Apt-cache arată netcat

Cum poți verifica dependențele unui pachet?

Pentru a verifica dependențele unui anumit pachet, puteți utiliza subcomanda showpkg pentru a vedea dacă aceste dependențe sunt instalate sau nu. De exemplu, utilizați comanda showpkg împreună cu numele pachetului.

Apt-cache showpkg vsftpd

Cum pot vedea statisticile cache?

Subcomanda statistici va afișa statistici complete despre cache, cum ar fi numărul total de pachete găsite în cache. Utilizați această comandă:

Statistici Apt-cache

Cum se actualizează lista de pachete de pe sistem?

Comanda de actualizare este utilizată pentru a sincroniza și actualiza fișierele index ale pachetelor. Sincronizarea are loc cu sursele specificate în fișier /etc/apt/sources.list. Puteți folosi această comandă, de exemplu, pentru a vă asigura că nu pierdeți actualizări importante ale pachetului.

Sudo apt-get update

Cum se actualizează pachetele din sistem?

Comanda de actualizare este utilizată pentru a actualiza toate software-urile instalate în prezent pe sistemul dumneavoastră. Uneori se poate întâmpla ca actualizarea să nu poată fi instalată din cauza unui alt pachet care necesită o versiune veche.

Sudo apt-get upgrade

Dar dacă doriți să faceți upgrade, indiferent de cerințele pachetului, utilizați subcomanda dist-upgrade:

Sudo apt-get dist-upgrade

Cum pot instala sau actualiza orice pachet specific?

Subcomanda de instalare este utilizată pentru a instala sau actualiza un pachet.

Sudo apt-get install netcat

Cum pot instala mai multe pachete simultan?

Puteți introduce numele mai multor pachete pentru a le instala în același timp. De exemplu, pentru a instala pachetele nethogs și goaccess, puteți rula următoarea comandă:

Sudo apt-get install nethogs goaccess

Cum se instalează mai multe pachete folosind un nume „mască”

Cu fragmente obișnuite, puteți adăuga mai multe pachete folosind caractere speciale. De exemplu, puteți utiliza un asterisc pentru a instala toate pachetele care conțin șirul „nume” în numele lor:

Sudo apt-get install *nume*

Cum se instalează pachete fără actualizare.

Utilizarea indicatorului –no-upgrade va împiedica upgrade-urile la pachetele deja instalate.

Sudo apt-get install packageName --no-upgrade

Cum pot actualiza anumite pachete?

Indicatorul --only-upgrade nu va instala pachete noi, ci le va actualiza doar pe cele existente.

Sudo apt-get install package_name --only-upgrade

Cum pot instala o anumită versiune a unui pachet?

Să ne imaginăm că trebuie să instalați o anumită versiune a unui pachet, trebuie doar să utilizați semnul egal împreună cu numele pachetului și să adăugați versiunea dorită.

Sudo apt-get install vsftpd=2.3.5-3ubuntu1

Cum să eliminați pachetele fără a elimina setările?

Pentru a elimina pachetele software fără a le șterge fișierele de configurare (pentru utilizare ulterioară), utilizați comanda remove așa cum se arată.

Sudo apt-get remove vsftpd

Cum să eliminați complet pachetele?

Pentru a elimina un pachet împreună cu fișierele de configurare ale acestuia, utilizați subcomanda purge așa cum se arată mai jos.

Sudo apt-get purge vsftpd

Sau puteți combina ambele comenzi, astfel:

Sudo apt-get remove --purge vsftpd

Cum pot șterge spațiul pe disc?

Comanda de curățare este utilizată pentru a elibera spațiu pe disc prin eliminarea fișierelor .deb recuperate ale pachetelor din depozitul dvs. local.

Sudo apt-get clean

Cum descarc codul sursă al pachetului?

Pentru a descărca numai codul sursă al unui pachet, puteți utiliza opțiunea –download-only source cu numele pachetului, de exemplu:

Sudo apt-get --download-only source vsftpd

Cum pot descărca și despacheta pachetul?

Pentru a descărca și extrage codul sursă al pachetului într-un director special, executați următoarea comandă:

Sudo apt-get source vsftpd

Cum pot descărca, extrage și compila codul sursă al pachetului?

De asemenea, puteți descărca, extrage și compila codul sursă al pachetului folosind opțiunea „–compilare”, așa cum se arată mai jos:

Sudo apt-get --compile sursa goaccess

Cum să descărcați un pachet fără instalare

Folosind opțiunea „descărcare”, puteți descărca orice pachet fără a-l instala. De exemplu, următoarea comandă va descărca numai pachetul nethogs în directorul de lucru curent.

Sudo apt-get download nethogs

Cum pot vedea jurnalul de modificări al unui pachet?

Indicatorul jurnalului de modificări încarcă jurnalul de modificări al pachetului și afișează versiunea pachetului, dacă este instalat.

Sudo apt-get changelog vsftpd

Cum poți remedia dependențele rupte?

Comanda „check” este un instrument de diagnosticare, este folosită pentru a actualiza memoria cache a pachetului și pentru a verifica dependențele rupte.

Sudo apt-get check

Cum puteți găsi și colecta dependențe?

Comanda build-dep găsește și instalează dependențele construite ale pachetului dorit. Dacă pachetul nu se află în depozitul local, veți primi o eroare.

Sudo apt-get build-dep netcat

Cum pot șterge automat memoria cache Apt-Get?

Comanda autoclean elimină toate fișierele .deb din /var/cache/apt/archives pentru a elibera spațiu liber pe hard disk.

Sudo apt-get autoclean

Cum pot elimina automat pachetele inutile?

Subcomanda autoremove este folosită pentru a elimina automat pachetele care au fost instalate ca dependențe ale altora, dar care nu mai sunt necesare. De exemplu, următoarea comandă va elimina un pachet instalat împreună cu dependențele acestuia.

Sudo apt-get autoremove vsftpd

Informații oferite cu amabilitate de site. Mulțumesc.

Multă vreme am fost afectat de ignoranța despre cum să fac unele lucruri de bază în managerii de pachete Debian, dar, așa cum se întâmplă adesea, nu era nimeni în apropiere să întreb și nu am apucat să notez nimic. Și în cele din urmă întrebările s-au maturizat și am scris întrebarea mea pe lista de corespondență Debian. Bineînțeles, s-a dovedit că am omis ceva evident, dar am învățat și o mulțime de utilitate neevidente, așa că am decis să schițez o foaie de cheat, poate că va fi de folos cuiva.

Ajutor rapid pentru administratorul Debian

De bază și bine cunoscută
Obținerea de informații despre pachetele noi/actualizate
actualizare sudo aptitude
Actualizați
sudo aptitude safe-upgrade
Găsirea unui pachet după numele pachetelor
căutarea aptitudinilor cuvânt_cheie
Căutați un pachet după numele exact
căutare de aptitudini „^nume$”
Căutați după descriere
căutare de aptitudini „?descriere(„cuvânt_cheie”)”
Informații despre pachet
aptitude show nume_pachet
Instalare
sudo aptitude install package_name
Îndepărtarea
sudo aptitude remove package_name
Eliminare completă (împreună cu configurații)
sudo aptitude purge nume_pachet
Ștergeți memoria cache a pachetelor descărcate (eliberați spațiu)
aptitude autoclean # vor fi eliminate numai pachetele cu versiuni învechite aptitude clean # întregul cache va fi șters
Instalarea unui pachet descărcat/creat separat (pentru a crea un pachet din surse terțe, trebuie să utilizați utilitarul checkinstall cu marcajul -D)
sudo dpkg -i /path/to/package.deb
Pentru informații suplimentare
man aptitude sudo aptitude install aptitude-doc-en
și uită-te la documentația (/usr/share/doc/aptitude/html/en/index.html), dacă vrei ajutor rapid cu privire la modelele de căutare, mergi aici - /usr/share/doc/aptitude/html/en/ch02s04 .html. Dacă vă este prea lene să instalați documentul, atunci acesta este disponibil online.
Introducere în Debian Wiki: wiki.debian.org/Aptitude
Și acum ceea ce nu este evident sau necesită o citire completă a documentației
1. Cum pot vedea ce pachete vor fi actualizate după actualizare?
căutarea aptitudinilor ?upgradabil
poate fi folosit și (dacă este instalat)
sudo daptup
dar după instalare, actualizarea regulată se va comporta exact la fel

2. Cum pot afla ce s-a schimbat în pachetele care vor fi actualizate?
Poti incerca
sudo aptitude changelog package_name
pentru fiecare pachet.
Dar este mai bine să instalați apt-listchanges, apoi înainte de orice instalare de actualizare va fi afișată o listă de modificări, setările implicite nu sunt foarte convenabile, deci este mai bine să reconfigurați pentru dvs., de exemplu, selectați formatul de ieșire (deocamdată eu" m folosind text, pentru actualizări mari paginatorul este probabil mai bun), nu trimite scrisori, cere confirmare, afișa toate informațiile. Pentru a face acest lucru, trebuie să alergați
sudo dpkg-reconfigure apt-listchanges
3. Ce ar trebui să fac dacă actualizarea întrerupe ceva și trebuie să retrag?
Nu există rollback, puteți încerca să găsiți versiunea anterioară a pachetului
versiunea sudo aptitude nume_pachet
și instalați-l
sudo aptitude install package_name=version
4. Cum să găsiți toate pachetele instalate manual?
există o opțiune de comandă (căutarea aptitudinilor „~i!~M”), dar din păcate nu dă rezultatul dorit, așa că întrebarea rămâne deschisă, există o mulțime de metode bazate pe analiza jurnalului
/var/log/aptitude (+ bucăți rotite) /var/log/installer/initial-status.gz /var/log/dpkg.log (+ bucăți rotite)
dar nu există o soluție simplă și gata făcută, iar informațiile se pot pierde teoretic în timpul rotațiilor, trebuie să configurați

5. Cum pot vizualiza lista de fișiere dintr-un pachet?
dacă pachetul este instalat
dpkg -L nume_pachet
pentru orice pachet instalați apt-file și
lista de fișiere apt nume_pachet
6. Cum pot vedea ce pachet îi aparține un fișier?
dpkg -S nume_fișier
7. Cum să eliminați toate pachetele care conțin cheia în numele pachetului?
sudo aptitude purge ~ikey
8. Cum să eliminați configurațiile rămase din pachetele șterse?
sudo aptitude purge ~c
9. Cum să găsiți pachetul care conține fișierul lib.so:
apt-file search lib.so
10. Cum se transformă un pachet rpm în deb?
alien --to-deb /path/to/file.rpm
11. Cum să găsiți o listă de nuclee instalate?
dpkg --list linux-* | grep ii
12. Cum se instalează un pachet de la testare sau experimental?
Trebuie să scrieți pe acest subiect separat (de exemplu, așa), dar pe scurt, există comenzi pentru aceasta
sudo aptitude -t testing package_name
sau
sudo aptitude nume_pachet/testare
13. Cum pot elimina un metapachet, dar las una dintre dependențe?
Va trebui să citiți documentația despre cheia unmarkauto sau să căutați aici.

14. Cum să aflați ce a intrat în sistemul de fișiere de către sistemul de gestionare a pachetelor?
Există o utilitate cruft, deși problema interpretării rezultatelor (fișierul raport) este încă deschisă
sudo cruft -d / -r raport --ignore /home --ignore /var --ignore /tmp
15. Ce depozite suplimentare există?
Debian - wiki.debian.org/UnofficialRepositories
Ubuntu - multe diferite

Datorita faptului ca unii camarazi nu inteleg ce sunt apt si dpkg. Am decis să creez o altă postare despre aceste utilități.

APT și totul, totul, totul. Explorarea capacităților managerului de pachete APT și a programelor conexe

Debian a adus o mulțime de inovații pozitive în lumea Linux, dintre care multe au fost adoptate de alte distribuții. Cea mai semnificativă îmbunătățire a Debian a fost sistemul de gestionare a pachetelor APT; după lansarea sa, toate celelalte distribuții s-au transformat în gunoi învechit. Astăzi, APT este complex, inteligent, flexibil și ascunde multe secrete pentru utilizatorul Linux neinițiat.

Sistem avansat de gestionare a pachetelor

APT (Advanced Packaging Tool) în sine nu este un sistem de gestionare a pachetelor în adevăratul sens al cuvântului. Toate acțiunile pentru despachetarea, înregistrarea în sistem și vizualizarea bazei de date a pachetelor sunt efectuate de utilitarele pachetelor dpkg, în timp ce utilitarele APT sunt un wrapper care este folosit pentru a căuta pachete, a verifica sumele de verificare, a descărca din depozit, a rezolva dependențe, precum și ca o serie de alte actiuni .

APT include următorul set de utilități:

utilitare pachet apt

apt-cache - manipulează memoria cache a pachetelor disponibile, utilizate în mod obișnuit
pentru a căuta un pachet și/sau a obține informații despre acesta

apt-cdrom - vă permite să adăugați un CD/DVD ca sursă de pachet (depozitar)

apt-config - citește valorile opțiunilor specificate în configurație
fișierul /etc/apt/apt.conf, folosit de alte utilitare APT

apt-extracttemplates - extrage fișierele de configurare DebConf
din pachete, utilizate de alte utilitare APT

apt-ftparchive - creează fișiere index

apt-get - instalează, elimină, actualizează lista de pachete
și pachetele în sine, utilitatea centrală APT

apt-key - gestionează cheile de autentificare utilizate pentru verificare
autenticitatea surselor pachetelor

apt-secure - verifică semnătura digitală a pachetelor apt primite
incluse în distribuție și depozite

apt-sortpkgs - sortează fișierele index

Utilitarele se bazează pe următoarele fișiere de configurare:

Fișiere de configurare APT

/etc/apt/sources.list - lista de surse de pachete (depozite)
/etc/apt/apt.conf - fișierul principal de configurare APT
/etc/apt/preferences - fișierul de preferințe, controlează ce versiune a pachetului va fi
instalat dacă există mai multe versiuni în depozit simultan

APT este simplu și simplu de utilizat; utilizatorul mediu are nevoie de obicei doar de cele șase comenzi de mai jos:

Comenzile APT de bază

masca de căutare apt-cache - căutare pachet
apt-cache show package - vizualizați informații despre pachet
apt-get install package - instalarea unui pachet
apt-get remove package - elimina un pachet
apt-get update - actualizați memoria cache a pachetelor disponibile
apt-get upgrade - actualizați toate pachetele

Ultimele două comenzi sunt de obicei rulate una după alta, ceea ce va reinstala toate pachetele pentru care sunt disponibile versiuni noi în depozit. Dacă trebuie să actualizați doar pachetul specificat, atunci după „apt-get update” ar trebui să rulați comanda „apt-get install package”.

Distribuția Ubuntu face procesul de „comunicare” cu utilitarele APT și mai simplu și îl reduce la a face clic pe casetele de selectare ale interfeței grafice. Are propriul său manager de pachete extrem de simplu (numit „Manager de pachete”), un manager de actualizare rulat cron, un program de instalare grafic pentru pachetele deb descărcate manual GDebi și un supliment grafic mai puternic pentru utilitarele Synaptic APT.

Între timp, APT este mult mai complex și mai flexibil decât ar părea la prima vedere. Prin urmare, în secțiunile următoare ne vom uita la câteva metode nu în totalitate tipice de utilizare a acestuia.

Surse de pachete de la terți

Pe lângă depozitul principal, care conține toate pachetele de la dezvoltatorii distribuției, există o mulțime de alte surse de pachete care pot conține software terță parte care nu este disponibil din depozitul oficial, oferă versiuni mai recente ale acestuia sau pur și simplu fii o oglindă mai rapidă. Depozitul poate fi fie un director obișnuit de pe hard disk, fie un CD.

Pentru a învăța APT să lucreze cu depozite terțe, trebuie doar să urmați patru pași simpli:

Câmpul uri este adresa depozitului, care în cele mai multe cazuri este o adresă HTTP, dar poate fi și o legătură către un depozit local (fișier:/root/repository), adresa unui depozit pe un server FTP sau SSH. Câmpul „distribuție” indică numele distribuției pentru care sunt colectate pachetele. Pentru Debian, numele poate fi unul dintre stabil, vechi stabil, instabil, testare, în timp ce în cazul Ubuntu, ar trebui să indicați doar numele specific al distribuției (de exemplu, jaunty), precum și diverse denumiri bazate pe acesta ( de exemplu, jaunty-updates, jaunty-backports, jaunty-security). Trebuie spus că APT nu este deloc împotriva amestecării pachetelor din diferite distribuții pe un singur sistem, dar în acest caz doar tu vei fi responsabil pentru consecințe. Componenta este de obicei numită main, contrib sau non-free pentru Debian și main, universe, multiverse, partner și restricted pentru Ubuntu. Acestea sunt toate nume ale diferitelor depozite de pachete, care sunt separate doar în pachete separate pe baza unor criterii. De exemplu, main sunt pachetele colectate de un grup de dezvoltatori Ubuntu/Debian; există anumite garanții pentru calitatea software-ului conținut în acestea, inclusiv actualizări în timp util și remedieri de erori, în timp ce contrib și universe sunt software terță parte pe care le instalați la dvs. propriul risc.risc.

2. Adăugați la apt keyring cheia publică a depozitului, folosită pentru a verifica autenticitatea și fiabilitatea acestuia. Cheia poate fi obținută prin orice mijloace și adăugată prin rularea comenzii „apt-key add key”, dar această metodă este rar practicată din cauza neplăcerilor sale. În marea majoritate a cazurilor vei avea de-a face cu o echipă

sudo apt-key adv --keyserver certificate-server --recv-keys key-id
care solicită cheia direct de la serverul de certificare (pentru Ubuntu aceasta este keyserver.ubuntu.com). Acesta este modul în care majoritatea dezvoltatorilor terți își distribuie software-ul pentru distribuțiile Debian/Ubuntu (în timp ce alții pur și simplu postează pachete și sumele lor de verificare). De exemplu, mergând la pagina proiectului care vă interesează pe găzduirea launchpad.net și făcând clic pe linkul „Detalii tehnice despre acest PPA”, veți vedea o linie care trebuie adăugată la /etc/apt/sources .list, în „Cheie de semnare:” va fi indicat ID-ul cheii.

3. Actualizați memoria cache a pachetelor disponibile:

sudo apt-get update
4. Instalați pachetul folosind comanda „apt-get install package”.

Mulți dezvoltatori pun un link către depozit și ID-ul său cheie direct în pachetul deb, așa că după descărcarea pachetului, instalarea acestuia și rularea comenzii „apt-get update && apt-get upgrade”, pachetele vor fi actualizate împreună cu frații lor. enumerate în sursele.lista. În special, așa sunt distribuite browserele Opera și versiunea alfa a Google Chrome.

Un depozit situat pe un CD este mult mai ușor de adăugat la sources.list. Există o comandă specială pentru aceasta, apt-cdrom. Pur și simplu introduceți CD-ul în unitate și executați comanda:

sudo apt-cdrom add

Trucuri și situații neobișnuite

APT este APT, este convenabil și simplu, dar uneori nu te poți lipsi de trucuri, dintre care cele mai utile le vei învăța din această secțiune.

1. În mod implicit, comanda „apt-get remove” elimină complet un pachet numai dacă niciunul dintre fișierele acestuia nu a fost modificat de la instalare, în caz contrar fișierele modificate rămân neatinse. Desigur, fișierele de configurare se schimbă aproape întotdeauna, așa că apt-get lasă în urmă o grămadă de gunoi pe care trebuie să le curățați manual. Comanda „apt-get purge” în loc de „apt-get remove” rezolvă această problemă.

2. Cei cărora le place să joace cu sistemul, precum și administratorii de sistem ale căror servere au fost piratate, cel mai probabil vor dori să readucă pachetele la starea inițială în care se aflau înainte de manipulare. Comanda va ajuta cu asta:

sudo apt-get install --reinstall pachet
3. Utilitarele de gestionare a pachetelor deb de nivel inferior (cum ar fi dselect și dpkg) mențin o listă specială de stări ale pachetelor care pot fi folosite pentru a controla ce pachete trebuie instalate sau eliminate în modul batch (așa funcționează dselect + dpkg). Poate fi folosit și în multe alte scopuri, de exemplu, pentru a transfera configurația sistemului pe o altă mașină. Rulați următoarea comandă:

dpkg --get-selections > fișier
Transferați fișierul pe o altă mașină și executați două comenzi pe el:

fișier cat > dpkg --set-selections
apt-get dselect-upgrade

Toate pachetele sistemului sursă vor fi adăugate la sistem. Pentru ca fișierul de stare a pachetului să conțină și informații despre pachetele care ar trebui eliminate din sistem, adăugați un caracter „\*” după argumentul „--get-selections”. Lista de stare nu conține versiuni de pachet; aceasta poate fi folosită după instalarea unei versiuni mai noi a distribuției pentru a o aduce la starea necesară.

4. Ați aplicat manual un patch unui fișier al unuia dintre pachetele de sistem și nu doriți ca acest pachet să fie actualizat (cu distrugerea tuturor modificărilor dvs.) după ce ați apelat „apt-get upgrade”. În acest caz, lista statelor vă va veni din nou în ajutor. Pachetul poate fi înghețat, determinând ca apt-get să refuze să-l actualizeze și să-l ignore:

echo -e "coreutils hold" | dpkg --set-selections
Puteți forța o actualizare a pachetului specificând indicatorul „-u” atunci când apelați apt-get.

5. Ca orice sistem cu funcționalitate de rețea, APT vă permite să utilizați un proxy pentru a accesa depozitele. Pentru a activa această caracteristică, adăugați următoarea linie în fișierul /etc/apt/apt.conf:

Achiziționați::http::Proxy „http://xxx.xxx.xx:yyyy”

Unde xxx.xxx.xx este numele proxy-ului dvs., yyyy este portul.

6. De obicei, utilitarele APT solicită cea mai nouă versiune a unui pachet din tot ce se află în cache-ul său, așa că dacă ați adăugat diverse depozite experimentale și instabile la sources.list, atunci după actualizare veți primi o distribuție constând exclusiv din pachete experimentale sau instabile , și o grămadă de probleme cauzate de această stare de lucruri. Cu toate acestea, situația poate fi rezolvată cu ușurință plasând următoarea linie în /etc/apt/apt.conf:

APT::Default-Release „eliberare”;

Unde lansarea este oldstable, stabilă, instabilă, de testare sau experimentală pentru Debian sau numele ediției pentru Ubuntu. Acum, dacă trebuie să instalați un pachet din distribuția specificată, scrieți numele acestuia după argumentul „-t” atunci când apelați apt-get:

sudo apt-get -t unstable install package
7. Toate pachetele apt-get deb primite sunt stocate în directorul /var/cache/apt/archives, ceea ce înseamnă că, dacă reinstalați sistemul, puteți copia conținutul directorului pe alt disc/partiție și apoi îl puteți restaura și economisiți timp/trafic de instalare a pachetelor. În plus, acesta este în esență un instantaneu al sistemului dvs. instalat (acea parte a acestuia pe care ați instalat-o singur), care poate fi atribuită unui prieten (împreună cu lista de stări descrise în al treilea paragraf) sau, dacă nu este necesar, ștearsă. pentru a elibera spațiu.

8. Instantaneul de sistem șters descris în paragraful anterior poate fi restabilit cu ușurință folosind designul de mai jos:

sudo dpkg --get-selections | grep -v „dezinstalare” | \
awk „(tipărește $1)” | xargs dpkg-repack

9. Pe lângă pachetele binare, depozitele Debian/Ubuntu conțin și pachete sursă de aplicații care pot fi obținute și construite folosind următoarea comandă:

sudo apt-get -b sursă nume pachet

Utilități terțe

Sistemul APT a parcurs un drum foarte lung în dezvoltarea sa, așa că, pe lângă utilitățile oficiale incluse în pachetul apt, depozitele Debian și Ubuntu sunt pline cu o mulțime de utilități terțe care pot fi folosite pentru a efectua unele non- sarcini standard.
Cel mai util dintre ele se numește apt-file și este necesar, după cum ați putea ghici din nume, pentru a determina dacă un anumit fișier aparține unui anumit pachet. Instalare:

sudo apt-get install apt-file
Solicităm apt-file să creeze un cache al tuturor fișierelor instalate în sistemul de pachete (va fi căutat):

căutare în fișierul apt /usr/bin/apt-get
apt: /usr/bin/apt-get

Solicităm o listă cu toate fișierele pachetului:

apt-file list apt

Un utilitar simplu numit apt-show-versions vă va arăta ce pachete pot fi actualizate, inclusiv versiunile și alte detalii. Rulați-l cu indicatorul „-u” pentru a obține o listă cu numai pachetele care trebuie actualizate (în loc de o listă a tuturor pachetelor).

Dacă ați instalat un număr mare de pachete diferite și acum doriți să scăpați de nedoriturile inutile, atunci utilitarul deborphan vă va ajuta în această problemă, care caută pachete neutilizate și dependențe orfane. Doar rulați deborphan fără niciun argument și veți vedea o listă de pachete, pe care le puteți transmite imediat ca intrare la comanda „apt-get remove” sau pur și simplu rulați următoarea comandă:

sudo apt-get remove `deborphan`

În mod implicit, deborphan procesează numai pachetele care conțin biblioteci, dar acest comportament poate fi modificat prin adăugarea indicatorului „-a” la invocarea comenzii:

Nu ar trebui să vă grăbiți imediat să eliminați pachetele afișate de utilitar, deoarece nici cel mai puternic algoritm euristic nu este capabil să vă determine nevoile personale. Deci, programul mi-a arătat pachetele google-chrome, inkscape și chiar xorg.

Utilitarul apt-move vă va permite să creați un depozit local. Instalați programul, deschideți fișierul /etc/apt-move.conf, specificați în opțiunea LOCALDIR calea către directorul în care ar trebui să fie localizat depozitul și rulați comanda:

actualizare sudo apt-move

Ca urmare, toate pachetele descărcate de pe Internet folosind apt-get (directorul /var/cache/apt/archives) vor fi mutate în directorul specificat în config, pentru care va fi creat un fișier index. Aceasta este o modalitate convenabilă de a crea un depozit intranet pentru acele cazuri în care trebuie instalate multe pachete identice pe mai multe mașini.

Pentru a crea un depozit local, este, de asemenea, foarte convenabil să utilizați serverul apt-proxy, care vă permite să stocați în cache pachetele deb descărcate din depozit din partea serverului. Pentru a face acest lucru, apt-proxy este instalat pe o mașină dedicată (eventual un gateway), iar source.list de clienți este modificat astfel încât adresa acestei mașini să fie specificată ca câmp uri al tuturor depozitelor. Ca rezultat, toate cererile pentru pachetele deb sunt redirecționate către apt-proxy, care solicită pachetul din depozitul principal și îl stochează în cache-ul său, iar răspunsul la toate solicitările ulterioare pentru acest pachet va fi returnat din cache.

Mai întâi, instalați apt-proxy pe o mașină dedicată:

sudo apt-get install apt-proxy

Apoi, deschideți fișierul /etc/apt-proxy/apt-proxy-v2.conf, accesați secțiunea și înlocuiți valoarea opțiunii de adresă cu adresa IP a mașinii și, de asemenea, descrieți sursele de pachete utilizate de apt- proxy, de exemplu:

sudo vi /etc/apt-proxy/apt-proxy-v2.conf


backend-uri = http://ru.archive.ubuntu.com/ubuntu/
min_refresh_delay = 1d


backend-uri = http://security.ubuntu.com/ubuntu/
min_refresh_delay = 1d

De obicei, aceste două adrese sunt suficiente pentru a acoperi întreaga gamă de pachete furnizate de dezvoltatorii Ubuntu. Reporniți apt-proxy:

sudo invoke-rc.d apt-proxy restart

Pentru a trece clienții la utilizarea apt-proxy, luați standardul Ubuntu sources.list, înlocuiți toate câmpurile uri reale cu „http://IP-address-apt-proxy:9999/ubuntu/” și copiați acest fișier în fiecare client.

Există multe alte utilități, mai puțin interesante, care funcționează împreună cu APT. De exemplu, apt-dater vă permite să actualizați pachete pe un număr mare de noduri la distanță folosind o interfață pseudo-grafică. Programul aptsh implementează o interfață de comandă asemănătoare sh peste comenzile pachetului apt, aptfs este un sistem de fișiere virtual pentru gestionarea APT. Utilitarul debdelta, care vă permite să actualizați pachetele prin descărcarea deltelor lor de pe Internet, ar putea fi subiectul unui articol separat dacă ar exista cel puțin un depozit actualizat în timp util pentru acesta.

Aptitudinea

Utilitarul apt-get și rudele sale nu sunt singura implementare APT disponibilă. O alternativă și mai puternică, convenabilă și versatilă la acestea se numește aptitude și este o funcționalitate concentrată a apt-get, apt-cache și dselect într-un singur loc.
Aptitude vă permite să instalați/dezinstalați, să căutați, să actualizați și să faceți o mulțime de alte lucruri cu pachete folosind două tipuri de interfață: un mod de comandă, similar cu apt-get și apt-cache și un mod pseudo-grafic, similar ca aspect la interfața dselect, dar mult mai convenabilă și funcțională.

În modul linie de comandă, aptitude poate fi folosită pentru a face lucruri precum:

aptitude install - instalare pachet

aptitude remove - elimina pachetul și dependențele orfane

aptitude purge - eliminați pachetul, dependențe orfane
și fișierele de configurare rămase după ele

aptitude search - caută un pachet în cache (lista pachetelor disponibile)

aptitude update - actualizare cache

aptitude safe-upgrade - pachete de actualizare

aptitude clean - eliminați pachetele descărcate anterior

aptitude full-upgrade - pachete de actualizare,
chiar dacă această acțiune necesită eliminarea oricăror pachete

aptitude show - informații despre pachet

aptitude autoclean - eliminați pachetele învechite

aptitude hold - stabilirea unei interdicții privind actualizarea unui pachet

Modul interactiv, disponibil atunci când rulați aptitude fără argumente, vă permite să efectuați toate aceleași acțiuni folosind o interfață pseudo-grafică construită pe biblioteca ncurses. Funcționează în modul lot (selectați pachete - începeți procesul de instalare), așa că va fi convenabil în cazurile în care trebuie să instalați un număr mare de pachete.

Ouă de Paște

Dezvoltatorii utilităților APT s-au dovedit a fi băieți cu un simț al umorului oarecum deformat. Uită-te la rezultatul următoarei comenzi:

sudo apt-get moo
Ceea ce pare și mai sălbatic este ceea ce creatorii aptitudinilor au integrat în programul lor. Încerca:

sudo aptitude moo
Un fel de ou de Paște fără ou de Paște. BINE:

sudo aptitude -v moo
sudo aptitude -vv moo
sudo aptitude -vvv moo
sudo aptitude -vvvv moo
sudo aptitude -vvvvv moo

Și acordul final:

sudo aptitude -vvvvvv moo

Comenzi apt-cache utile

apt-cache show package - informații detaliate despre pachet
apt-cache showpkg package - informații generale despre pachet
apt-cache depends package - listă de dependențe de pachet
pachetul apt-cache rdepends - listă de dependențe inverse (cine are nevoie de pachetul specificat)

Dicţionar APT

Pachet - un program, bibliotecă, cod sursă sau orice alte fișiere, precum și metadatele acestora, ambalate într-o arhivă special formată.

Depozitul este un loc de stocare pentru pachetele deb.

Cache-ul pachetelor disponibile (sau pur și simplu cache) este un fișier care memorează în cache informații despre toate pachetele disponibile din sursele listate în /etc/apt/sources.list. Memoria cache este actualizată de fiecare dată când este apelată comanda „apt-get update”.

Fișier index - fișierul principal al depozitului care conține numele, versiunea, dimensiunea, descrierea scurtă și completă și dependențele pentru fiecare pachet. Se numește Packages.gz în cazul unui depozit binar și Sources.gz pentru un depozit de cod sursă. Creat folosind utilitarele pkg-scanpackages și dpkg-scansources.

Inelul de chei Apt (literal: inelul de chei apt) este un depozit de chei care autentifică sursele de pachete (depozite).

Ce e inauntru?

Semnul distinctiv al pachetelor Deb este simplitatea lor. Orice pachet Deb constă din trei fișiere: data.tar.gz, control.tar.gz și debian-binary, ambalate cu arhivatorul ar. Fișierul data.tar.gz este conținutul pachetului (binare, man, documentație etc.), control.tar.gz este metadate, în cea mai simplă versiune două fișiere: control, care conține o descriere a pachetului, dependențe, dimensiunea, etc. .d. și md5sums sunt sume de control ale tuturor fișierelor pachetului. Fișierul debian-binar conține versiunea de format a pachetului Deb (de exemplu, 2.0). Pentru a despacheta pachetul, puteți folosi comanda:

ar -xv package.deb && tar -xzf data.tar.gz

Advanced Packaging Tool este un instrument de nivel înalt pentru lucrul cu pachete.

Lucrul cu pachete folosind dpkg.

dpkg este programul principal al sistemului pentru lucrul cu pachetele Debian. Dacă există pachete .deb, dpkg este cel care vă permite să le instalați sau să le analizați conținutul. Cu toate acestea, acest program are doar o vedere parțială asupra lumii Debian: știe ce este instalat pe sistem, precum și tot ce i se transmite pe linia de comandă, dar nu știe nimic despre alte pachete disponibile. Prin urmare, va eșua dacă se confruntă cu o dependență nesatisfăcută. Instrumente precum apt, pe de altă parte, vor crea automat o listă de dependențe, astfel încât totul să poată fi instalat cât mai automat posibil.

dpkg sau apt?

dpkg ar trebui să fie considerat un instrument de nivel scăzut (motor) și apt ca un instrument mai aproape de utilizator, ocolind limitările primului. Aceste instrumente funcționează împreună, fiecare având propriile sale specificități, adaptate pentru o gamă specifică de sarcini.

Instalarea pachetelor

dpkg este în primul rând un instrument pentru instalarea pachetelor Debian deja disponibile (din moment ce nu descarcă nimic). Pentru a instala un pachet, utilizați opțiunea -i sau --install.

Instalarea unui pachet folosind dpkg

Dpkg -i man-db_2.7.0.2-5_amd64.deb




Pachetul man-db (2.7.0.2-5) este configurat...

Putem vedea fiecare pas pe care îl execută dpkg, așa că știm unde ar fi putut apărea orice eroare. Instalarea se poate face si in doua etape: mai intai despachetare, apoi configurare. Acest lucru face ca apt-get să facă mai puține apeluri către dpkg (fiecare astfel de solicitare este o operațiune costisitoare din cauza necesității de a încărca baza de date în memorie, inclusiv întreaga listă de fișiere deja instalate).

Despachetare și configurare separate

Dpkg --unpack man-db_2.7.0.2-5_amd64.deb

(Citind baza de date... în prezent sunt instalate 86425 de fișiere și directoare.)
Se pregătește despachetarea man-db_2.7.0.2-5_amd64.deb...
Man-db (2.7.0.2-5) este despachetat pentru a înlocui (2.7.0.2-5) ...
Declanșatoarele pentru suportul mime (3.58) sunt procesate...

Dpkg --configure man-db

Pachetul man-db (2.7.0.2-5) este configurat...
Se actualizează baza de date a paginilor manuale...

Uneori, dpkg, dintr-un motiv sau altul, nu poate instala un pachet și returnează o eroare; dacă utilizatorul indică să ignore această eroare, va fi emis doar un avertisment; Există diverse opțiuni --force-* pentru aceasta. Comanda dpkg --force-help, sau documentația acesteia, va oferi o listă completă a acestor opțiuni. Cea mai frecventă eroare pe care o veți întâlni mai devreme sau mai târziu este un conflict de fișiere. Când un pachet conține un fișier care este deja instalat de un alt pachet, dpkg va refuza să-l instaleze și vom primi un mesaj ca acesta:

Pachetul libgdm este dezambalat (din fișierul.../libgdm_3.8.3-2_amd64.deb)...
dpkg: eroare la procesarea parametrului /var/cache/apt/archives/libgdm_3.8.3-2_amd64.deb (--unpack):
încercând să suprascrieți „/usr/bin/gdmflexiserver” care este deja în pachetul gdm3 3.4.1-9

În acest caz, dacă credeți că înlocuirea acestui fișier nu prezintă un risc semnificativ pentru stabilitatea sistemului dvs. (acesta este adesea cazul), puteți utiliza opțiunea --force-overwrite, care va spune dpkg să ignore această eroare și suprascrieți fișierul.
Deși există multe opțiuni --force-*, numai --force-overwrite este recomandat pentru utilizare obișnuită. Restul sunt destinate doar cazurilor excepționale și este mai bine să le lăsați în pace cât mai mult posibil pentru a respecta regulile stabilite la crearea pachetului. Nu uitați că aceste reguli sunt o garanție a integrității și stabilității sistemului.

ATENŢIE! Utilizarea eficientă a --force-*

Dacă nu sunteți atent, folosirea opțiunii --force-* poate face ca comenzile APT să nu mai funcționeze. Unele dintre aceste opțiuni vă permit să instalați un pachet cu dependențe neîndeplinite sau dacă există un conflict. Ca urmare, consecvența sistemului în ceea ce privește dependențele este întreruptă, iar comenzile APT vor refuza să facă altceva decât ceea ce va readuce sistemul la o stare consecventă (aceasta înseamnă, de obicei, instalarea dependenței lipsă sau eliminarea pachetului problematic). ). Iată un exemplu de mesaj care indică o astfel de eroare, care a fost primit după instalarea unei noi versiuni de rdesktop și ignorarea dependenței de o versiune mai nouă a libc6:

upgrade complet apt

Poate doriți să utilizați „apt-get -f install” pentru a remedia aceste erori.
Pachete cu dependențe neîndeplinite:
rdesktop: Depinde de: libc6 (>= 2.5) dar 2.3.6.ds1-13etch7 este deja instalat
E: Dependențe nesatisfăcute.

Încercați să utilizați -f.
Administratorii intim care au încredere în analiza lor asupra situației pot ignora avertismentul despre o problemă de dependență sau un conflict folosind opțiunea --force-* corespunzătoare. În acest caz, dacă doriți să continuați să utilizați apt sau aptitude, trebuie să editați /var/lib/dpkg/status și să eliminați/modificați dependența sau conflictul.
Editarea acestui fișier este un hack murdar și nu trebuie folosit decât în ​​cazuri extreme. Adesea, cea mai bună soluție este să reconstruiți pachetul ofensator ("Reconstruiți pachetul din sursa sa") sau să utilizați o nouă versiune a acestuia (probabil remediată) dintr-un depozit, cum ar fi stable-backports (consultați Secțiunea 6.1.2.4, „Software stabil cu Compatibilitate backport-uri" ).

Scoaterea unui pachet

Rularea dpkg cu opțiunea -r sau --remove urmată de numele pachetului va elimina acel pachet. Această eliminare, totuși, nu este completă: toate fișierele de configurare, scripturile de întreținere, fișierele jurnal (jurnalele de sistem) și alte date de utilizator utilizate de acest pachet vor rămâne. În acest fel, este ușor să scapi de program prin dezinstalarea acestuia, dar în același timp rămâne posibil să-l instalezi din nou cu aceeași configurație. Pentru a elimina complet tot ceea ce este asociat cu un pachet, utilizați opțiunea -P sau --purge urmată de numele pachetului.

Îndepărtarea completă a pachetului debian-cd

Dpkg -r debian-cd

(Citind baza de date... în prezent sunt instalate 97747 fișiere și directoare.)

Dpkg -P debian-cd

(Citind baza de date... în prezent sunt instalate 97401 fișiere și directoare.)
Pachetul debian-cd (3.1.17) este eliminat...
Fișierele de configurare ale pachetului debian-cd (3.1.17) sunt șterse...

dpkg interogări baze de date și parsarea fișierelor .deb

Pentru majoritatea opțiunilor, există opțiuni „lungi” (unul sau mai multe cuvinte precedate de o cratimă dublă) și opțiuni „scurte” (o singură literă, adesea prima literă a opțiunii „lungi”, urmată de o singură cratimă). Această convenție este atât de comună încât este deja un standard POSIX.
Înainte de a încheia această secțiune, să ne uităm la opțiunile dpkg pentru a interoga baza de date internă pentru diverse informații. În acest caz, vor fi specificate mai întâi opțiunile lungi, iar apoi opțiunile scurte corespunzătoare (care, desigur, au aceleași argumente). Astfel, pachetul --listfiles (sau -L) listează fișierele instalate de pachet; --search file (sau -S) caută pachetul căruia îi aparține acest fișier; --status package (sau -s) afișează informații despre un anumit pachet instalat; --list (sau -l) arată o listă de pachete cunoscute de sistem și starea acestora; --contents file.deb (sau -c) arată o listă de fișiere din acest pachet; --info file.deb (sau -I) arată informații despre pachetul Debian.

Preluarea informațiilor folosind dpkg

Dpkg -L bază-passwd

/.
/usr
/usr/sbin
/usr/sbin/update-passwd
/usr/share
/usr/share/man
/usr/share/man/ru
/usr/share/man/ru/man8
/usr/share/man/ru/man8/update-passwd.8.gz
/usr/share/man/pl
/usr/share/man/pl/man8
/usr/share/man/pl/man8/update-passwd.8.gz
/usr/share/man/man8
/usr/share/man/man8/update-passwd.8.gz
/usr/share/man/fr
/usr/share/man/fr/man8
/usr/share/man/fr/man8/update-passwd.8.gz
/usr/share/doc-base
/usr/share/doc-base/users-and-groups
/usr/share/base-passwd
/usr/share/base-passwd/passwd.master
/usr/share/base-passwd/group.master
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/base-passwd
/usr/share/doc
/usr/share/doc/base-passwd
/usr/share/doc/base-passwd/copyright
/usr/share/doc/base-passwd/users-and-groups.html
/usr/share/doc/base-passwd/changelog.gz
/usr/share/doc/base-passwd/users-and-groups.txt.gz
/usr/share/doc/base-passwd/README

Dpkg -S /bin/date

coreutils: /bin/date

Dpkg -s coreutils

Pachet: coreutils
Esențial: da
Stare: instalare ok instalată
Prioritate: obligatorie
Sectiunea: utilitati
Dimensiune instalată: 13822
Întreținere: Michael Stone
Arhitectură: amd64
Multi-Arch: străin
Versiune: 8.13-3.5
Înlocuiri: mktemp, timeout
Depinde: dpkg (>= 1.15.4) | info-instalare
Pre-Depinde: libacl1 (>= 2.2.51-8), libattr1 (>= 1:2.4.46-8), libc6 (>= 2.7), libselinux1 (>= 1.32)
Conflicte: timeout
Descriere: utilitare de bază GNU
Acest pachet conține fișierul de bază, shell-ul și manipularea textului
utilitare care se așteaptă să existe pe fiecare sistem de operare.
.
Mai exact, acest pachet include:
arch base64 nume de bază cat chcon chgrp chmod chown chroot cksum comm cp
csplit cut date dd df dir dircolors dirname du echo env expand expr
factor fals flock fmt fold groups head hostid id install join link ln
logname ls md5sum mkdir mkfifo mknod mktemp mv nice nl nohup nproc od
paste pathchk pinky pr printenv printf ptx pwd readlink rm rmdir runcon
sha*sum seq shred sleep sort split stat stty sum sync tac tail tee test
timeout touch tr truncate tsort tty uname unexpand uniq deconectare
utilizatorii vdir wc whoami da
Pagina de pornire: http://gnu.org/software/coreutils

Dpkg -l "b*"

Desired=necunoscut[u]/install[i]/delete[r]/clear[p]/commit[h]
| Stare=nu[n]/instalat[i]/configurat[c]/despachetat[U]/parțial configurat[F]/
parțial instalat[H]/trig-aWait/Trig-pend
|/ Eroare?=(niciunul)/reinstalare necesară[R] (majuscule
în câmpurile de stare și eroare indică o situație anormală)
||/ Nume Versiune Descriere arhitectură
+++-============-==============-==============-================================
un backupninja<нет>(descrierea nu este disponibilă)
un bază<нет>(descrierea nu este disponibilă)
un base-config<нет>(descrierea nu este disponibilă)
ii fișiere de bază 7.1 amd64 Diverse sisteme de bază Debian
ii base-passwd 3.5.26 amd64 Debian sistem de bază master passwo
[...]

Dpkg -c /var/cache/apt/archives/gnupg_1.4.12-7_amd64.deb

drwxr-xr-x root/root 0 2013-01-02 19:28 ./
drwxr-xr-x root/root 0 2013-01-02 19:28 ./usr/
drwxr-xr-x root/root 0 2013-01-02 19:28 ./usr/share/
drwxr-xr-x root/root 0 2013-01-02 19:28 ./usr/share/doc/
drwxr-xr-x root/root 0 2013-01-02 19:28 ./usr/share/doc/gnupg/
-rw-r--r-- root/root 3258 2012-01-20 10:51 ./usr/share/doc/gnupg/TODO
-rw-r--r-- root/root 308 2011-12-02 18:34 ./usr/share/doc/gnupg/FAQ
-rw-r--r-- root/root 3543 20-02-2012 18:41 ./usr/share/doc/gnupg/Upgrading_From_PGP.txt
-rw-r--r-- root/root 690 20-02-2012 18:41 ./usr/share/doc/gnupg/README.Debian
-rw-r--r-- root/root 1418 20-02-2012 18:41 ./usr/share/doc/gnupg/TODO.Debian
[...]

Dpkg -I /var/cache/apt/archives/gnupg_1.4.12-7_amd64.deb

nou pachet debian, versiunea 2.0.
dimensiune 1952176 octeți: lungimea arhivei de control 3312 octeți.
1449 octeți, 30 linii de control
4521 octeți, 65 de linii md5sums
479 octeți, 13 linii * postinst #!/bin/sh
473 octeți, 13 linii * preinst #!/bin/sh
Pachet: gnupg
Versiune: 1.4.12-7
Arhitectură: amd64
Menținător: Debian GnuPG-Matainers
Dimensiune instalată: 4627
Depinde: libbz2-1.0, libc6 (>= 2.4), libreadline6 (>= 6.0), libusb-0.1-4 (>= 2:0.1.12), zlib1g (>= 1:1.1.4), dpkg (>= 1.15.4) | info-instalare, gpgv
Recomanda: libldap-2.4-2 (>= 2.4.7), gnupg-curl
Sugerează: gnupg-doc, xloadimage | imaginemagick | eog, libpcsclite1
Sectiunea: utilitati
Prioritate: important
Multi-Arch: străin
Pagina principală: http://www.gnupg.org
Descriere: GNU Privacy Guard - un înlocuitor gratuit de PGP
GnuPG este instrumentul GNU pentru comunicare și stocare sigură a datelor.
Poate fi folosit pentru a cripta datele și pentru a crea semnături digitale.
Include o facilitate avansată de gestionare a cheilor și este conformă
cu standardul de internet OpenPGP propus, așa cum este descris în RFC 4880.
[...]

LETTING DEPTH: Comparație versiuni

Deoarece dpkg este un program Debian de gestionare a pachetelor, acesta conține, de asemenea, o implementare de referință a logicii de comparare a numărului de versiune. Prin urmare, are o opțiune --compare-versions care este utilizată de programe externe (în principal scripturi de configurare rulate de dpkg însuși). Această opțiune necesită trei parametri: un număr de versiune, un operator de comparație și un al doilea număr de versiune. Operatorii de comparație validi sunt lt (strict mai mic decât), le (mai mic sau egal cu), eq (egal cu), ne (nu este egal cu), ge (mai mare sau egal cu) și gt (strict mai mare decât). Dacă comparația este corectă, dpkg returnează 0 (succes); dacă nu, atunci o valoare diferită de zero (o eroare).

$ dpkg --compara-versiunile 1.2-3 gt 1.1-4
$echo$?
0
$ dpkg --compara-versiunile 1.2-3 lt 1.1-4
$echo$?
1
$ dpkg --compare-versions 2.6.0pre3-1 lt 2.6.0-1
$echo$?
1

Rețineți eșecul neașteptat al ultimei comparații: pentru dpkg, literele pre, care indică de obicei pre-lansare, nu au o semnificație specială, iar caracterele alfabetice sunt comparate în același mod ca și numerele (un< b < c ...), в алфавитном порядке. Именно поэтому dpkg считает, что «0pre3» больше, чем «0». При необходимости указать в номере версии, что она относится к предварительному выпуску, используется символ тильды «~»:

$ dpkg --compare-versions 2.6.0~pre3-1 lt 2.6.0-1
$echo$?
0

fișier jurnal dpkg

dpkg păstrează un jurnal al tuturor acțiunilor sale în /var/log/dpkg.log. Acest jurnal este extrem de detaliat, documentând fiecare pas în modul în care sunt procesate pachetele dpkg. Acest jurnal ajută nu numai la urmărirea comportamentului dpkg, ci și la menținerea unui istoric al modificărilor din sistem: poate fi găsit momentul exact în care fiecare pachet a fost instalat sau actualizat, iar aceste informații pot fi extrem de utile în determinarea motivelor modificarea comportamentului sistemului în ansamblu. În plus, informațiile despre toate versiunile sunt înregistrate și pot fi ușor verificate cu changelog.Debian.gz din pachetul corespunzător sau cu rapoartele de eroare online.

Suport multi-arhitectură

Toate pachetele Debian au un câmp Arhitectură în metadate. Acest câmp poate conține fie valoarea „all” (pentru pachetele care sunt independente de arhitectură), fie numele arhitecturii specifice pentru care este destinat pachetul (de exemplu, „amd64”, „armhf”, ...). În acest din urmă caz, dpkg va permite în mod implicit instalarea unui pachet numai dacă arhitectura acestuia se potrivește cu arhitectura sistemului returnată de dpkg --print-architecture.
Această restricție asigură că nu există fișiere binare compilate pentru arhitectura greșită pe sistem. Ar fi bine, dar (unele) computere pot rula binare pentru diferite arhitecturi, fie nativ (de exemplu, sistemele „amd64” rulează binare pentru „i386”), fie prin emulatori.

Activarea arhitecturii multiple

Suportul multi-arhitectură al dpkg vă permite să definiți „arhitecturi străine” care pot fi instalate pe un sistem dat. Acest lucru este ușor de făcut cu dpkg --add-architecture, așa cum se arată în exemplul de mai jos. Există, de asemenea, o comandă dpkg --remove-architecture corespunzătoare pentru a dezactiva suportul pentru o arhitectură străină, dar poate fi folosită numai dacă nu mai există pachete ale acelei arhitecturi pe sistem.

dpkg --print-architecture
amd64

dpkg: eroare la procesarea arhivei gcc-4.9-base_4.9.1-19_armhf.deb (--install):
Arhitectura pachetului (armhf) nu se potrivește cu sistemul (amd64)
Au fost întâlnite erori în timpul procesării:
gcc-4.9-base_4.9.1-19_armhf.deb

dpkg --add-architecture armhf
dpkg --add-architecture armel
dpkg --print-foreign-architectures
armhf
armel

Dpkg -i gcc-4.9-base_4.9.1-19_armhf.deb

Se selectează pachetul neselectat anterior gcc-4.9-base:armhf.
(Se citesc baza de date... 86425 fișiere și directoare instalate în prezent.)
Se pregătește despachetarea gcc-4.9-base_4.9.1-19_armhf.deb...
Se despachetează gcc-4.9-base:armhf (4.9.1-19)...
Se configurează gcc-4.9-base:armhf (4.9.1-19)...

Dpkg --remove-architecture armhf

dpkg: eroare: nu se poate elimina arhitectura „armhf” utilizată în prezent de baza de date

Dpkg --remove-architecture armel
dpkg --print-foreign-architectures
Suport multi-arhitectură în APT

APT va detecta automat dacă dpkg este configurat pentru a suporta arhitecturi străine și va începe descărcarea fișierelor pachete corespunzătoare în timpul procesului de actualizare.
Pachetele străine pot fi instalate folosind comanda apt install package:architecture.

Folosind binare proprietare i386 pe sisteme amd64

Există mai multe cazuri în care arhitectura multiplă poate fi utilă, dar cea mai comună este de a activa fișierele pe 32 de biți (i386) să ruleze pe sisteme pe 64 de biți (amd64), în special pentru că unele aplicații proprietare populare (cum ar fi Skype) sunt doar disponibil ca versiuni pe 32 de biți.

Schimbări legate de multi-arhitectură

Pentru a face suportul multi-arch cu adevărat util, bibliotecile trebuiau reambalate, mutându-le într-un director specific arhitecturii, astfel încât să poată fi instalate mai multe copii (pentru arhitecturi diferite) în același timp. Astfel de pachete actualizate conțin un antet „Multi-Arch: same”, indicând sistemului de management al pachetelor că diferite arhitecturi de pachete pot fi instalate împreună (și că aceste pachete pot satisface numai dependențele pachetelor cu aceeași arhitectură). Deoarece suportul multi-arch a fost adăugat doar la Debian Wheezy, nu toate bibliotecile au fost încă convertite.

Dpkg -s gcc-4.9-base

dpkg-query: eroare: --status necesită un nume valid de pachet, dar „gcc-4.9-base” nu este: nume ambiguu de pachet „gcc-4.9-base” cu mai mult de o instanță instalată

Utilizați opțiunea --help pentru a afișa ajutor pentru interogările pachetului.

Dpkg -s gcc-4.9-base:amd64 gcc-4.9-base:armhf | grep ^Multi

Multi-Arch: același
Multi-Arch: același

Dpkg -L libgcc1:amd64 |grep .so

/lib/x86_64-linux-gnu/libgcc_s.so.1

Dpkg -S /usr/share/doc/gcc-4.9-base/copyright

gcc-4.9-base:amd64, gcc-4.9-base:armhf: /usr/share/doc/gcc-4.9-base/copyright

Este de remarcat faptul că pachetele cu câmpul Multi-Arch: același ar trebui să fie denumite cu numele arhitecturii, astfel încât să poată fi identificate în mod unic. De asemenea, pot partaja fișiere cu alte instanțe ale aceluiași pachet; dpkg în acest caz se asigură că toate pachetele au fișiere partajate identice bit-cu-bit. Toate instanțele pachetului trebuie să fie aceeași versiune, așa că trebuie actualizate împreună.
Suportul multi-arch aduce și câteva caracteristici interesante mecanismului de gestionare a dependențelor. Rezolvarea dependenței necesită fie un pachet marcat „Multi-Arch: străin”, fie un pachet cu aceeași arhitectură (la rezolvarea dependenței, pachetele independente de arhitectură sunt considerate a fi de aceeași arhitectură ca sistemul). O dependență poate fi, de asemenea, relaxată pentru a permite unui pachet de orice arhitectură să o satisfacă folosind sintaxa package:any, dar pachetele străine pot satisface o astfel de dependență numai dacă sunt marcate cu „Multi-Arch: permis”.

Materiale folosite.

APT (Instrument avansat de ambalare) este o utilitate în Debian-cum ar fi sistemele care instalează, actualizează pachetele și urmăresc dependențele acestora. Scopul creării programului a fost automatizarea procesului de gestionare a pachetelor, în special actualizarea și menținerea dependențelor, care în cazul lucrului direct cu managerul dpkg aveau loc manual. Manipularea directă a pachetelor se realizează folosind programul apt-get, principalele comenzi de lucru cu care vor fi discutate mai jos.

Structura generală de comandă apt-get

apt-get [opțiuni] comandă pachet1 pachet2 ... pachetN

Opțiunile de mai jos pot fi utile atunci când lucrați cu apt-get:

Actualizarea listei de pachete disponibile pentru instalare

Această acțiune este efectuată folosind comanda:

Apt-get update

Actualizarea listei este deosebit de importantă dacă trebuie să instalați cea mai recentă și stabilă versiune a pachetului. La executarea acestei comenzi, programul scanează arhivele specificate în fișier /etc/apt/sources.list.

Instalarea pachetului

Pentru a instala un pachet, utilizați comanda:

Apt-get install packagename

Ca urmare, APT va căuta cea mai recentă versiune a pachetului specificat și va verifica dacă are dependențe. Dacă există dependențe, vor fi afișate o listă a acestora și o sugestie de instalare.

Root@vps:~# apt-get install aee Citirea listelor de pachete... Terminat Construirea arborelui de dependențe Citirea informațiilor despre starea... Terminat Următoarele pachete suplimentare vor fi instalate: libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 Următoarele pachete NOI vor fi instalate fi instalat: aee libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 0 actualizat, 6 nou instalat, 0 de eliminat și 44 neactualizat. Trebuie să obțineți 181 kB/1297 kB de arhive. După această operațiune, se vor folosi 4366 kB de spațiu suplimentar pe disc. Doriți să continuați?

Dacă nu există dependențe, procesul de instalare se va desfășura automat, fără a solicita întrebări.

De asemenea, la introducerea comenzii de instalare a pachetelor, puteți specifica numele pachetelor care trebuie eliminate. Pentru a face acest lucru, trebuie să adăugați o cratimă la sfârșitul numelui pachetului de eliminat. Un exemplu de această metodă de instalare/demontare este prezentat mai jos:

Root@vps:~# apt-get install aee htop- Citirea listelor de pachete... Terminat Construirea arborelui de dependențe Citirea informațiilor despre starea... Terminat Următoarele pachete suplimentare vor fi instalate: libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 Următoarele pachete vor fi ELIMITE: htop Următoarele pachete NOI vor fi instalate: aee libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 0 actualizate, 6 nou instalate, 1 de eliminat și 43 neactualizate. Trebuie să obțineți 1297 kB de arhive. După această operațiune, se vor folosi 4157 kB de spațiu suplimentar pe disc. Doriți să continuați?

După cum puteți vedea din exemplu, pachetul aee este pregătit pentru instalare, iar pachetul htop este pregătit pentru îndepărtare.

Reinstalarea unui pachet

Dacă este nevoie să reinstalați pachetul (fișier deteriorat, apare o versiune mai nouă), se poate face folosind următoarea comandă:

Apt-get --reinstall install packagename

Scoaterea unui pachet

Există două opțiuni pentru eliminarea pachetelor:

  • Eliminarea pachetului, cu excepția fișierelor de configurare (dacă există).

De obicei, această opțiune poate fi necesară dacă intenționați să reinstalați acest pachet în viitor. Această metodă de eliminare este efectuată cu comanda:

Apt-get remove packagename

De asemenea, este de remarcat faptul că, dacă pachetul care este eliminat are dependențe, acesta va fi eliminat împreună cu acestea.

  • Îndepărtarea completă a pachetului

Spre deosebire de prima metodă, toate fișierele care au legătură cu pachetul care este șters, inclusiv fișierele de configurare, vor fi șterse. În acest caz, se utilizează comanda:

Apt-get --purge remove packagename

Pachetele care sunt marcate pentru eliminarea completă au un „*” la sfârșitul numelui lor.

  • Dezinstalează și instalează într-o singură comandă

În plus, la dezinstalare, puteți selecta o listă de pachete de instalat. Pentru a face acest lucru, trebuie să specificați „ + ” la sfârșitul numelui pachetului. Un exemplu de astfel de comandă este dat mai jos:

Root@vps:~# apt-get --purge remove aee screen+ Citirea listelor de pachete... Terminat Construirea arborelui de dependențe Citirea informațiilor despre starea... Terminat Următoarele pachete vor fi ȘTERSE: aee* Următoarele pachete NOI vor fi instalate: screen 0 actualizat, 1 nou instalat, 1 de eliminat și 43 neactualizat. Trebuie să obțineți 624 kB de arhive. După această operațiune, se vor folosi 975 kB de spațiu suplimentar pe disc. Doriți să continuați?

Actualizarea pachetelor

Apt-get update

Acest lucru vă va permite să actualizați informații despre pachetele disponibile și versiunile acestora. După executarea acestei comenzi, puteți trece direct la actualizarea pachetelor instalate pe sistem. Acest lucru se face cu comanda:

Upgrade Apt-get -u

Parametru specificat -u folosit pentru a obține o listă completă de pachete care vor fi pregătite pentru actualizare.

Actualizarea versiunii de distribuție

Dacă apare o nouă versiune a sistemului de operare instalat, puteți „actualiza” întregul sistem folosind comanda.

Acțiune