Salta il menu
*Guida ad ArchBang - Pacman

< Home >

Pacman

Questa pagina è stata creata sulla base delle indicazioni del Wiki di Arch Linux Italia

1. Descrizione

Il gestore dei pacchetti Pacman è uno dei punti di forza di ArchBang. Combina un semplice formato di pacchetti binari con un facile sistema di compilazione dei pacchetti (vedi Makepkg e ABS).
Pacman rende possibile gestire facilmente i pacchetti, siano essi presi dalle repository ufficiali di Arch o compilati dall'utente stesso.

Pacman può tenere un sistema aggiornato sincronizzando le liste di pacchetti con il server principale. Questo modello server/client ti permette anche di scaricare/installare pacchetti con un semplice comando, completi di tutte le dipendenze richieste (in maniera simile ad apt-get di Debian).

È sviluppato in C, e perciò risulterà veloce e snello. In passato usava il formato .tar.gz, ed è attualmente migrato al formato .tar.xz (LZMA2) formato che ne incrementa la velocità, e produce file compressi molto più piccoli del precedente formato. Comparato a gzip, questo formato diminuisce in modo considerevole la dimensione dei pacchetti; circa il 30% in meno o anche più in base al loro contenuto.

2. Configurazione

La configurazione di Pacman è in /etc/pacman.conf. Ulteriori informazioni riguardo il file di configurazione possono essere trovate usando il comando:

man pacman.conf

2.1 Opzioni generali

Le opzioni generali sono nella sezione [options]. Leggi la pagina di man o guarda nel pacman.conf predefinito per ulteriori informazioni.

2.1.1 Evitare di aggiornare un pacchetto
Per evitare di aggiornare un pacchetto, specificarlo nella apposita stringa:

IgnorePkg=kernel26

In questo caso il pacchetto kernel26 verrà ignorato durante l'aggiornamento, mantenendolo alla versione installata. Per più pacchetti separarli con uno spazio. Si noti che pacman genererà un output che segnalerà che il pacchetto è ignorato.
2.1.2 Evitare di aggiornare un gruppo di pacchetti
Così come per un singolo pacchetto, è possibile ignorare l'aggiornamento anche dei pacchetti che sono racchiusi in un gruppo. In questo caso si dovrà indicare il gruppo dei pacchetti da ignorare:

IgnoreGroup=gnome

2.2 Repositories

In questa sezione puoi definire che repositories usare, come specificato in pacman.conf. Possono essere definite direttamente qui o puoi aggiungerle da un altro file.
Tutti i repositories ufficiali utilizzano lo stesso file /etc/pacman.d/mirrorlist dov'è contenuta una variabile '$repo' in modo da mantenere una sola lista.
L'ultima opzione è utile per i Repositori Ufficiali che hanno molti mirrors.

[core]
# Add your preferred servers here, they will be used first
Include = /etc/pacman.d/mirrorlist

[extra]
# Add your preferred servers here, they will be used first
Include = /etc/pacman.d/mirrorlist

[community]
# Add your preferred servers here, they will be used first
Include = /etc/pacman.d/mirrorlist

Si deve prestare attenzione quando si utilizza il repository testing! Se non si è esperti, è caldamente raccomandato non utilizzarlo. Gli utenti che usano il repository [testing] sono invitati ad iscriversi alla lista arch-dev-public mailing per ottenere informazioni aggiornate.

3. Uso

Per imparare davvero cosa pacman può fare, leggi il manuale di pacman, usando il seguente comando

man pacman

Quelli che seguono sono solo piccoli esempi delle operazioni che possono essere eseguite.
3.1 Installare i Pacchetti
Prima di installare e aggiornare pacchetti, è una buona idea sincronizzare il database locale dei pacchetti con le repository remote.

pacman -Sy

o

pacman --sync --refresh

Per installare o aggiornare un singolo pacchetto o una lista di pacchetti (incluse le dipendenze), dai il seguente comando:

pacman -S nome_pacchetto1 nome_pacchetto2

Qualche volta ci sono più versioni di uno stesso pacchetto in differenti repositories (ad esempio, extra e testing). Puoi specificare quale installare:

pacman -S extra/nome_pacchetto
pacman -S testing/nome_pacchetto

Non aggiornare l'elenco dei pacchetti durante l'installazione dei pacchetti di nuovi programmi (ad esempio pacman -Sy nome_pacchetto): questo può portare a problemi con le dipendenze, quindi eseguire esplicitamente un Upgrade prima di installare nuovi pacchetti.

3.2 Rimuovere i Pacchetti
Per rimuovere un singolo pacchetto, lasciando tutte le sue dipendenze installate:

pacman -R nome_pacchetto

Per rimuovere tutte le dipendenze del pacchetto che non sono usate da nessun'altro pacchetto installato:

pacman -Rs nome_pacchetto

Per rimuovere un pacchetto senza controllarne le dipendenze:

pacman -Rd nome_pacchetto

pacman salva i file di configurazione importanti durante la rimozione di determinate applicazioni e li rinomina con l'estensione: .pacsave. Per eliminare questi file di backup utilizzare l'estensione -n:

pacman -Rn package_name
pacman -Rns package_name

pacman non rimuoverà le configurazioni che l'applicazione si crea (per esempio. dot file nella cartella home).

3.3 Aggiornare il sistema
Pacman può aggiornare tutti i pacchetti del sistema con un solo comando. Questo processo può durare parecchio tempo, in relazione a quanto aggiornato è il tuo sistema.

pacman -Su

Comunque, la migliore scelta è di sincronizzare il database locale con quello della repositori e aggiornare il tuo sistema, in un solo comando:

pacman -Syu

Essendo una distribuzione rolling-release, l'aggiornamento di un sistema Arch Linux non è sempre così semplice se paragonato alle distribuzioni che optano per aggiornamenti ciclici. Inoltre, pacman non si comporta come altri gestori di pacchetti, ed è sbagliato lanciarlo senza seguirne l'andamento, poiché pacman, cosi come Arch linux, richiede un controllo costante dell'utente. Di conseguenza, il mantenimento di un adeguato sistema Arch Linux con pacman tende a confondere i nuovi utenti (come molte discussioni sul forum dimostrerebbero).Si prega di leggere la seguente sezione in modo approfondito prima di proseguire.

Pacman è un potente strumento di gestione dei pacchetti, ma non cerca di fare "tutto", per così dire. Consultare The Arch Way se non avete ben chiara la filosofia KISS che è alla base di Arch. Piuttosto, gli utenti devono essere vigili e assumersi la responsabilità nel mantenere il proprio sistema. Quando si esegue un aggiornamento del sistema, ad esempio con pacman-Syu, è essenziale che gli utenti leggano tutte le informazioni generate dall'output di pacman e usare il buon senso.

Invece di aggiornare immediatamente non appena sono disponibili nuove versioni dei pacchetti, l'utente deve riconoscere che un aggiornamento di un pacchetto critico può avere conseguenze impreviste. Questo significa che, ad esempio, non è saggio aggiornare xorg-server se si è in procinto di consegnare una presentazione importante. Piuttosto, si consideri di procedere all'aggiornamento nel tempo libero, ed essere preparati ad affrontare eventuali problemi che possono insorgere.

Inoltre è caldamente consigliato di visitare periodicamente il sito di Arch Linux. Di solito, quando gli aggiornamenti richiedono l'intervento dell'utente, viene segnalato nelle Notizie Recenti ( è possibile anche iscriversi al Feed Rss). Normalmente ci saranno dei messaggi inerenti all'aggiornamento sia nel forum internazionale, sia in quello italiano, poco dopo l'aggiornamento diventa disponibile attraverso i vari mirrors, con indicazione delle soluzioni ai problemi.

Quando viene eseguito un aggiornamento, assicurarsi di leggere i messaggi stampati da pacman. Coloro che creano i pacchetti spesso descrivono i cambiamenti e i problemi previsti, e dirottano gli utenti alla pagina appropriata del wiki o ad una risorsa esterna. In conclusione,leggere sempre tutte le informazioni generate da pacman!, poichè i primi problemi si risolvono semplicemente in questo modo.

Si ricorda che tutto l'output di pacman si trova nel file di log /var/log/pacman.log.

3.4 Interrogare il database dei pacchetti
Pacman può cercare nel database dei pacchetti una lista di pacchetti, puoi anche immettere solo parte del nome del pacchetto per cercare tutti i pacchetti che contengono la stringa:

pacman -Ss pacchetto

Per cercare solo tra i pacchetti installati:

pacman -Qs pacchetto

Una volta che conosci il nome del pacchetto che stai cercando, pacman può mostrare alcune informazioni riguardo quel pacchetto. Nota che query info (-Qi) mostrerà più info che sync info (-Si), se il pacchetto è installato.

pacman -Si pacchetto
pacman -Qi pacchetto

Per una lista dei files contenuti in nel pacchetto:

pacman -Ql pacchetto

Per una lista di pacchetti installati esplicitamente dall'utente, e che non sono più dipendenza di alcun altro pacchetto installato:

pacman -Qet

Per conoscere i pacchetti "orfani" sul tuo sistema, cioè quei pacchetti installati come dipendenza ma non più richiesti da alcun pacchetto:

pacman -Qdt

Puoi anche cercare a quale pacchetto appartiene un file del tuo sistema:

pacman -Qo /percorso/al/file

3.5 Salvataggio e recupero di una lista dei pacchetti installati per un ripristino veloce del software

È buona abitudine tenere un backup periodico di tutti i pacchetti installati con pacman. Se si è vittima di un crash che rende il sistema irrecuperabile, pacman può reinstallare i medesimi pacchetti in una nuova installazione senza difficoltà.
Per prima cosa, fare un backup dei pacchetti:

pacman -Qqe > pkglist

Salvare il file pkglist in una chiavetta USB o in un altro supporto.
Copiare il file pkglist nella nuova installazione e posizionarsi nella directory che lo contiene.
Digitare il comando seguente:

pacman -S $(cat pkglist)

3.6 Pulire il sistema
Con Pacman potete altresì pulire il vostro sistema e, statene pur certi, dopo diverse installazioni, aggiornamenti, rimozioni o sostituzioni di software, vi tornerà sicuramente utile.
  • Per ripulire la cache dei pacchetti scaricati ed attualmente non installati:

    pacman -Sc

  • Svuota completamente la cache dei pacchetti (/var/cache/pacman/pkg):

    pacman -Scc

  • Per visualizzare i pacchetti e le dipendenze non più necessarie:

    pacman -Qdtq

  • Per rimuoverle, dopo il comando precedente o direttamente, diamo:

    sudo pacman -R $(pacman -Qdtq)

3.7 Comandi addizionali
Pacman è certamente un gestore dei paccheti molto potente, qui sotto c'è un breve elenco di altre caratteristiche.
  • Scarica un pacchetto senza installarlo:

    pacman -Sw nome_pacchetto

  • Installa un pacchetto locale (non da repository)::

    pacman -U /percorso/al/pacchetto/nomepacchetto-versione.pkg.tar.gz

  • Per rimuovere gli orfani (ricorsivamente; fate attenzione!):

    pacman -Rs $(pacman -Qtdq)

  • Per reinstallare tutti i pacchetti del vostro sistema (se disponibili in un repository attivo):

    pacman -S $(pacman -Qq | grep -v "$(pacman -Qmq)")

Per una lista più dettagliata delle opzioni fai riferimento a pacman --help o man pacman.
3.8 Errori
Ricevere un errore di questo tipo

not found in sync db

significa che i pacchetti non vengono trovati perché i repository non sono stati configurati in maniera corretta.

4. Risoluzione dei problemi

Q: L'aggiornamento del pacchetto XYZ ha corroto il mio sistema!
A: Arch Linux è una distribuzione rolling-release all'avanguardia. Gli aggiornamenti dei pacchetti sono disponibili non appena sono considerati abbastanza stabili per un uso generale. Tuttavia, gli aggiornamenti a volte richiedono l'intervento dell'utente: i file di configurazione possono avere bisogno di essere aggiornati, le dipendenze opzionali possono cambiare, etc...

La cosa più importante da ricordare è quella di non aggiornare "alla cieca" il sistema. Leggere sempre l'elenco dei pacchetti da aggiornare. Si presti particolare attenzione quando si opera ad aggiornare dei pacchetti "critici" (kernel26, xorg-server, e così via). In questa situazione è una buona consuetudine verificare eventuali news su http://archlinux.org e controllare anche il forum, per vedere se le persone incontrano problemi a causa di un aggiornamento.

Se l'aggiornamento di un pacchetto già prevede dei cambiamenti o è noto che potrebbe causare dei problemi, i responsabili del pacchetto farà in modo che pacman visualizzi un messaggio appropriato quando viene aggiornato. Se l'aggiornamento non va a buon fine, effettuate un controllo del log di pacman per riscontrare eventuali messaggi e procedere ad una prima analisi del problema (/var/log/pacman.log).

A questo punto, solo dopo aver assicurato non ci sono informazioni disponibili tramite pacman, non ci sono notizie relative su http://archlinux.org, e non ci sono messaggi nel forum inerenti al vostro problema, si dovrebbe prendere in considerazione di cercare aiuto sul forum, sul Canale IRC oppure optare per un downgrade del pacchetto.
Q: So che un aggiornamento del pacchetto ABC è stato rilasciato, ma pacman mi dice che il mio sistema è aggiornato!
A: Molto semplicemente questo avviene perchè i vari mirror non sono sincronizzati immediatamente, di norma dovrebbero passare almeno 24 ore affinché un pacchetto sia disponibile nei vari mirror. Quindi dovreste aspettare che sia disponibile, o se riscontrate un ritardo considerevole, potreste optare per cambiare mirror.
Q: Aggiornando il sistema ottengo l'errore: "file exists in filesystem"!
A: ASIDE: Tratto da http://bbs.archlinux.org/viewtopic.php?id=56373 by Misfit138.
error: could not prepare transaction error: failed to commit transaction (conflicting files) package: /path/to/file exists in filesystem Errors occurred, no packages were upgraded.

Perché sta accadendo questo: pacman ha rilevato un conflitto di file e di progettazione, non sovrascrive i file per voi. Si tratta di una funzionalità di progettazione, non di un difetto.

È responsabilità dell'utente per mantenere il proprio sistema, non il gestore dei pacchetti. Si può utilizzare il comando (pacman -Qo per ricercare a quale pacchetto risale il file in questione.)

La questione è di solito banale da risolvere. Un modo sicuro è quello di controllare prima se un altro pacchetto è proprietario del file (pacman -Qo /path/to/file). Se il file è di proprietà di un altro pacchetto, potete procedere ad aprire un bug report. Se il file non è di proprietà di un altro pacchetto, rinominare il file che 'esiste nel filesystem' e ri-eseguire il comando di aggiornamento. Se tutto va bene, il file può poi essere rimosso.
Q: Ottengo un errore quando si installa un pacchetto: "not found in sync db"
A: In primo luogo, accertatevi che il pacchetto esista realmente (controllate eventuali errori di battitura!). Se siete certi che il pacchetto esista, allora potrebbe essere che la lista dei pacchetti sia datata e non sincronizzata o i repositori possono essere configurati in modo errato. Lanciare il comando pacman -Syy per forzare un aggiornamento di tutte le liste dei pacchetti.
Q: Pacman mi richiede ripetutamente di aggiornare lo stesso pacchetto!
A: Ciò è dovuto a voci duplicate in /var/lib/pacman/local/, come ad esempio due istanze di kernel26. Tramite il comando pacman -Qi pacchetto otterrete la versione corrente, ma con pacman -Qu pacchetto riconosce la vecchia versione e, pertanto, viene tentato l'aggiornamento.

Soluzione: eliminare la voce incriminata in /var/lib/pacman/local/.

La versione 3.4 di Pacman dovrebbe visualizzare un messaggio di errore in caso di voci duplicate, che dovrebbe rendere questa faq obsoleta.

Q: Pacman va in crash durante un aggiornamento!
A: Nel caso in cui pacman si blocca con un errore di "scrittura del database" (error database write) durante la rimozione pacchetti, la reinstallazione o un aggiornamento:
  1. Avviare il sistema usando una live CD di Arch
  2. Montare la tua partizione di root
  3. Aggiornare il database usando il comando pacman -Syy
  4. Installare il pacchetto corrotto tramite pacman -r /percorso/tua/root -S package
Q: Ho installato un programma utilizzando make install; questi file non appartengono ad alcun pacchetto!
A: pacman sovrascrive il software installato manualmente se lanciato con l'opzione -f (ad esempio pacman -Sf). Se il software è stato installato in /usr/local, è possibile eseguire la scansione per i file di cui pacman è a conoscenza:

find /usr/local -exec bash -c 'file={}; pacman -Qo "$file" 2>/dev/null' \;

Per trovare tutti i file che sono non monitorati da pacman:

find / -xdev -exec bash -c 'file={}; [[ "$file" =~ ^/root || \
> "$file" =~ ^/boot/(grub|kernel) || "$file" =~ ^/usr/(include|lib) ]] || \
> pacman -Qo "$file" &>/dev/null || echo "$file"' \;

Man Pages

5. Links correlati

Suggerimento utile

Forse potrebbero interessarti anche questi argomenti:
  1. Installare programmi
  2. Rimuovere programmi

Precedente | Indice | Successiva

Torna in alto