23 exemple de comenzi PKG utile pentru gestionarea pachetelor în FreeBSD


În acest tutorial, vom explica cum să gestionați aplicațiile de pachete binare precompilate în FreeBSD cu ajutorul instrumentului de gestionare a pachetelor numit PKG prin Porturi > depozitul de colecție de software.

Depozitul Ports oferă instrumentele necesare pentru compilarea aplicațiilor din codul sursă, alături de dependențele acestora, dar menține și o colecție imensă de pachete precompilate, în prezent peste 24.000 pachete, care poate fi instalat pe un sistem FreeBSD cu comanda pkg.

Cerințe:

  1. Instalare FreeBSD 11.x

Căutați și găsiți aplicații în arborele porturi din FreeBSD

1. Depozitele de porturi sunt împărțite în categorii în FreeBSD, fiecare categorie fiind reprezentată de un director în calea sistemului de fișiere /usr/ports/.

O listă simplă a directorului /usr/ports/ va afișa toate categoriile disponibile, așa cum se arată în captura de ecran de mai jos.

ls /usr/ports/

2. Pentru a vedea toate aplicațiile disponibile aparținând unei categorii, lansați o comandă ls în directorul categoriei.

Să presupunem că doriți să afișați toate pachetele software disponibile pe care categoria bazei de date le are de oferit, executați comanda de mai jos în consolă. Transmiteți rezultatul prin comandă mai puțin pentru a naviga mai ușor prin ieșire.

ls /usr/ports/databases/ | less

3. Pentru a vedea câte pachete sunt disponibile într-o categorie, enumerați directorul categoriei și transmiteți rezultatul prin comanda wc, așa cum se arată în exemplul de mai jos.

ls /usr/ports/databases/ | wc -l

După cum puteți vedea în captura de ecran de mai sus, categoria bazei de date FreeBSD deține mai mult de 1000 pachete de bază de date pre-complicate.

4. Pentru a vedea dacă o anumită aplicație este disponibilă într-o categorie, utilizați din nou comanda ls și filtrați rezultatul prin utilitarul grep pentru a căuta o aplicație personalizată.

În exemplele de mai jos, se vor căuta pachete disponibile în baza de date mongodb și pachete de securitate antivirus clam.

ls /usr/ports/databases/ | grep mongodb
ls /usr/ports/security/ | grep clam

După cum puteți vedea, mai multe versiuni ale unei aplicații pot fi disponibile în FreeBSD Ports.

5. În cazul în care nu știți căreia îi aparține un software, puteți utiliza o altă abordare pentru a găsi categoria de software. Utilizați caracterul joker * pentru a căuta un model prin întregul arbore de directoare Ports.

Presupunând că doriți să vedeți în ce categorie puteți găsi pachetele software pentru utilitarul mailx, puteți rula următoarea comandă.

ls /usr/ports/*/*mailx

6. O altă metodă de căutare a unui pachet software și a categoriei căreia îi aparține pachetul este utilizarea comenzii locate pe un model de șir.

Înainte de a efectua șirul de căutare, ar trebui să actualizați baza de date locate cu următoarea comandă.

/usr/libexec/locate.updatedb

7. După ce ați actualizat baza de date de localizare, căutați un anumit pachet software utilizând un model de cuvinte cheie din numele pachetului. De exemplu, dacă doriți să căutați utilitarul mailx, puteți rula comanda de mai jos.

locate mailx

După cum puteți vedea, există două pachete disponibile pentru utilitarul mailx, ambele situate în categoria /usr/ports/mail/.

8. Similar cu găsirea unui pachet cu comanda locate, puteți folosi și comanda whereis pentru a vizualiza categoria aplicației.

whereis mailx

Căutați software prin comanda PKG în FreeBSD

9. Cea mai ușoară metodă de a căuta și de a găsi o aplicație în FreeBSD este prin linia de comandă de gestionare a pachetelor PKG. Pentru a căuta în pachetele binare o aplicație, de exemplu software-ul postfix, lansați comanda de mai jos.

pkg search package_name

10. În cazul în care doriți să vedeți cărei categorii îi aparține pachetul, rulați aceeași comandă ca mai sus cu marcatorul -o, așa cum este ilustrat în exemplele de mai jos.

pkg search -o package_name

Gestionați software-ul în FreeBSD

11. Pentru a instala un pachet precompilat din depozitele Ports din FreeBSD, lansați comanda pkg așa cum este ilustrat în exemplul de mai jos.

pkg install package_name

12. Pentru a interoga informații despre un anumit pachet instalat în sistem, lansați comanda de mai jos.

pkg info package_name

13. Comutatorul de comandă pkg info va afișa mesajul „Niciun pachet(e) care corespunde numelui_pachet ” dacă pachetul software nu este deja instalat în sistemul dvs., așa cum se arată în captura de ecran de mai jos.

pkg info tcpdump

14. Pentru a lista toate pachetele software instalate în FreeBSD, executați comanda pkg info fără opțiuni sau comutatoare.

Filtrul grep împotriva comenzii pkg info vă poate arăta dacă anumite pachete sau aplicații sunt deja prezente în sistem, așa cum este ilustrat în exemplul de mai jos.

pkg info | grep ftp

15. Pentru a elimina un pachet din sistem, lansați comenzile de mai jos.

pkg remove package_name
or
pkg delete package_name

16. În cazul în care doriți să împiedicați eliminarea sau modificarea unui pachet instalat, puteți utiliza comutatorul lock pentru comanda pkg, așa cum se arată în imaginea de mai jos.

pkg lock package_name

Comutatorul de comandă Deblocați pkg vă va permite să eliminați restricția de pachet și să modificați sau să dezinstalați pachetul.

pkg unlock package_name

17. Pentru a afla cărui pachet instalat îi aparține o comandă sau un fișier executabil, lansați următoarea comandă, așa cum este ilustrat în exemplele de capturi de ecran de mai jos.

pkg which /path/to/executable

18. Pentru a descărca local un pachet din depozitul Ports, fără a instala pachetul pe sistem, rulați comanda pkg cu comutator de preluare.

Pachetul binar descărcat, care este un fișier .txz comprimat, poate fi găsit în calea de sistem /var/cache/pkg/.

pkg fetch package_name
ls /var/cache/pkg/ | grep package_name

19. Pentru a verifica dacă pachetele instalate sunt expuse la vulnerabilități comune sau erori, lansați comanda de mai jos.

pkg audit -F

Pentru a vedea o listă de vulnerabilități vechi care afectează un pachet software în versiunile anterioare, lansați comanda de mai jos.

pkg audit package_name

Mai jos este un extras din toate vulnerabilitățile cunoscute care au fost găsite pe serverul web Nginx compilat pentru FreeBSD.

pkg audit nginx
nginx is vulnerable:
Affected versions:
<= 0.8.41 : > 1.4.4,1
nginx -- Request line parsing vulnerability
CVE: CVE-2013-4547
WWW: https://vuxml.FreeBSD.org/freebsd/94b6264a-5140-11e3-8b22-f0def16c5c1b.html

nginx is vulnerable:
Affected versions:
< 1.0.15
nginx -- Buffer overflow in the ngx_http_mp4_module
CVE: CVE-2012-2089
WWW: https://vuxml.FreeBSD.org/freebsd/0c14dfa7-879e-11e1-a2a0-00500802d8f7.html

nginx is vulnerable:
Affected versions:
< 1.4.7
nginx -- SPDY heap buffer overflow
CVE: CVE-2014-0133
WWW: https://vuxml.FreeBSD.org/freebsd/fc28df92-b233-11e3-99ca-f0def16c5c1b.html
...

Mențineți utilitarul de gestionare a pachetelor în FreeBSD

20. Pentru a vă asigura că depozitele de software și toate pachetele dvs. instalate sunt actualizate cu cele mai recente versiuni sau corecții de securitate, lansați următoarele comenzi.

pkg update
pkg upgrade

21. Pentru a afișa depozitele de la distanță și statisticile pachetelor locale, cum ar fi câte pachete sunt instalate în sistemul dvs. și cât spațiu pe disc este ocupat de software-ul instalat, executați următoarea comandă.

pkg stats

22. Pentru a șterge toate dependențele lăsate în urmă de pachetele instalate în sistem, lansați comanda de mai jos.

pkg autoremove

23. Pentru a șterge automat directorul cache local de gestionare a pachetelor pentru pachetele descărcate de la distanță, rulați comanda de mai jos. Mai întâi ar trebui să verificați lista pachetelor binare descărcate local.

pkg clean -a -n  
pkg clean -a -y

Asta e tot! După cum puteți vedea, FreeBSD are un sistem impresionant de colectare a pachetelor, similar instrumentelor de gestionare a pachetelor utilizate în distribuțiile Linux, cum ar fi Yum, RPM și APT, cu un număr mare de fișiere binare software pre-compilate și un sistem simplu și linie de comandă eficientă, pkg, care poate fi folosită pentru a gestiona software-ul într-un mod decent.