Cos’è e come funziona

Ti sei mai chiesto come Linux gestisce i pacchetti: scaricandoli, installandoli e rimuovendoli? Bene, tutto rientra nella gestione dei pacchetti Linux.

Poiché Linux è open source, puoi trovare molti gestori di pacchetti. E oggi abbiamo la possibilità di conoscere in dettaglio i gestori di pacchetti Linux.

Nel corso dell’argomento impareremo i concetti fondamentali relativi alla gestione dei pacchetti Linux, inclusa la definizione di gestore pacchetti Linux, i suoi concetti fondamentali e come funziona.

Iniziamo.

Cos’è il Gestore pacchetti Linux?

Un gestore di pacchetti in Linux è un insieme di software o strumenti che consente all’utente di gestire i pacchetti in modo efficace. L’utente può installare, aggiornare, rimuovere e configurare i pacchetti utilizzando il gestore pacchetti supportato nel sistema operativo Linux.

Dal punto di vista funzionale, un gestore di pacchetti si occupa dei pacchetti, di un file di archivio contenente programmi per computer e di altri file essenziali per il funzionamento, come i metadati dei pacchetti. I metadati dei pacchetti offrono informazioni sui pacchetti, inclusa la descrizione, la versione e le dipendenze.

Sembra confuso? Chiariamolo apprendendo i concetti fondamentali del gestore pacchetti associato di seguito.

Apprendimento dei concetti fondamentali di gestione dei pacchetti

Questa sezione esaminerà i concetti fondamentali della gestione dei pacchetti, inclusi pacchetti, dipendenze e repository.

#1. Pacchetti

Un pacchetto è il nucleo del sistema operativo Linux. Tecnicamente, è un file di archivio contenente un file binario eseguibile, un file di configurazione correlato e informazioni sulle dipendenze necessarie per eseguirlo correttamente.

Per semplificarlo, puoi pensare a un pacchetto come a un software o a un’applicazione che può essere eseguita sul sistema operativo Linux. Il pacchetto può essere orientato alla riga di comando o un’applicazione GUI. Un pacchetto può anche fungere da dipendenza per l’esecuzione di altri programmi software.

Un’altra cosa importante dei pacchetti è che sono precompilati, il che significa che il gestore dei pacchetti non deve compilare il codice sorgente. Se guardiamo al passato, vedrai che il software deve essere compilato manualmente.

  • L’utente deve prima accedere al file README, trovare tutte le dipendenze, scaricarle e installarle manualmente.
  • Generalmente, viene incluso un makefile o uno script per facilitare l’intero processo. Questo era noioso e anche soggetto a errori.

Per facilitare il processo di gestione di software o servizi, Linux ha introdotto il suo sistema di gestione dei pacchetti.

#2. Dipendenze

Il sistema operativo Linux è complesso. È costituito da più software che dipendono l’uno dall’altro. Affinché qualsiasi software funzioni, richiederebbe qualche altro software o pacchetto.

Proviamo a capirlo dal punto di vista dello sviluppo. Se raccogli un progetto open source, vedrai che utilizza librerie open source. Dopotutto, non è saggio sviluppare tutto da zero: reinventare la ruota non è necessario.

Pertanto, ogni volta che installi un pacchetto, avrà le sue dipendenze elencate. Il gestore pacchetti cerca l’elenco delle dipendenze e installa tutti i pacchetti o quelli mancanti.

#3. Repository

I repository o repository sono luoghi virtuali online che elencano tutti i pacchetti. Questi repository sono accessibili tramite Internet e aiutano l’utente Linux ad accedere ai pacchetti richiesti durante l’installazione del software.

Vantaggi dell’utilizzo di un sistema di gestione dei pacchetti

I vantaggi derivanti dall’utilizzo di un sistema di gestione dei pacchetti sono molteplici. Questi includono:

  • Ti consente di installare facilmente nuovi pacchetti.
  • Con un sistema di gestione dei pacchetti è possibile rimuovere adeguatamente le vecchie applicazioni.
  • Eseguire una reinstallazione chiara dei pacchetti. La reinstallazione dei pacchetti è una pratica comune tra gli sviluppatori perché garantisce che le configurazioni o i file danneggiati vengano corretti automaticamente senza la necessità di eseguire il debug manuale. Con un adeguato sistema di gestione dei pacchetti, l’amministratore può reinstallare con sicurezza il software poiché il sistema di gestione gestisce tutto.
  • Mantieni facilmente aggiornati i pacchetti già installati senza alcun intervento manuale. Puoi impostare l’aggiornamento in modo che venga eseguito automaticamente ogni giorno, assicurando che il tuo sistema sia protetto contro vulnerabilità ed esposizioni comuni (CVE) o nuovi exploit.

Successivamente, discuteremo come funziona il gestore pacchetti.

Come funziona il Gestore pacchetti?

Un gestore di pacchetti è al centro del sistema operativo Linux. Tuttavia, è disponibile anche su Linux.

I gestori di pacchetti sono ovunque, inclusi gli editor visivi come Atom e Visual Studio Code, che ne hanno uno proprio. Altri gestori di pacchetti popolari includono PIP, un gestore di pacchetti Python; npm: un gestore di pacchetti JavaScript; e così via.

Leggi anche: Cos’è Chocolatey e come installarlo

Affinché un gestore di pacchetti funzioni, è necessario accedere a un repository funzionante. Questo repository software elenca i pacchetti. Ogni pacchetto contiene informazioni sui metadati, che ne facilitano la gestione da parte del gestore dei pacchetti.

Pertanto, la prossima volta che utilizzerai il gestore pacchetti per cercare un pacchetto, utilizzerà i metadati del repository per ottenere informazioni sul pacchetto, come nome, descrizione e versione.

Nell’interazione iniziale, il gestore pacchetti del sistema crea una cache di metadati locale, che viene successivamente utilizzata quando si eseguono azioni come “aggiornamento”. — eseguendo comandi come apt update.

Allo stesso modo, se desideri installare un pacchetto, cercherà informazioni nella cache dei metadati locali ed eseguirà il comando basato su di esso.

Ad esempio, se trova il pacchetto che stai cercando, proverà a installarlo collegandosi al repository e scaricandolo nel sistema.

Successivamente, cercherà le dipendenze necessarie per l’installazione del pacchetto. Se il pacchetto ha delle dipendenze, le installerà automaticamente senza l’intervento dell’utente.

In questo modo, il gestore pacchetti può eseguire altre azioni, inclusa la reinstallazione dei pacchetti, la loro rimozione e aggiornamento. La parte migliore di tutto ciò è che tutto è configurabile. Ad esempio, puoi configurare pacchetti mission-critical per il tuo progetto da aggiornare quando lo fai tu stesso.

In breve, possiamo riassumere le funzioni dei gestori di pacchetti come di seguito:

  • Assicurati che i pacchetti siano autentici. Inoltre, assicurati che l’integrità del pacchetto venga mantenuta eseguendo il checksum corretto e l’autenticazione del certificato digitale.
  • Automatizza la combinazione dei pacchetti per facilità d’uso.
  • Assicurati di installare eventuali dipendenze per evitare “l’inferno delle dipendenze”.
  • Gestisci i pacchetti, inclusi download, ricerca e installazione di software nuovo o esistente.

Linux offre accesso a molti buoni gestori di pacchetti, tra cui APT, YUM, DNF, Pacman, Zypeer e Portage. Esaminiamoli di seguito.

#1. Strumento pacchetto avanzato (APT)

APT è uno dei gestori di pacchetti Linux più popolari, poiché viene fornito con Ubuntu e altre distribuzioni basate su Debian.

Utilizza uno strumento di gestione dei pacchetti dkpg e un formato di file del pacchetto .deb. Si basa su dkpg e funge da front-end per il gestore di pacchetti dkpg. Con APT puoi installare, cercare, rimuovere e gestire pacchetti .deb.

Alcuni dei comandi APT includono apt, apt-cache e apt-get.

Vediamone alcuni in azione di seguito.

#install package

$ sudo apt install package_name
#remove package

$ sudo apt remove package_name
#completely purge the package

$ sudo apt purge package_name
# Remove leftover dependencies

$ sudo apt autoremove
#upgrade

$ sudo apt upgrade
# upgrade a single package

$ sudo apt upgrade package_name

#2. DPKG

DPKG sta per sistema di gestione dei pacchetti basato su Debain. Il gestore pacchetti utilizza l’estensione .deb. A differenza di APT, non può installare automaticamente i pacchetti e le relative dipendenze.

Per installare un pacchetto con dpkg, dovrai utilizzare il seguente comando.

$ dkpg -i package_name.deb

Allo stesso modo, puoi rimuovere un pacchetto eseguendo il comando seguente.

$ dkpg -r package_name

#3. YUM

YUM sta per “Yellow Dog Updater, modificato”. YUM ha un formato di file del pacchetto .rpm ed è disponibile in distribuzioni come Red Hat Enterprise Linux, CentOS e Fedora 21.

Come APT, YUM è un gestore di pacchetti di alto livello ma utilizza RPM (RPM Package Manager) come strumento di gestione dei pacchetti sottostante. Offre un’interfaccia facile da usare.

Per installare un pacchetto in YUM, dovrai eseguire:

$ yum install package_name

Allo stesso modo, puoi rimuovere il pacchetto eseguendo.

$ yum remove package_name

Per aggiornare un pacchetto, esegui:

$ yum update package_name

YUM è in grado di risolvere qualsiasi dipendenza e recuperare eventuali aggiornamenti durante l’installazione.

#4. DNF

DNF sta per Dandified YUM. È un successore di YUM e lo sostituisce nella maggior parte dei casi. Come YUM, DNF utilizza il pacchetto RPM come gestione dei pacchetti sottostante. Tuttavia, offre miglioramenti in termini di documentazione migliore, risoluzione più rapida delle dipendenze, prestazioni migliorate e così via.

#5. giri al minuto

Il Red Hat Package Manager (RPM) viene utilizzato nei sistemi operativi Linux basati su Red Hat. Ad esempio, puoi trovare RPM in CentOS e Fedora. RPM utilizza l’estensione .rpm.

Per eseguire l’installazione utilizzando RPM, dovrai eseguire:

$ rpm -i package_name_rpm

Per rimuovere un pacchetto, esegui:

$ rpm -e package_name.rpm

E, per aggiornare un pacchetto, esegui:

$ rpm -e package_name

#6. Pacman

Pacman è il gestore di pacchetti per i sistemi operativi Linux basati su Arch, come Arch e Manjaro. Utilizza il formato file .tar.xz.

Qui, i pacchetti vengono archiviati e distribuiti in tarball compressi. Ciò rende i pacchetti piccoli e, quindi, facili da distribuire e installare. Pacman si affida ad Arch Build System (ABS) per installare i pacchetti.

In Pacman, puoi installarlo con il seguente comando:

$ pacman -S package_name

Allo stesso modo, puoi aggiornare tutti i pacchetti nel sistema usando il seguente comando.

$ pacman -Syu

Quindi, per rimuovere un pacchetto in Pacman, utilizzare il seguente comando:

$ pacman -Rs package_name

#7. Zypper

Zypper è il gestore di pacchetti per openSUSE. È uno strumento CLI che gestisce i pacchetti nella distribuzione Linux openSUSE.

Utilizza un formato file di pacchetto .rpm, simile a YUM e DNF. Tuttavia, qui farai affidamento sull’interfaccia Zypper, che utilizza la libreria ZYpp libzypp. Ciò rende Zypper più veloce rispetto ad altri gestori di pacchetti.

#8. Portaggio

Portage è il gestore di pacchetti per la distribuzione Gentoo. Il formato del file del pacchetto in Portage è .tbz2 — un archivio tar compresso o uno script di shell e-build.

Portage funziona in modo diverso rispetto ad altri gestori di pacchetti nel nostro elenco. Qui Portage utilizza pacchetti binari precompilati. I pacchetti vengono distribuiti tramite e-build, un tipico script di shell. Qui ottieni anche lo strumento Emerge CLI, che gestisce tutti gli script di shell per installare, aggiornare o rimuovere pacchetti.

Quale gestore di pacchetti Linux dovresti scegliere?

La maggior parte dei gestori di pacchetti sono autosufficienti. Nella maggior parte dei casi, sei bloccato con la distribuzione Linux che stai utilizzando. Se stai iniziando, molto probabilmente dovrai usare APT.

Gli utenti avanzati potrebbero voler utilizzare altri gestori di pacchetti. Tuttavia, l’obiettivo finale è sempre quello di avere una migliore gestione del software. Quindi, puoi scegliere qualsiasi gestore di pacchetti desideri, a seconda delle tue esigenze.

Suggerimenti per una gestione efficiente del software utilizzando i gestori di pacchetti

In qualità di sviluppatore, devi utilizzare i gestori di pacchetti per una gestione efficiente del software. Ciò andrà a vantaggio del processo di sviluppo del software, migliorando la produttività e il flusso di lavoro.

Il vantaggio più significativo è che non devi preoccuparti dell ‘”inferno delle dipendenze”, una situazione in cui il software non ha accesso ai pacchetti necessari per essere eseguito.

Le migliori pratiche per utilizzare la gestione dei pacchetti includono:

  • Crea e gestisci un file di configurazione appropriato che elenca tutti i pacchetti richiesti. Accanto ai pacchetti, menziona la versione del pacchetto per garantire che non si verifichino conflitti durante l’implementazione. Conservare semplicemente un file di configurazione può salvarti da ambienti incoerenti.
  • Utilizza i gestori di pacchetti per mantenere i tuoi pacchetti aggiornati alla versione più recente. Ciò ti garantirà di non soffrire di exploit zero-day, poiché l’ultima versione contiene patch di sicurezza. Avrai anche accesso a nuove funzionalità e correzioni di bug. Tuttavia, prima di aggiornare i pacchetti, esegui un ambiente di test per vedere se i nuovi pacchetti presentano problemi. Il modo migliore per affrontare questo problema è automatizzare il processo.
  • Crea ambienti virtuali per migliorare ulteriormente la gestione dei pacchetti e le loro dipendenze.
  • Rimuovere i pacchetti per migliorare le dipendenze. La dipendenza snella del pacchetto migliorerà la sicurezza e semplificherà il tuo progetto.
  • Creare una documentazione adeguata sulle dipendenze. In questo modo, risparmierai ore di fatica durante la gestione dei pacchi. Menziona sempre la versione e rendila il più dettagliata possibile. Ciò aiuterà i nuovi sviluppatori a salire a bordo e migliorerà anche la manutenzione.

Successivamente, discuteremo come utilizzare un gestore di pacchetti.

Come utilizzare un gestore di pacchetti?

In questa sezione esamineremo esempi di come utilizzare un gestore di pacchetti. Utilizzeremo l’Advance Package Tool (APT) per semplificare le cose. Probabilmente utilizzerai APT anche come primo gestore di pacchetti.

Installazione di pacchetti

Per installare un pacchetto, dovrai utilizzare il seguente comando.

$ sudo apt installa nome-pacchetto

Installiamo gimp utilizzando il comando.

$ sudo apt installa gimp

Ricerca di pacchetti

Se non sei sicuro della disponibilità del pacchetto, puoi cercarlo nel repository online.

Ad esempio, se stai cercando un software di editing video, dovrai cercarlo come di seguito.

$ sudo apt search “video image”
#output

Sorting... Done

Full Text Search... Done

libgavl-dev/jammy 2.0.0~svn6298-1 amd64

  low level audio and video library - development files

libgavl-doc/jammy 2.0.0~svn6298-1 all

  low level audio and video library - documentation files

libgavl-ocaml/jammy 0.1.6-1build3 amd64

  OCaml interface to the gavl library

libgavl-ocaml-dev/jammy 0.1.6-1build3 amd64

  OCaml interface to the gavl library

libgavl2/jammy 2.0.0~svn6298-1 amd64

  low level audio and video library - runtime files

The syntax for it as below.

$ sudo apt search “search-term‘

Finding Package Dependencies

You can also use package manager to find dependencies for a package that you wantto install. To list the package dependencies, simply run the following command.

$ sudo apt depends package-name

Let’s see what packages does gimp software depends upon.

$ sudo apt depends gimp

#output

gimp

  Depends: libgimp2.0 (>= 2.10.30)

  Depends: libgimp2.0 (<= 2.10.30-z)

  Depends: gimp-data (>= 2.10.30)

  Depends: gimp-data (<= 2.10.30-z)

  Depends: graphviz

  Depends: xdg-utils

  Depends: libaa1 (>= 1.4p5)

  Depends: libbabl-0.1-0 (>= 1:0.1.78)

  Depends: libbz2-1.0

  Depends: libc6 (>= 2.34)

  Depends: libcairo2 (>= 1.12.2)

  Depends: libfontconfig1 (>= 2.12.6)

  Depends: libfreetype6 (>= 2.2.1)

  Depends: libgcc-s1 (>= 3.3.1)

  Depends: libgdk-pixbuf-2.0-0 (>= 2.30.8)

  Depends: libgegl-0.4-0 (>= 1:0.4.34)

  Depends: libgexiv2-2 (>= 0.10.6)

  Depends: libglib2.0-0 (>= 2.56.2)

  Depends: libgs9 (>= 9.10~dfsg)

  Depends: libgtk2.0-0 (>= 2.24.10)

  Depends: libgudev-1.0-0 (>= 167)

  Depends: libharfbuzz0b (>= 0.6.0)

  Depends: libheif1 (>= 1.8.0)

  Depends: libilmbase25 (>= 2.5.7)

  Depends: libjpeg8 (>= 8c)

  Depends: libjson-glib-1.0-0 (>= 1.5.2)

  Depends: liblcms2-2 (>= 2.9)

  Depends: liblzma5 (>= 5.1.1alpha+20120614)

  Depends: libmng2 (>= 2.0.2)

  Depends: libmypaint-1.5-1 (>= 1.5.0)

  Depends: libopenexr25 (>= 2.5.7)

  Depends: libopenjp2-7 (>= 2.0.0)

  Depends: libpango-1.0-0 (>= 1.29.4)

  Depends: libpangocairo-1.0-0 (>= 1.29.4)

  Depends: libpangoft2-1.0-0 (>= 1.29.4)

  Depends: libpng16-16 (>= 1.6.2-1)

  Depends: libpoppler-glib8 (>= 0.44.0)

  Depends: librsvg2-2 (>= 2.32.0)

  Depends: libstdc++6 (>= 5.2)

  Depends: libtiff5 (>= 4.0.3)

  Depends: libwebp7

  Depends: libwebpdemux2

  Depends: libwebpmux3

  Depends: libwmf0.2-7 (>= 0.2.8.4)

  Depends: libx11-6

  Depends: libxcursor1 (>> 1.1.2)

  Depends: libxext6

  Depends: libxfixes3

  Depends: libxmu6

  Depends: libxpm4

  Depends: zlib1g (>= 1:1.1.4)

  Breaks: gimp-plugin-registry (<< 7.20140602+nmu1~)

  Recommends: ghostscript

 |Suggests: gimp-help-en

  Suggests: <gimp-help>

    gimp-help-ca

    gimp-help-de

    gimp-help-el

    gimp-help-en

    gimp-help-es

    gimp-help-fr

    gimp-help-it

    gimp-help-ja

    gimp-help-ko

    gimp-help-nl

    gimp-help-nn

    gimp-help-pt

    gimp-help-ru

    gimp-help-sl

    gimp-help-sv

  Suggests: gimp-data-extras

  Suggests: gvfs-backends

  Suggests: libasound2

    liboss4-salsa-asound2

  Replaces: gimp-plugin-registry (<< 7.20140602+nmu1~)

Rimozione dei pacchetti

Puoi anche rimuovere i pacchetti se lo desideri. Per rimuovere un pacchetto, dovrai utilizzare il seguente comando.

$ sudo apt rimuove il nome del pacchetto

Quindi, se vuoi rimuovere il pacchetto gimp, dovrai eseguire il seguente comando.

$ sudo apt rimuove gimp

Tuttavia, ciò non rimuove alcuna dipendenza o configurazione del pacchetto. Per rimuoverlo completamente, dovrai utilizzare l’opzione –purge.

$ sudo apt rimuovi nome-pacchetto –purge

$ sudo apt rimuovi gimp –purge

Aggiornamento dei pacchetti di sistema

Per aggiornare i pacchetti di sistema, è possibile eseguire il comando seguente.

$ sudo apt update && sudo apt upgrade -y

Parole finali

I gestori di pacchetti sono al centro di qualsiasi distribuzione Linux. È una parte fondamentale e determina il modo in cui gestisci i pacchetti su Linux. Con un gestore di pacchetti, non devi preoccuparti delle dipendenze o cercare manualmente i pacchetti da installare.

I gestori di pacchetti come APT offrono facilità d’uso e gestiscono la maggior parte del lavoro pesante, consentendoti di concentrarti su ciò che è essenziale, ovvero un migliore sviluppo del software e un flusso di lavoro migliorato.

Successivamente, scopri come installare Docker su Ubuntu, CentOS, Debian e Windows.