Difference between revisions of "Improve pacman performance (Italiano)"

From ArchWiki
Jump to: navigation, search
(rm temporary i18n template)
(simplification and beautification of wikilinks, fixing whitespace, capitalization and section fragments (https://github.com/lahwaacz/wiki-scripts/blob/master/link-checker.py (interactive)))
 
(37 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 
[[Category:Package management (Italiano)]]
 
[[Category:Package management (Italiano)]]
 
[[de:Pacman beschleunigen]]
 
[[de:Pacman beschleunigen]]
[[en:Improve Pacman Performance]]
+
[[en:Pacman/Tips and tricks]]
[[es:Improve Pacman Performance]]
+
[[es:Improve pacman performance]]
 
[[fr:Ameliorer Pacman]]
 
[[fr:Ameliorer Pacman]]
[[pl:Optymalizacja Pacmana]]
+
[[ja:Pacman のパフォーマンスの向上]]
[[ru:Improve Pacman Performance]]
+
[[ru:Improve pacman performance]]
[[tr:Pacman_verimini_arttırmak]]
+
[[tr:Pacman verimini arttırmak]]
[[zh-CN:Improve Pacman Performance]]
+
[[zh-cn:Pacman/Tips and tricks]]
[[zh-TW:Improve Pacman Performance]]
+
[[zh-tw:Improve pacman performance]]
 
==Miglioramento dei tempi d'accesso al database==
 
==Miglioramento dei tempi d'accesso al database==
  
Line 15: Line 15:
 
  # pacman-optimize
 
  # pacman-optimize
  
In questo modo il sistema tenterà di raggruppare tutti i files con le informazioni dei pacchetti, in modo che risiedano nella stessa area dell'hard disk, evitando che le testine si muovano eccessivamente quando devono accedere a tutti i pacchetti. Questo medodo è sicuro, ma non è infallibile. La sua efficacia varia in funzione del filesystem utilizzato, dalla percentuale di utilizzo del disco e dalla frammentazione dello spazio ancora libero. Un'opzione più "aggressiva", sarebbe quella di rimuovere i pacchetti disinstallati e i repository inutilizzati dalla cache, prima di procedere all'ottimizzazione del database:
+
In questo modo il sistema tenterà di raggruppare tutti i files con le informazioni dei pacchetti, in modo che risiedano nella stessa area dell'hard disk, evitando che le testine si muovano eccessivamente quando devono accedere a tutti i dati. Questo medodo è sicuro, ma non è infallibile. La sua efficacia varia in funzione del filesystem utilizzato, dalla percentuale di utilizzo del disco e dalla frammentazione dello spazio ancora libero. Un'opzione più "aggressiva", sarebbe quella di rimuovere i pacchetti disinstallati e i repository inutilizzati dalla cache, prima di procedere all'ottimizzazione del database:
  
 
  # pacman -Sc && pacman-optimize
 
  # pacman -Sc && pacman-optimize
 +
 +
Se si esegue questo comando periodicamente è consigliabile inserirlo in un cronfile o utilizzare un  [https://aur.archlinux.org/packages/systemd-timer-pacman-optimize-git timer] di systemd, fornito dal pacchetto {{AUR|systemd-timer-pacman-optimize-git}}{{Broken package link|{{aur-mirror|systemd-timer-pacman-optimize-git}}}}.
  
 
==Migliorare la velocità di download==
 
==Migliorare la velocità di download==
  
{{Nota|Se la velocità di download è minima, assicurarsi di star utilizzando uno dei [[Mirrors (Italiano)|mirror]], e non ftp.archlinux.org, la cui banda è stata ridotta [http://www.archlinux.org/news/302/ da marzo 2007].}}
+
{{Nota|Se la velocità di download è minima, assicurarsi di star utilizzando uno dei [[Mirrors (Italiano)|mirror]], e non ftp.archlinux.org, la cui banda è stata ridotta [https://www.archlinux.org/news/302/ da marzo 2007].}}
  
 
La velocità con cui Pacman scarica i pacchetti può essere migliorata usando un'applicazione differente per lo scaricamento, preferendola al downloader built-in.
 
La velocità con cui Pacman scarica i pacchetti può essere migliorata usando un'applicazione differente per lo scaricamento, preferendola al downloader built-in.
Line 28: Line 30:
  
 
  # pacman -Syu
 
  # pacman -Syu
 +
 +
===Usando Powerpill===
 +
 +
Powerpill è un wrapper completo per pacman che utilizza il download parallelo da più server per velocizzare il processo di scaricamento. Normalmente pacman scarica un solo pacchetto per volta, aspettando che il download dello stesso sia concluso prima di passare al sucessivo: Powerpill sceglie un approccio differente, cercando di scaricare il maggior numero possibile di pacchetti in contemporanea.
 +
 +
La pagina relativa a [[Powerpill (Italiano)|Powerpill]] copre la configurazione di base e fornisce vari esempi d'impego.
  
 
===Usando wget===
 
===Usando wget===
Line 33: Line 41:
 
Questa opzione è utile se si necessita di impostazioni per i proxy più avanzate rispetto a quelle native di pacman.
 
Questa opzione è utile se si necessita di impostazioni per i proxy più avanzate rispetto a quelle native di pacman.
  
Per utilizzare {{ic|wget}}, lo si installi con {{ic|pacman -S wget}} e poi si modifichi {{ic|/etc/pacman.conf}} aggiungendo le seguenti linee alla sezione {{ic|[options]}}:
+
Per utilizzare {{ic|wget}}, si [[install|installi]] il pacchetto {{Pkg|wget}} e si modifichi {{ic|/etc/pacman.conf}} aggiungendo le seguenti linee alla sezione {{ic|[options]}}:
  
  XferCommand = /usr/bin/wget -c --passive-ftp -c %u
+
  XferCommand = /usr/bin/wget -c -q --show-progress --passive-ftp -O %o %u
  
 
Invece di inserire i parametri di wget in {{ic|/etc/pacman.conf}}, è possibile modificare direttamente il relativo file di configurazione  (quello globale risiede in {{ic|/etc/wgetrc}}, mentre la configurazione per utente è contenuta in {{ic|$HOME/.wgetrc}}).
 
Invece di inserire i parametri di wget in {{ic|/etc/pacman.conf}}, è possibile modificare direttamente il relativo file di configurazione  (quello globale risiede in {{ic|/etc/wgetrc}}, mentre la configurazione per utente è contenuta in {{ic|$HOME/.wgetrc}}).
 
  
 
===Usando aria2===
 
===Usando aria2===
  
[[Aria2|aria2]] è una utility per il download molto leggera che supporta i download per parti, oltre a consentire la ripresa del download di un file interrotto. Tra I protocolli supportati ci sono HTTP/HTTPS e FTP. [http://aria2.sourceforge.net/ aria2] consente inoltre di stabilire più connessioni HTTP/HTTPS o FTP ad un mirror Arch linux, il che dovrebbe consentire un aumento della velocià di download, sia per i file che per i pacchetti.
+
[[aria2]] è una utility per il download molto leggera che supporta i download per parti, oltre a consentire la ripresa del download di un file interrotto. Tra I protocolli supportati ci sono HTTP/HTTPS e FTP. aria2 consente inoltre di stabilire più connessioni HTTP/HTTPS o FTP ad un mirror Arch linux, il che dovrebbe consentire un aumento della velocià di download, sia per i file che per i pacchetti.
  
====Installazione====
+
{{Nota|Inserire {{ic|aria2c}} in {{ic|XferCommand}} nel file di configurazione {{ic|/etc/pacman.conf}} '''non''' comporta il download parallelo di più pacchetti. Pacman invoca {{ic|XferCommand}} ad ogni pacchetto e aspetta che il download sia terminato prima di scaricare il successivo.
 +
Per scaricare più pacchetti contemporaneamente, si veda la sezione dedicata a [[#Usando Powerpill|powerpill]].}}
  
Si installino {{Pkg|aria2}} e relative dipendenze:
+
Si installi {{Pkg|aria2}}, quindi si modifichi {{ic|/etc/pacman.conf}} aggiungendo la seguente linea alla sezione {{ic|[options]}}:
  
# pacman -S aria2
+
XferCommand = /usr/bin/aria2c --allow-overwrite=true -c --file-allocation=none --log-level=error -m2 -x2 --max-file-not-found=5 -k5M --no-conf -Rtrue --summary-interval=60 -t5 -d / -o %o %u
  
====Configurazione====
+
{{Suggerimento|1=
 
+
* L'utilizzo di questo XferCommand produce output meno utile ma più leggibile:
Si modifichi {{ic|/etc/pacman.conf}} aggiungendo la linea seguente nella sezione {{ic|[options]}}:
+
:{{Ic|1=<nowiki>XferCommand = /usr/bin/printf 'Downloading ' && echo %u | awk -F/ '{printf $NF}' && printf '...' && /usr/bin/aria2c -q --allow-overwrite=true -c --file-allocation=none --log-level=error -m2 --max-connection-per-server=2 --max-file-not-found=5 --min-split-size=5M --no-conf --remote-time=true --summary-interval=0 -t5 -d / -o %o %u && echo ' Complete!'</nowiki>}}
 
+
* [https://bbs.archlinux.org/viewtopic.php?pid=1491879#p1491879 Configurazione alternativa per l'utilizzo di pacman con aria2]: Semplifica la configurazione ed aggiunge altre opzioni.
{{bc|<nowiki>XferCommand = /usr/bin/aria2c --allow-overwrite=true -c --file-allocation=none --log-level=error -m2 --max-connection-per-server=2 --max-file-not-found=5 --min-split-size=5M --no-conf --remote-time=true --summary-interval=60 -t5 -d / -o %o %u</nowiki>}}
+
}}
  
====Spiegazione delle opzioni====
+
Spiegazione delle opzioni
  
 
; {{ic|/usr/bin/aria2c}}: Il percorso completo all'eseguibile di aria2c.
 
; {{ic|/usr/bin/aria2c}}: Il percorso completo all'eseguibile di aria2c.
 
; {{ic|1=--allow-overwrite=true}}: Riavvia un download se il corrispondente file di controllo non esiste. (Default: false)
 
; {{ic|1=--allow-overwrite=true}}: Riavvia un download se il corrispondente file di controllo non esiste. (Default: false)
 
; {{ic|-C, --continue}}: Continua il download di un file parzialmente scaricato, se il relativo file di controllo esiste.
 
; {{ic|-C, --continue}}: Continua il download di un file parzialmente scaricato, se il relativo file di controllo esiste.
; {{ic|1=--file-allocation=none}}: Non prealloca lo spazio su disco per il file prima dell'inizio del download. (Default:prealloc)<sup>1</sup>
+
; {{ic|1=--file-allocation=none}}: Non prealloca lo spazio su disco per il file prima dell'inizio del download. (Default:prealloc)
 +
: Su filesystem più recenti come ext4 (con supporto alle estensioni), btrfs e xfs è consigliabile usare {{ic|1=--file-allocation=falloc}}, poichè alloca file di grandi dimensioni (GB) quasi istantaneamente. Non utilizzare ''falloc'' su filesystem legacy come ext3, dal momento che ''prealloc'' ha lo stesso tempo di esecuzione dell'allocazione standard, ma non consente ad aria2 di iniziare il download finchè l'allocazione non è terminata.
 
; {{ic|1=--log-level=error}}: Vengono scritti nel file di log solamente gli errori. (Default: debug)
 
; {{ic|1=--log-level=error}}: Vengono scritti nel file di log solamente gli errori. (Default: debug)
; {{ic|1=m2, --max-tries=2}}: Effettua un massimo di 2 tentativi a mirror per il download di un file specifico. (Default: 5)
+
; {{ic|1=m2, --max-tries=2}}: Effettua un massimo di 2 tentativi a mirror per il download di un file specifico. (Default: 1)
; {{ic|1=--max-connections-per-server=2}}: Imposta un massimo di due connessioni per ogni mirror. (Default:1)
+
; {{ic|1=-x2,--max-connections-per-server=2}}: Imposta un massimo di due connessioni per ogni mirror. (Default:1)
 
; {{ic|1=--max-file-not-found=5}}: Costringe un download ad essere considerato come "fallito" se non viene ricevuto un singolo byte dopo 5 tentativi. (Default: 0)
 
; {{ic|1=--max-file-not-found=5}}: Costringe un download ad essere considerato come "fallito" se non viene ricevuto un singolo byte dopo 5 tentativi. (Default: 0)
; {{ic|1=--max-split-size=5M}}: Divide il file se è più grande di 2;5MB = 10MB. (Default: 20M)
+
; {{ic|1=-k5M,--max-split-size=5M}}: Divide il file se è più grande di 2;5MB = 10MB. (Default: 20M)
 
; {{ic|--no-conf}}: Disabilita il caricamento del file {{ic|aria2.conf}}, se esistente. (Default:{{ic|~/.aria2/aria2.conf}})
 
; {{ic|--no-conf}}: Disabilita il caricamento del file {{ic|aria2.conf}}, se esistente. (Default:{{ic|~/.aria2/aria2.conf}})
; {{ic|1=--remote-time=true}}: Applica i timestamps dei file(s) remoti a quelli locali. (Default: false)
+
; {{ic|1=-Rtrue,--remote-time=true}}: Applica i timestamps dei file(s) remoti a quelli locali. (Default: false)
; {{ic|1=--summary-interval=60}}: visualizza un riassunto dei progressi ogni 60 secondi. (Default: 60)<sup>2</sup>
+
; {{ic|1=--summary-interval=60}}: visualizza un riassunto dei progressi ogni 60 secondi. (Default: 60)
 +
: {{ic|1=--summary-interval=0}} inibisce il riassunto dei progressi e potrebbe migliorare le prestazioni. I logs continueranno ad essere generati secondo il valore di {{ic|log-level}} impostato.
 
; {{ic|1=-t5, --timeout=5}}: Imposta 5 secondi di timeout per mirror dopo che viene stabilita una connessione. (Default: 60)
 
; {{ic|1=-t5, --timeout=5}}: Imposta 5 secondi di timeout per mirror dopo che viene stabilita una connessione. (Default: 60)
 
; {{ic|-d, --dir}}: La directory dove memorizzare i files scaricati, come specificato da [[Pacman (Italiano)|pacman]].
 
; {{ic|-d, --dir}}: La directory dove memorizzare i files scaricati, come specificato da [[Pacman (Italiano)|pacman]].
; {{ic|-o, --output}}: Imposta il nome del/i file/s scaricato/i.
+
; {{ic|-o, --out}}: Imposta il nome del/i file/s scaricato/i.
 
; {{ic|%o}}: Variabile che rappresenta il nome del file, come specificato da pacman.
 
; {{ic|%o}}: Variabile che rappresenta il nome del file, come specificato da pacman.
 
; {{ic|%u}}: Variabile che rappresenta l'URL di download, come specificato da pacman.
 
; {{ic|%u}}: Variabile che rappresenta l'URL di download, come specificato da pacman.
 
====Note aggiuntive====
 
 
; <sup>1</sup> {{ic|1=--file-allocation=falloc}}: Valore raccomandato per filesystem di nuova generazione come ext4 (con supporto agli extents abilitato), btrfs o xfs, poichè consente l'allocazione pressochè istantanea di files di grandi dimensioni (GB). Non utilizzare falloc con filesystem legacy come ext3, poichè la preallocazione impiega approssimativamente lo stessso tempo dell'allocazione standard, cosa che costringerebbe il processo di aria2 ad aspettare prima di iniziare il download.
 
 
; <sup>2</sup> {{ic|1=--summary-interval=0}}: Disabilita l'output del riassunto progressi di download, il che potrebbe aumentare le prestazioni generali. I logs continueranno ad essere scritti, seguendo quanto specificato dall'opzione {{ic|log-level}}.
 
 
===Usando powerpill-light===
 
 
[http://xyne.archlinux.ca/projects/pacman2aria2/ pacman2aria2] fornisce uno script chiamato "powerpill-light" che può essere parzialmente usato come sostituto per powerpill. Benchè non sia un wrapper completo come lo era powerpill, supporta le seguenti operazioni:
 
 
* download paralleli
 
* download per parti
 
* recupero mirror con [[Reflector|Reflector]] per aumentare il numero di download paralleli
 
 
Ciò lo rende veloce come powerpill nello scaricamento dei pacchetti.
 
pacman2aria2 è disponibile in [[AUR (Italiano)|AUR]] e nel [http://xyne.archlinux.ca/repos/ repo di Xyne].
 
 
====Uso====
 
 
Si esegua powerpill-light come si eseguirebbe pacman per effettuare un sync dei repository, ma senza l'opzione "-S". Per esempio, per aggiornare il sistema, invece di "pacman -Su" si usi:
 
 
powerpill-light -u
 
 
Per installare gnome, invece di "pacman -S gnome" si usi:
 
 
powerpill-light gnome
 
 
===Script per mirror pacget (aria2)===
 
 
Questo script migliora notevolmente la velocità di download dei pacchetti per gli utenti che dispongono di connessioni a banda larga. Usa i server elencati in {{ic|/etc/pacman.d/mirrorlist}} come mirrors per aria2, scaricando da più server contemporaneamente ed aumentando così in maniera significativa la velocità di download.
 
 
{{Nota|E' necessario inserire {{ic|exec}} prima di {{ic|/usr/bin/pacget}} in {{ic|XferCommand}}, affinchè quando si termina pacget o aria2c (il cui processo è usato da pacget), pacman venga terminato a sua volta, risolvendo così l'inconveniente dove quest'ultimo continuava a scaricare un file anche dietro interruzione forzata dell'utente.}}
 
 
{{Attenzione|Se i mirror in uso non sono sincronizzati o semplicemente non aggiornati, potrebbero verificarsi dei problemi. Si utilizzi pertanto lo script [[Reflector|Reflector]] per generare una lista aggiornata di mirror veloci. Si noti che ftp.archlinux.org viene risolto con due IP: si potrebbe volerne usare soltanto uno forzando il sistema ad utilizzarlo tramite /etc/hosts.}}
 
 
{{hc|
 
/usr/bin/pacget|
 
<nowiki>
 
#!/bin/bash
 
 
msg() {
 
  echo ""
 
  echo -e "  \033[1;34m->\033[1;0m \033[1;1m${1}\033[1;0m" >&2
 
}
 
 
error() {
 
  echo -e "\033[1;31m==> ERROR:\033[1;0m \033[1;1m$1\033[1;0m" >&2
 
}
 
 
CONF=/etc/pacget.conf
 
STATS=/etc/pacget.stats
 
ARIA2=$(which aria2c 2> /dev/null)
 
 
# ----- do some checks first -----
 
if [ ! -x "$ARIA2" ]; then
 
  error "aria2c was not found or isn't executable."
 
  exit 1
 
fi
 
 
if [ $# -ne 2 ]; then
 
  error "Incorrect number of arguments"
 
  exit 1
 
fi
 
 
filename=$(basename $1)
 
server=${1%/$filename}
 
arch=$(grep ^Architecture /etc/pacman.conf | cut -d '=' -f2 | sed 's/ //g')
 
if [[ $arch = "auto" ]]; then
 
  arch=$(uname -m)
 
fi
 
# Determine which repo is being used
 
repo=$(awk -F'/' '$(NF-2)~/^(community|core|extra|testing|comunity-testing|multilib)$/{print $(NF-2)}' <<< $server)
 
[ -z $repo ] && repo="custom"
 
 
# For db files, or when using a custom repo (which most likely doesn't have any mirror),
 
# use only the URL passed by pacman; Otherwise, extract the list of servers (from the include file of the repo) to download from
 
url=$1
 
if ! [[ $filename = *.db || $repo = "custom" ]]; then
 
  mirrorlist=$(awk -F' *= *' '$0~"^\\["r"\\]",/Include *= */{l=$2} END{print l}' r=$repo /etc/pacman.conf)
 
  if [ -n mirrorlist ]; then
 
    num_conn=$(grep ^split $CONF | cut -d'=' -f2)
 
    url=$(sed -r '/^Server *= */!d; s/Server *= *//; s/\$repo'"/$repo/"'; s/\$arch'"/$arch/; s/$/\/$filename/" $mirrorlist | head -n $(($num_conn *2)) )
 
  fi
 
fi
 
 
msg "Downloading $filename"
 
cd /var/cache/pacman/pkg/
 
 
touch $STATS
 
 
$ARIA2 --conf-path=$CONF --max-tries=1 --max-file-not-found=5 \
 
  --uri-selector=adaptive --server-stat-if=$STATS --server-stat-of=$STATS \
 
  --allow-overwrite=true --remote-time=true --log-level=error --summary-interval=0 \
 
  $url --out=${filename}.pacget && [ ! -f ${filename}.pacget.aria2 ] && mv ${filename}.pacget $2 && chmod 644 $2
 
 
exit $?
 
</nowiki>
 
}}
 
 
{{hc|
 
/etc/pacget.conf|
 
<nowiki>
 
# The log file
 
log=/var/log/pacget.log
 
# Number of servers to download from
 
split=5
 
# Minimum file size that justifies a split, i.e. concurrent download (default 20M)
 
min-split-size=1M
 
# Maximum download speed (0 = unrestricted)
 
max-download-limit=0
 
# Minimum download speed (0 = do not care)
 
lowest-speed-limit=0
 
# Server timeout period
 
timeout=5
 
# 'none' or 'falloc'
 
file-allocation=none
 
</nowiki>
 
}}
 
 
Si salvi lo script in {{ic|/usr/bin/pacget}} e lo si renda eseguibile:
 
 
chmod 755 /usr/bin/pacget
 
 
In {{ic|/etc/pacman.conf}}, è necessario aggiungere la seguente riga alla sezione {{ic|[options]}}:
 
 
XferCommand = exec /usr/bin/pacget %u %o
 
 
{{Nota|Se si utilizza ftp.archlinux.org come primo server contenuto nei files in /etc/pacman.d/*, potrebbero verificarsi problemi di sync con gli altri mirror. Per un miglior uso di questo script, è consigliabile impostare come primo un mirror che sia relativamente aggiornato e sincronizzato, affinchè il download non avvenga solo da ftp.archlinux.org se gli altri mirror non sono aggiornati. Lo script rankmirrors potrebbe essere d'aiuto in questi casi.}}
 
  
 
===Usando altre applicazioni===
 
===Usando altre applicazioni===
Line 215: Line 96:
 
==Scelta del mirror più veloce==
 
==Scelta del mirror più veloce==
  
Pacman utilizza in sequenza i mirror contenuti in {{ic|/etc/pacman.d/mirrorlist}} per il download dei pacchetti. Il primo mirror della lista potrebbe tuttavia non essere il più veloce.
+
Pacman utilizza in sequenza i mirror contenuti in {{ic|/etc/pacman.d/mirrorlist}} per il download dei pacchetti. Il primo mirror della lista potrebbe tuttavia non essere il più veloce. Per selezionare un mirror più veloce, si consulti [[Mirrors (Italiano)|Mirrors]]
 
+
{{Nota|Quanto scritto sotto non si applica a [[Improve Pacman Performance (Italiano)#Usando powerpill-light|powerpill-light]], poichè quest'ultimo si collega a più server contemporaneamente, rendendo quindi meno influente la velocità di download della singola connessione. Inoltre, powerpill-light può essere configurato per fare in modo che sia richiesta una velocità minima per ogni connessione.}}
+
 
+
===Scegliere un mirror vicino===
+
 
+
Il modo più semplice per farlo è modificare {{ic|/etc/pacman.d/mirrorlist}}, ponendo in cima all'elenco il mirror scelto, che verrà quindi utilizzato da pacman.
+
 
+
Alternativamente, è possibile inserire il proprio server in {{ic|/etc/pacman.conf}}, nella sezione con il commento "add your preferred servers here". E' comunque consigliabile usare lo stesso mirror per tutti i repository.
+
 
+
===Usando rankmirrors===
+
 
+
E' possibile usare [[Mirrors (Italiano)#Elenco per velocità|rankmirrors]] per ordinare i mirror in base alla velocità di connessione.
+
 
+
===Usando Reflector===
+
 
+
In alternativa a rankmirrors, è possibile utilizzare [[Reflector|Reflector]] per ottenere lo stesso risultato.
+
 
+
===Cosa fare dopo aver modificato l'elenco dei mirror===
+
 
+
E' consigliabile aggiornare il database di pacman dopo ogni modifica all'elenco dei mirror. Si utilizzi il seguente comando per forzare pacman a scaricare una copia dell'elenco pacchetti, anche se si ritiene che siano aggiornati:
+
 
+
# pacman -Syy
+
  
 
==Condivisione dei pacchetti su rete LAN==
 
==Condivisione dei pacchetti su rete LAN==
Line 243: Line 102:
 
Se si dispone di più macchine con Archlinux collegate ad una rete locale, è possibile condividere i pacchetti per ridurre sensibilmente i tempi di download. Si faccia attenzione a non condividere pacchetti di architetture diverse (es. i686 e x86_64), altrimenti si verificheranno problemi.
 
Se si dispone di più macchine con Archlinux collegate ad una rete locale, è possibile condividere i pacchetti per ridurre sensibilmente i tempi di download. Si faccia attenzione a non condividere pacchetti di architetture diverse (es. i686 e x86_64), altrimenti si verificheranno problemi.
  
Si veda: [[pacman Tips#Network shared pacman cache]].
+
Si veda: [[pacman tips#Network shared pacman cache]].

Latest revision as of 14:41, 8 April 2016

Miglioramento dei tempi d'accesso al database

Pacman memorizza tutte le informazioni relative ai pacchetti in piccoli file; uno per pacchetto. Migliorare i tempi d'accesso al database, riduce il tempo necessario a portare a termine le operazioni che ne fanno uso, come la ricerca dei pacchetti e la risoluzione delle dipendenze. Il metodo più sicuro e veloce, è dare il seguente comando come root:

# pacman-optimize

In questo modo il sistema tenterà di raggruppare tutti i files con le informazioni dei pacchetti, in modo che risiedano nella stessa area dell'hard disk, evitando che le testine si muovano eccessivamente quando devono accedere a tutti i dati. Questo medodo è sicuro, ma non è infallibile. La sua efficacia varia in funzione del filesystem utilizzato, dalla percentuale di utilizzo del disco e dalla frammentazione dello spazio ancora libero. Un'opzione più "aggressiva", sarebbe quella di rimuovere i pacchetti disinstallati e i repository inutilizzati dalla cache, prima di procedere all'ottimizzazione del database:

# pacman -Sc && pacman-optimize

Se si esegue questo comando periodicamente è consigliabile inserirlo in un cronfile o utilizzare un timer di systemd, fornito dal pacchetto systemd-timer-pacman-optimize-gitAUR[broken link: archived in aur-mirror].

Migliorare la velocità di download

Nota: Se la velocità di download è minima, assicurarsi di star utilizzando uno dei mirror, e non ftp.archlinux.org, la cui banda è stata ridotta da marzo 2007.

La velocità con cui Pacman scarica i pacchetti può essere migliorata usando un'applicazione differente per lo scaricamento, preferendola al downloader built-in.

In ogni caso, assicurarsi di avere l'ultima versione di Pacman prima di effettuare qualsiasi modifica:

# pacman -Syu

Usando Powerpill

Powerpill è un wrapper completo per pacman che utilizza il download parallelo da più server per velocizzare il processo di scaricamento. Normalmente pacman scarica un solo pacchetto per volta, aspettando che il download dello stesso sia concluso prima di passare al sucessivo: Powerpill sceglie un approccio differente, cercando di scaricare il maggior numero possibile di pacchetti in contemporanea.

La pagina relativa a Powerpill copre la configurazione di base e fornisce vari esempi d'impego.

Usando wget

Questa opzione è utile se si necessita di impostazioni per i proxy più avanzate rispetto a quelle native di pacman.

Per utilizzare wget, si installi il pacchetto wget e si modifichi /etc/pacman.conf aggiungendo le seguenti linee alla sezione [options]:

XferCommand = /usr/bin/wget -c -q --show-progress --passive-ftp -O %o %u

Invece di inserire i parametri di wget in /etc/pacman.conf, è possibile modificare direttamente il relativo file di configurazione (quello globale risiede in /etc/wgetrc, mentre la configurazione per utente è contenuta in $HOME/.wgetrc).

Usando aria2

aria2 è una utility per il download molto leggera che supporta i download per parti, oltre a consentire la ripresa del download di un file interrotto. Tra I protocolli supportati ci sono HTTP/HTTPS e FTP. aria2 consente inoltre di stabilire più connessioni HTTP/HTTPS o FTP ad un mirror Arch linux, il che dovrebbe consentire un aumento della velocià di download, sia per i file che per i pacchetti.

Nota: Inserire aria2c in XferCommand nel file di configurazione /etc/pacman.conf non comporta il download parallelo di più pacchetti. Pacman invoca XferCommand ad ogni pacchetto e aspetta che il download sia terminato prima di scaricare il successivo. Per scaricare più pacchetti contemporaneamente, si veda la sezione dedicata a powerpill.

Si installi aria2, quindi si modifichi /etc/pacman.conf aggiungendo la seguente linea alla sezione [options]:

XferCommand = /usr/bin/aria2c --allow-overwrite=true -c --file-allocation=none --log-level=error -m2 -x2 --max-file-not-found=5 -k5M --no-conf -Rtrue --summary-interval=60 -t5 -d / -o %o %u

Suggerimento: * L'utilizzo di questo XferCommand produce output meno utile ma più leggibile:
XferCommand = /usr/bin/printf 'Downloading ' && echo %u | awk -F/ '{printf $NF}' && printf '...' && /usr/bin/aria2c -q --allow-overwrite=true -c --file-allocation=none --log-level=error -m2 --max-connection-per-server=2 --max-file-not-found=5 --min-split-size=5M --no-conf --remote-time=true --summary-interval=0 -t5 -d / -o %o %u && echo ' Complete!'

Spiegazione delle opzioni

/usr/bin/aria2c
Il percorso completo all'eseguibile di aria2c.
--allow-overwrite=true
Riavvia un download se il corrispondente file di controllo non esiste. (Default: false)
-C, --continue
Continua il download di un file parzialmente scaricato, se il relativo file di controllo esiste.
--file-allocation=none
Non prealloca lo spazio su disco per il file prima dell'inizio del download. (Default:prealloc)
Su filesystem più recenti come ext4 (con supporto alle estensioni), btrfs e xfs è consigliabile usare --file-allocation=falloc, poichè alloca file di grandi dimensioni (GB) quasi istantaneamente. Non utilizzare falloc su filesystem legacy come ext3, dal momento che prealloc ha lo stesso tempo di esecuzione dell'allocazione standard, ma non consente ad aria2 di iniziare il download finchè l'allocazione non è terminata.
--log-level=error
Vengono scritti nel file di log solamente gli errori. (Default: debug)
m2, --max-tries=2
Effettua un massimo di 2 tentativi a mirror per il download di un file specifico. (Default: 1)
-x2,--max-connections-per-server=2
Imposta un massimo di due connessioni per ogni mirror. (Default:1)
--max-file-not-found=5
Costringe un download ad essere considerato come "fallito" se non viene ricevuto un singolo byte dopo 5 tentativi. (Default: 0)
-k5M,--max-split-size=5M
Divide il file se è più grande di 2;5MB = 10MB. (Default: 20M)
--no-conf
Disabilita il caricamento del file aria2.conf, se esistente. (Default:~/.aria2/aria2.conf)
-Rtrue,--remote-time=true
Applica i timestamps dei file(s) remoti a quelli locali. (Default: false)
--summary-interval=60
visualizza un riassunto dei progressi ogni 60 secondi. (Default: 60)
--summary-interval=0 inibisce il riassunto dei progressi e potrebbe migliorare le prestazioni. I logs continueranno ad essere generati secondo il valore di log-level impostato.
-t5, --timeout=5
Imposta 5 secondi di timeout per mirror dopo che viene stabilita una connessione. (Default: 60)
-d, --dir
La directory dove memorizzare i files scaricati, come specificato da pacman.
-o, --out
Imposta il nome del/i file/s scaricato/i.
%o
Variabile che rappresenta il nome del file, come specificato da pacman.
%u
Variabile che rappresenta l'URL di download, come specificato da pacman.

Usando altre applicazioni

Esistono altre applicazioni per il download utilizzabili con pacman. Vengono presentate di seguito, con il relativo XferCommand:

  • snarf: XferCommand = /usr/bin/snarf -N %u
  • lftp: XferCommand = /usr/bin/lftp -c pget %u
  • axel: XferCommand = /usr/bin/axel -n 2 -v -a -o %o %u

Scelta del mirror più veloce

Pacman utilizza in sequenza i mirror contenuti in /etc/pacman.d/mirrorlist per il download dei pacchetti. Il primo mirror della lista potrebbe tuttavia non essere il più veloce. Per selezionare un mirror più veloce, si consulti Mirrors

Condivisione dei pacchetti su rete LAN

Se si dispone di più macchine con Archlinux collegate ad una rete locale, è possibile condividere i pacchetti per ridurre sensibilmente i tempi di download. Si faccia attenzione a non condividere pacchetti di architetture diverse (es. i686 e x86_64), altrimenti si verificheranno problemi.

Si veda: pacman tips#Network shared pacman cache.