Package manager

Illustrazione di un package manager usato per scaricare nuovo software. Le azioni manuali possono includere l’accettazione di un accordo di licenza o la selezione di alcune opzioni di configurazione specifiche del pacchetto.

Un pacchetto software è un file di archivio che contiene un programma per computer e i metadati necessari per la sua distribuzione. Il programma per computer può essere in codice sorgente che deve essere prima compilato e costruito. I metadati del pacchetto includono la descrizione del pacchetto, la versione del pacchetto e le dipendenze (altri pacchetti che devono essere installati prima).

I gestori di pacchetti hanno il compito di trovare, installare, mantenere o disinstallare pacchetti software su comando dell’utente. Le funzioni tipiche di un sistema di gestione dei pacchetti includono:

  • Lavorare con gli archivi di file per estrarre gli archivi dei pacchetti
  • Assicurare l’integrità e l’autenticità del pacchetto verificando rispettivamente le checksum e i certificati digitali
  • Ricercare, scaricare, installare, o aggiornare il software esistente da un repository di software o app store
  • Raggruppare i pacchetti per funzione per ridurre la confusione degli utenti
  • Gestire le dipendenze per assicurare che un pacchetto sia installato con tutti i pacchetti che richiede, evitando così “l’inferno delle dipendenze”

Sfide con le librerie condiviseModifica

I sistemi informatici che si basano sul collegamento dinamico delle librerie, invece di quello statico, condividono librerie eseguibili di istruzioni macchina tra pacchetti e applicazioni. In questi sistemi, le complesse relazioni tra diversi pacchetti che richiedono diverse versioni di librerie danno luogo a una sfida colloquialmente nota come “dependency hell”. Sui sistemi Microsoft Windows, questo è anche chiamato “DLL hell” quando si lavora con librerie collegate dinamicamente. Una buona gestione dei pacchetti è vitale su questi sistemi. Il sistema Framework di OPENSTEP è stato un tentativo di risolvere questo problema, consentendo l’installazione simultanea di più versioni di librerie e permettendo ai pacchetti software di specificare con quale versione erano collegati.

Front-end per pacchetti compilati localmenteModifica

Gli amministratori di sistema possono installare e mantenere software usando strumenti diversi dal software di gestione dei pacchetti. Per esempio, un amministratore locale può scaricare codice sorgente non compilato, compilarlo e installarlo. Questo può far sì che lo stato del sistema locale non sia più sincronizzato con lo stato del database del gestore dei pacchetti. L’amministratore locale dovrà prendere ulteriori misure, come la gestione manuale di alcune dipendenze o l’integrazione delle modifiche nel gestore dei pacchetti.

Sono disponibili strumenti per assicurare che i pacchetti compilati localmente siano integrati con il gestore dei pacchetti. Per le distribuzioni basate su file .deb e .rpm così come per Slackware Linux, c’è CheckInstall, e per i sistemi basati su ricette come Gentoo Linux e sistemi ibridi come Arch Linux, è possibile scrivere prima una ricetta, che poi assicura che il pacchetto si inserisca nel database dei pacchetti locali.

Manutenzione della configurazioneEdit

Particolarmente fastidiosi con gli aggiornamenti del software sono gli aggiornamenti dei file di configurazione. Poiché i gestori di pacchetti, almeno sui sistemi Unix, sono nati come estensioni delle utilità di archiviazione dei file, di solito possono solo sovrascrivere o conservare i file di configurazione, piuttosto che applicare regole ad essi. Ci sono eccezioni a questo ?che di solito si applicano alla configurazione del kernel (che, se rotto, renderà il computer inutilizzabile dopo un riavvio). I problemi possono essere causati se il formato dei file di configurazione cambia; per esempio, se il vecchio file di configurazione non disabilita esplicitamente le nuove opzioni che dovrebbero essere disabilitate. Alcuni gestori di pacchetti, come dpkg di Debian, permettono la configurazione durante l’installazione. In altre situazioni, è desiderabile installare i pacchetti con la configurazione predefinita e poi sovrascrivere questa configurazione, per esempio, nelle installazioni senza testa su un gran numero di computer. Questo tipo di installazione preconfigurata è supportata anche da dpkg.

RepositoriesEdit

Per dare agli utenti un maggiore controllo sul tipo di software che permettono di installare sul loro sistema (e talvolta per ragioni legali o di convenienza da parte dei distributori), il software viene spesso scaricato da un certo numero di repository.

Soppressione dell’aggiornamentoModifica

Quando un utente interagisce con il software di gestione dei pacchetti per effettuare un aggiornamento, è consuetudine presentare all’utente la lista delle azioni da eseguire (di solito la lista dei pacchetti da aggiornare, e possibilmente dare i numeri di versione vecchi e nuovi), e permettere all’utente di accettare l’aggiornamento in blocco, o selezionare singoli pacchetti da aggiornare. Molti gestori di pacchetti possono essere configurati per non aggiornare mai certi pacchetti, o per aggiornarli solo quando vengono trovate vulnerabilità critiche o instabilità nella versione precedente, come definito dal produttore del software. Questo processo è talvolta chiamato version pinning.

Per esempio:

  • yum lo supporta con la sintassi exclude=openoffice*
  • pacman con IgnorePkg= openoffice (per sopprimere l’aggiornamento di openoffice in entrambi i casi)
  • dpkg e dselect lo supportano parzialmente attraverso il flag hold nelle selezioni dei pacchetti
  • APT estende il flag hold attraverso il complesso meccanismo di “pinning” (gli utenti possono anche mettere in lista nera un pacchetto)
  • aptitude ha i flag “hold” e “forbid”
  • portage lo supporta attraverso il pacchetto.mask configuration file

Rimozione a cascata dei pacchettiEdit

Alcune delle funzioni di gestione dei pacchetti più avanzate offrono la “rimozione a cascata dei pacchetti”, in cui tutti i pacchetti che dipendono dal pacchetto di destinazione e tutti i pacchetti da cui dipende solo il pacchetto di destinazione vengono anch’essi rimossi.

Confronto dei comandiEdit

Anche se i comandi sono specifici per ogni particolare gestore di pacchetti, sono in larga misura traducibili, poiché la maggior parte dei gestori di pacchetti offre funzioni simili.

Azione zypper pacman apt dnf (yum) portage
installa pacchetto zypper in PKG pacman -S PACKAGE apt install PACKAGE dnf install PACKAGE emerge PACKAGE
remove package zypper rm -RU PKG pacman -R PACKAGE apt remove PACKAGE dnf remove --nodeps PACKAGE emerge -C PACKAGE o
emerge --unmerge PACKAGE
remove package+orphans zypper rm -u --force-risoluzione PKG pacman -Rs PACKAGE apt autoremove PACKAGE dnf remove PACKAGE emerge -c PACKAGE o
emerge --depclean PACKAGE
update software database zypper ref pacman -Sy apt update dnf check-update emerge --sync
show updatable packages zypper lu pacman -Qu apt list --upgradable dnf check-update emerge -avtuDN --with-bdeps=y @world o
emerge --update --fingere @world
cancellare orfani+config zypper rm -u pacman -Rsn $(pacman -Qdtq) apt autoremove dnf erase PKG emerge --depclean
show orphans zypper pa --orphaned --unneed pacman -Qdt package-cleanup --quiet --leaves --exclude-bin emerge -caD o
emerge --depclean --pretend
update all zypper up pacman -Syu apt upgrade dnf update emerge --update --deep --with-bdeps=y @world

La wiki di Arch Linux Pacman/Rosetta offre un’ampia panoramica.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.