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

From ArchWiki
Jump to: navigation, search
(creata pagina italiana)
 
m (Spiegazione delle opzioni)
(18 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
[[Category:Package management (Italiano)]]
 
[[Category:Package management (Italiano)]]
{{i18n|Improve Pacman Performance}}
 
 
[[de:Pacman beschleunigen]]
 
[[de:Pacman beschleunigen]]
 +
[[en:Improve Pacman Performance]]
 +
[[es:Improve Pacman Performance]]
 
[[fr:Ameliorer Pacman]]
 
[[fr:Ameliorer Pacman]]
 
[[pl:Optymalizacja Pacmana]]
 
[[pl:Optymalizacja Pacmana]]
 +
[[ru:Improve Pacman Performance]]
 +
[[tr:Pacman_verimini_arttırmak]]
 +
[[zh-CN:Improve Pacman Performance]]
 +
[[zh-TW:Improve Pacman Performance]]
 +
==Miglioramento dei tempi d'accesso al database==
  
{{translateme}} {{Attenzione|Questo articolo è in fase di traduzione. Seguite per ora le istruzioni della versione inglese.}}
+
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:
 
+
== Improving Database Access Speeds ==
+
 
+
Pacman stores all package information in a collection of small files, one for each package. Improving database access speeds reduces the time taken in database-related tasks, e.g. searching packages and resolving package dependencies. The safest and easiest method is to run as root:
+
  
 
  # pacman-optimize
 
  # pacman-optimize
  
This will attempt to put all the small files together in one (physical) location on the hard disk so that the hard disk head does not have to move so much when accessing all the packages. This method is safe, but is not foolproof. It depends on your filesystem, disk usage and empty space fragmentation. Another more aggressive option would be to first remove uninstalled packages from cache and to remove unused repositories before database optimization:
+
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:
  
 
  # pacman -Sc && pacman-optimize
 
  # pacman -Sc && pacman-optimize
  
== Improving Download Speeds ==
+
==Migliorare la velocità di download==
  
{{Note|If your download speeds have been reduced to a crawl, ensure you are using one of the many [[mirrors]] and not ftp.archlinux.org, which is [http://www.archlinux.org/news/302/ throttled since  March 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].}}
  
Pacman's speed in downloading packages can be improved by using a different application to download packages instead of Pacman's built-in file downloader.
+
La velocità con cui Pacman scarica i pacchetti può essere migliorata usando un'applicazione differente per lo scaricamento, preferendola al downloader built-in.
  
In all cases, make sure you have the latest Pacman before doing any modifications.
+
In ogni caso, assicurarsi di avere l'ultima versione di Pacman prima di effettuare qualsiasi modifica:
  
 
  # pacman -Syu
 
  # pacman -Syu
  
=== Using wget ===
+
===Usando Powerpill===
  
This is also very handy if you need more powerful proxy settings than pacman's built-in capabilities.  
+
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.
  
To use <code>wget</code>, first install it with <code>pacman -S wget</code> and then modify <code>/etc/pacman.conf</code> by adding the following line to the <code>[options]</code> section:
+
La pagina relativa a [[Powerpill (Italiano)|Powerpill]] copre la configurazione di base e fornisce vari esempi d'impego.
  
XferCommand = /usr/bin/wget -c --passive-ftp -c %u
+
===Usando powerpill-light (deprecato)===
  
Instead of putting <code>wget</code> parameters in {{Filename|/etc/pacman.conf}}, you can also modify the {{Filename|wget}} configuration file directly (the system-wide file is {{Filename|/etc/wgetrc}}, per user files are {{Filename|$HOME/.wgetrc}}.
+
[http://xyne.archlinux.ca/projects/pacman2aria2/ pacman2aria2] fornisce uno script chiamato "powerpill-light" che fu creato dopo l'abbandono dell'originale Powerpill. Ora che lo sviluppo è ripreso, powerpill-light è deprecato.
  
=== Using aria2 ===
+
===Usando wget===
  
[[aria2]] is a lightweight download utility with support for resumable and segmented HTTP/HTTPS and FTP downloads. [http://aria2.sourceforge.net/ aria2] allows for multiple and simultaneous HTTP/HTTPS and FTP connections to an Arch mirror, which should result in an increase in download speeds for both file and package retrieval.
+
Questa opzione è utile se si necessita di impostazioni per i proxy più avanzate rispetto a quelle native di pacman.
  
'''Note:''' Using aria2c in Pacman's XferCommand will '''not''' result in parallel downloads of multiple packages. Pacman invokes the XferCommand with a single package at a time and waits for it to complete before invoking the next. To download multiple packages in parallel, see the [[Improve_Pacman_Performance#Using_powerpill-light | powerpill-light]] section below.
+
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]}}:
  
==== Installation ====
+
XferCommand = /usr/bin/wget -c --passive-ftp -c %u
  
Download and install {{Package Official|aria2}} and its dependencies:
+
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}}).
  
# pacman -S aria2
 
  
==== Configuration ====
+
===Usando aria2===
  
Edit {{Filename|/etc/pacman.conf}} by adding the following line to the <code>[options]</code> section:
+
[[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.
  
<pre style='overflow:auto'>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</pre>
+
{{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 [[Improve_Pacman_Performance_(Italiano)#Usando_Powerpill | powerpill]].}}
  
==== Option Details ====
+
====Installazione====
  
; {{Codeline|/usr/bin/aria2c}}: The full PATH to the aria2 executable.
+
Si installino {{Pkg|aria2}} e relative dipendenze:
; {{Codeline|1=--allow-overwrite=true}}: Restart download if a corresponding control file does not exist. (Default: false)
+
; {{Codeline|-c, --continue}}: Continue downloading a partially downloaded file if a corresponding control file exists.
+
; {{Codeline|1=--file-allocation=none}}: Do not pre-allocate file space before download begins. (Default: prealloc) <b><sup>1</sup></b>
+
; {{Codeline|1=--log-level=error}}: Set log level to output errors only. (Default: debug)
+
; {{Codeline|1=-m2, --max-tries=2}}: Make 2 maximum attempts to download specified file(s) per mirror. (Default: 5)
+
; {{Codeline|1=--max-connection-per-server=2}}: Set a maximum of 2 connections to each mirror per file. (Default: 1)
+
; {{Codeline|1=--max-file-not-found=5}}: Force download to fail if a single byte is not received within 5 attempts. (Default: 0)
+
; {{Codeline|1=--min-split-size=5M}}: Only split the file if the size is larger than 2;5MB = 10MB. (Default: 20M)
+
; {{Codeline|--no-conf}}: Disable loading an {{Filename|aria2.conf}} file if it exists. (Default: {{Filename|~/.aria2/aria2.conf}})
+
; {{Codeline|1=--remote-time=true}}: Apply timestamps of the remote file(s) and apply them to the local file(s). (Default: false)
+
; {{Codeline|1=--summary-interval=60}}: Output download progress summary every 60 seconds. (Default: 60) <b><sup>2</sup></b>
+
; {{Codeline|1=-t5, --timeout=5}}: Set a 5 second timeout per mirror after a connection is established. (Default: 60)
+
; {{Codeline|-d, --dir}}: The directory to store the downloaded file(s) as specified by [[pacman|pacman]].
+
; {{Codeline|-o, --output}}: The output file name(s) of the downloaded file(s).
+
; {{Codeline|%o}}: Variable which represents the local filename(s) as specified by pacman.
+
; {{Codeline|%u}}: Variable which represents the download URL as specified by pacman.
+
  
==== Additional Notes ====
+
# pacman -S aria2
  
; <sup>1</sup> {{Codeline|1=--file-allocation=falloc}}: Recommended for newer file systems such as ext4 (with extents support), btrfs or xfs as it allocates large files (GB) almost instantly. Do not use falloc with legacy file systems such as ext3 as prealloc consumes approximately the same amount of time as standard allocation would while locking the aria2 process from proceeding to download.
+
====Configurazione====
  
;<sup>2</sup> {{Codeline|1=--summary-interval=0}}: Supresses download progress summary output and may improve overall performance. Logs will continue to be output according to the value specified in the {{Codeline|log-level}} option.
+
Si modifichi {{ic|/etc/pacman.conf}} aggiungendo la linea seguente nella sezione {{ic|[options]}}:
<!--
+
===Powerpill===
+
{{Warning|''Powerpill'' development has been officially discontinued: its latest version does not work with ''pacman>&#61;3.5''. See [https://bbs.archlinux.org/viewtopic.php?id&#61;115660].}}
+
'''''[http://xyne.archlinux.ca/old_projects/powerpill Powerpill]''''' is a wrapper for pacman that uses aria2 to download packages. Unlike the other aria2 solutions, powerpill uses '''simultaneous''' downloads for all files and segmented downloads only for larger files, which really makes the most of your bandwidth without wasting time splitting small files unnecessarily.
+
  
For more info, see the [[Powerpill]] wiki article.
+
{{bc|1=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}}
-->
+
  
=== Using powerpill-light ===
+
====Spiegazione delle opzioni====
[http://xyne.archlinux.ca/projects/pacman2aria2/ pacman2aria2] provides a script named "powerpill-light" that can be used as a partial replacement for powerpill. Although it isn't a complete wrapper as powerpill was, it supports the following just as powerpill did:
+
  
* parallel downloads
+
; {{ic|/usr/bin/aria2c}}: Il percorso completo all'eseguibile di aria2c.
* segmented downloads
+
; {{ic|1=--allow-overwrite=true}}: Riavvia un download se il corrispondente file di controllo non esiste. (Default: false)
* mirror retrieval with [[Reflector|Reflector]] to increase the number of parallel downloads
+
; {{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=--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=-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=-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|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=-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|-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|%u}}: Variabile che rappresenta l'URL di download, come specificato da pacman.
  
It is therefore just as fast as powerpill was at downloading packages.
+
====Note aggiuntive====
  
pacman2aria2 is available in the [https://aur.archlinux.org/packages.php?ID=47913 AUR] and in [http://xyne.archlinux.ca/repos/ Xyne's repo].
+
; <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.
  
==== Usage ====
+
; <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}}.
Invoke powerpill-light as you would invoke pacman for a sync operation, but without "-S". For example, to upgrade the system, instead of "pacman -Su", use
+
  
  powerpill-light -u
+
===Script per mirror pacget (aria2)===
  
To install gnome, instead of "pacman -S gnome", use
+
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.
  
  powerpill-light gnome
+
{{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.}}
  
=== Using airpac ===
+
{{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.}}
  
In a nutshell, [http://aur.archlinux.org/packages.php?ID=26118 airpac] is an aria2c wrapper for pacman. Unlike powerpill, which acts as a frontend to pacman, airpac serves as a backend downloader for pacman. On the other hand, however, it behaves similarly to powerpill, as far as downloading is concerned, since both use aria2c to actually download the files. Because it is a backend though, it cannot download multiple packages simultaneously as powerpill can.
+
{{hc|
 
+
/usr/bin/pacget|
Essentially, airpac is the Python implementation of the pacget script below. However, the main difference lies in the handling of aria2c output. airpac shows only the most relevant info, i.e., the download progress, although it currently doesn't use a progressbar (maybe in the near future). Also, airpac caches the db files so that they won't be downloaded for every <code>pacman -Sy</code>. On the downside, this breaks <code>pacman -Syy</code> since airpac has no way of knowing the options pacman is executed with. As a workaround, however, one can use <code>pacman -Sc</code> to delete the cached files in '''/var/lib/pacman/.airpac'''.
+
<nowiki>
 
+
The configuration file is located in '''/etc/airpac.conf'''. This is actually an aria2c config file. Because of this, the user can directly configure how aria2c is used by airpac without meddling with airpac's code. For more info about the available options, consult the aria2c manpage.
+
 
+
airpac also uses the ''Server Performance Profile'' feature of aria2c by default. The statistics file is located in '''/var/lib/airpac.stats'''. The default URI selector is ''adaptive''.
+
 
+
'''Usage in /etc/pacman.conf'''
+
XferCommand = /usr/bin/airpac %u %o
+
 
+
=== pacget (aria2) Mirror Script ===
+
 
+
This script will greatly improve the download speed for broadband users. It uses the servers in /etc/pacman.d/mirrorlist as mirrors in aria2. What happens is that aria2 downloads from multiple servers simultaneously which gives a huge boost in download speed.
+
 
+
Take note that you have to put 'exec' before /usr/bin/pacget in the XferCommand. This is needed so that when you terminate pacget or aria2 (with process id used by pacget), pacman would also terminate. This would prevent inconvenience because Pacman would not persist downloading a file when you tell it not to.
+
 
+
WARNING: You may experience some problems if the mirrors used are out-of-sync or are simply not up-to-date. Just use the [[Reflector]] script to generate a list of up-to-date and ''fast'' mirrors. Also, ftp.archlinux.org resolves to two IPs. You may want to choose only one of them and hard code ftp.archlinux.org and the chosen IP address to /etc/hosts.
+
 
+
'''/usr/bin/pacget'''
+
<pre style='overflow: auto'>
+
 
#!/bin/bash
 
#!/bin/bash
  
Line 189: Line 164:
  
 
exit $?
 
exit $?
</pre>
+
</nowiki>
 +
}}
  
'''/etc/pacget.conf'''
+
{{hc|
<pre>
+
/etc/pacget.conf|
 +
<nowiki>
 
# The log file
 
# The log file
 
log=/var/log/pacget.log
 
log=/var/log/pacget.log
 
# Number of servers to download from
 
# Number of servers to download from
 
split=5
 
split=5
 +
# Minimum file size that justifies a split, i.e. concurrent download (default 20M)
 +
min-split-size=1M
 
# Maximum download speed (0 = unrestricted)
 
# Maximum download speed (0 = unrestricted)
 
max-download-limit=0
 
max-download-limit=0
Line 205: Line 184:
 
# 'none' or 'falloc'
 
# 'none' or 'falloc'
 
file-allocation=none
 
file-allocation=none
</pre>
+
</nowiki>
 +
}}
 +
 
 +
Si salvi lo script in {{ic|/usr/bin/pacget}} e lo si renda eseguibile:
  
Save this script as /usr/bin/pacget.
 
 
  chmod 755 /usr/bin/pacget
 
  chmod 755 /usr/bin/pacget
This makes the script an executable
 
  
In /etc/pacman.conf, in the [options] section, the following needs to be added:
+
In {{ic|/etc/pacman.conf}}, è necessario aggiungere la seguente riga alla sezione {{ic|[options]}}:
 +
 
 
  XferCommand = exec /usr/bin/pacget %u %o
 
  XferCommand = exec /usr/bin/pacget %u %o
  
PS: If you use ftp.archlinux.org as the first server listed in your include files (/etc/pacman.d/*), some problems may occur when the mirrors you are using have not yet synced. To make great use of this script, choose a mirror (that syncs in a timely manner) that is more appropriate for you, then put that on top of the server lists. This is to prevent downloading only from ftp.archlinux.org when the mirrors have not yet synced. The rankmirrors script can be useful in this case.
+
{{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.}}
 
+
=== Using other applications ===
+
 
+
There are other downloading applications that you can use with Pacman. Here they are, and their associated XferCommand settings:
+
 
+
* <code>snarf</code>: <code>XferCommand = /usr/bin/snarf -N %u</code>
+
* <code>lftp</code>: <code>XferCommand = /usr/bin/lftp -c pget %u</code>
+
* <code>axel</code>: <code>XferCommand = /usr/bin/axel -n 2 -v -a -o %o %u</code>
+
 
+
== Choosing the fastest mirror ==
+
When downloading packages pacman uses the mirrors in the order they are in /etc/pacman.d/mirrorlist.The mirror which is at the top of the list by default however may not be the fastest for you.
+
 
+
'''Note''' This does not apply to [[Improve_Pacman_Performance#Using_powerpill-light | powerpill-light]], which connects to many servers simultaneously to increase the overall download speed. The speed of individual connections becomes less relevant, and powerpill-light can be configured to require minimum speeds per connection.
+
 
+
=== Choosing a local mirror ===
+
The simple way is to edit mirrorlist file by placing a local mirror at the top of the list. pacman will then use this mirror for preference.
+
 
+
Alternativley the pacman.conf file can be edited by placing a local mirror before the line sourcing the mirrorlist file, i.e. where it says "add your preferred servers here". It is safer if you use the same server for each repository.
+
 
+
=== Using rankmirrors ===
+
 
+
You can use [[Mirrors#List_by_speed|rankmirrors]] to rank pacman mirrors by their connection and opening speed.
+
  
=== Using Reflector ===
+
===Usando altre applicazioni===
  
You can also use [[Reflector|Reflector]] to retrieve a customized list of mirrors sorted by download speed.
+
Esistono altre applicazioni per il download utilizzabili con pacman. Vengono presentate di seguito, con il relativo {{ic|XferCommand}}:
  
=== After changing mirrors ===
+
* {{ic|snarf}}: {{ic|1=XferCommand = /usr/bin/snarf -N %u}}
 +
* {{ic|lftp}}: {{ic|1=XferCommand = /usr/bin/lftp -c pget %u}}
 +
* {{ic|axel}}: {{ic|1=XferCommand = /usr/bin/axel -n 2 -v -a -o %o %u}}
  
After changing your mirror it is a good idea to refresh the pacman database. Using two y's forces a download of a fresh copy of the master package list from the server even if they are thought to be up to date.
+
==Scelta del mirror più veloce==
  
# pacman -Syy
+
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]]
  
== Sharing packages over your LAN ==
+
==Condivisione dei pacchetti su rete LAN==
  
If you happen to run several Arch boxes on your LAN, you can share packages so that you can greatly decrease your download times. Keep in mind you should not share between different architectures (i.e. i686 and x86_64) or you'll get into troubles.
+
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.
  
See [[Pacman_Tips#Network_shared_pacman_cache]].
+
Si veda: [[pacman Tips#Network shared pacman cache]].

Revision as of 08:21, 20 July 2013

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 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:

# pacman -Sc && pacman-optimize

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 powerpill-light (deprecato)

pacman2aria2 fornisce uno script chiamato "powerpill-light" che fu creato dopo l'abbandono dell'originale Powerpill. Ora che lo sviluppo è ripreso, powerpill-light è deprecato.

Usando wget

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

Per utilizzare wget, lo si installi con pacman -S wget e poi si modifichi /etc/pacman.conf aggiungendo le seguenti linee alla sezione [options]:

XferCommand = /usr/bin/wget -c --passive-ftp -c %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.

Installazione

Si installino aria2 e relative dipendenze:

# pacman -S aria2

Configurazione

Si modifichi /etc/pacman.conf aggiungendo la linea seguente nella 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

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)1
--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: 5)
-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)2
-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.

Note aggiuntive

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.
2 --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 log-level.

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 /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 exec prima di /usr/bin/pacget in 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 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.
/usr/bin/pacget

#!/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 $?

/etc/pacget.conf

# 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

Si salvi lo script in /usr/bin/pacget e lo si renda eseguibile:

chmod 755 /usr/bin/pacget

In /etc/pacman.conf, è necessario aggiungere la seguente riga alla sezione [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

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.