<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mia mamma usa Linux! &#187; dpkg</title>
	<atom:link href="http://www.miamammausalinux.org/category/debian/dpkg/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.miamammausalinux.org</link>
	<description>Perché niente è impossibile da capire... Se lo spieghi bene !</description>
	<lastBuildDate>Mon, 02 Jan 2012 11:31:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Approx: Risparmiare banda con i proxy apt</title>
		<link>http://www.miamammausalinux.org/2009/05/approx-risparmiare-banda-con-i-proxy-apt/</link>
		<comments>http://www.miamammausalinux.org/2009/05/approx-risparmiare-banda-con-i-proxy-apt/#comments</comments>
		<pubDate>Fri, 15 May 2009 15:39:45 +0000</pubDate>
		<dc:creator>Marco Bonetti</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[dpkg]]></category>
		<category><![CDATA[Utility]]></category>
		<category><![CDATA[Approx]]></category>
		<category><![CDATA[Apt Proxy]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.miamammausalinux.org/?p=629</guid>
		<description><![CDATA[Debian e le distribuzioni da lei derivate, utilizzano l&#8217;accoppiata apt-get e dpkg per installare e mantenere aggiornati i programmi. Mentre dpkg si preoccupa di lavorare esclusivamente in locale, scompattanto i pacchetti ed assicurandosi che la loro installazione sia portata a buon fine, è apt-get il vero cavallo da lavoro: si preoccupa di mantenere aggiornati gli [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.miamammausalinux.org/wp-content/uploads/2009/01/linux.png" alt="linux" width="85" height="100" class="alignnone size-full wp-image-292" /></p>
<p>Debian e le distribuzioni da lei derivate, utilizzano l&#8217;accoppiata apt-get e dpkg per installare e mantenere aggiornati i programmi. Mentre dpkg si preoccupa di lavorare esclusivamente in locale, scompattanto i pacchetti ed assicurandosi che la loro installazione sia portata a buon fine, è apt-get il vero cavallo da lavoro: si preoccupa di mantenere aggiornati gli indici per il reperimento dei pacchetti, calcola e risolve le dipendenze al momento dell&#8217;installazione di un nuovo programma e si preoccupa di scaricare il deb dai repository remoti.<br />
Quest&#8217;ultima azione, il download, può incidere notevolmente sulle performance della rete, specialmente se si è scelto di installare diversi pacchetti (si pensi agli effetti di un <em>apt-get install ubuntu-desktop</em> sopra un Ubuntu base system) e se questa operazione viene effettuata da più di un computer della stessa rete.</p>
<p>Una prima soluzione potrebbe essere quella di tenere un repository locale e scaricare i pacchetti necessari da quel repository, sfortunamente questa soluzione richiede un notevole consumo di spazio ed ogni giorno è necessario scaricare gli aggiornamenti al repository anche se alcuni o tutti dei programmi scaricati non sono necessari.<br />
Per ovviare a questi effetti entrano in gioco i proxy apt: risolvono il problema di consumo di banda tenendo nella cache locale i pacchetti richiesti e sono meglio della presenza di un repository personale in quanto non si devono sprecare spazio e banda per avere tutti i pacchetti salvati nella cache in ogni momento.<br />
La soluzione più semplice per installare un proxy apt è quella di eleggere, se già presente, il proxy della rete a fare anche da proxy per i deb scaricati: da un lato si ha un immediato vantaggio di configurazione, con poche righe uno squid è in grado di tenere in cache pure i pacchetti dei programmi, dall&#8217;altro si hanno delle limitazioni sulla flessibilità di configurazione e sui protocolli supportati per il download dai repository.<br />
Per superare anche queste limitazioni è sufficiente utilizzare un programma dedicato al caching dei deb, quello storico è apt-proxy seguito, in ordine cronologico, da approx, apt-cacher e apt-cacher-ng. In questo articolo parleremo dell&#8217;utilizzo di approx perchè è il più vecchio proxy apt funzionante, in quanto il povero apt-proxy mostra i segni dell&#8217;età non risultando affatto scalabile su larga scala.<br />
Il comportamento dei proxy apt è molto semplice: vengono configurati per fornire la cache di alcuni repository, quando un client li contatta e richiede un pacchetto, i proxy controllano la presenza del pacchetto nella loro cache, se questo manca verrà scaricato dal repository e passato al client altrimenti verrà servita la copia locale, risultando così estremamente veloce e risparmiando un download extra inutile. L&#8217;installazione di approx è immediata:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">root@proxy:~# apt-get install approx</pre></div></div>

<p>una volta finito il processo, si deve editare il file <em>/etc/default/approx</em> solamente nel caso sia necessario fornire al nostro proxy apt&#8230; un proxy per uscire! Per esempio:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Default settings for approx, included by the /etc/init.d/approx shell script</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Uncomment and edit this definition to have approx use a proxy server</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">http_proxy</span>=il-mio-proxy:porta</pre></div></div>

<p>A questo punto si può procedere alla vera configurazione di approx, il file <em>/etc/approx/approx.conf</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Here are some examples of remote repository mappings.</span>
<span style="color: #666666; font-style: italic;"># See http://www.debian.org/mirror/list for mirror sites.</span>
&nbsp;
debian          http:<span style="color: #000000; font-weight: bold;">//</span>mi.mirror.garr.it<span style="color: #000000; font-weight: bold;">/</span>mirrors<span style="color: #000000; font-weight: bold;">/</span>debian
security        http:<span style="color: #000000; font-weight: bold;">//</span>security.debian.org<span style="color: #000000; font-weight: bold;">/</span>debian-security
volatile        http:<span style="color: #000000; font-weight: bold;">//</span>volatile.debian.org<span style="color: #000000; font-weight: bold;">/</span>debian-volatile
&nbsp;
<span style="color: #666666; font-style: italic;"># The following are the default parameter values, so there is</span>
<span style="color: #666666; font-style: italic;"># no need to uncomment them unless you want a different value.</span>
<span style="color: #666666; font-style: italic;"># See approx.conf(5) for details.</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#$interface      any</span>
<span style="color: #007800;">$port</span>          <span style="color: #000000;">80</span>
<span style="color: #666666; font-style: italic;">#$max_wait      10</span>
<span style="color: #666666; font-style: italic;">#$max_rate      unlimited</span>
<span style="color: #666666; font-style: italic;">#$user          approx</span>
<span style="color: #666666; font-style: italic;">#$group         approx</span>
<span style="color: #666666; font-style: italic;">#$syslog         daemon</span>
<span style="color: #666666; font-style: italic;">#$pdiffs        true</span>
<span style="color: #666666; font-style: italic;">#$verbose        false</span>
<span style="color: #666666; font-style: italic;">#$debug         false</span></pre></div></div>

<p>La prima sezione specifica a quale nome faranno riferimento i repository proxati, la sintassi è molto semplice:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">nome_repo      url_repo</pre></div></div>

<p>così facendo, all&#8217;indirizzo <strong>http://proxy/nome_repo</strong> risponderà la cache di <strong>url_repo</strong> o, come accade nella prima riga del nostro file di configurazione, <strong>http://proxy/debian/</strong> è una cache per <strong>http://mi.mirror.garr.it/mirrors/debian</strong>.<br />
A questo punto basta modificare il <em>/etc/apt/sources.list</em> delle macchine della propria rete e del proxy stesso, utilizzando i nuovi url:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">http:<span style="color: #000000; font-weight: bold;">//</span>proxy<span style="color: #000000; font-weight: bold;">/</span>debian<span style="color: #000000; font-weight: bold;">/</span>   lenny main contrib non-free
http:<span style="color: #000000; font-weight: bold;">//</span>proxy<span style="color: #000000; font-weight: bold;">/</span>security<span style="color: #000000; font-weight: bold;">/</span>   lenny<span style="color: #000000; font-weight: bold;">/</span>updates main contrib non-free
http:<span style="color: #000000; font-weight: bold;">//</span>proxy<span style="color: #000000; font-weight: bold;">/</span>volatile<span style="color: #000000; font-weight: bold;">/</span>   lenny<span style="color: #000000; font-weight: bold;">/</span>volatile main contrib non-free</pre></div></div>

<p>La seconda sezione, invece, si occupa della gestione delle opzioni di configurazione del comportamento di approx stesso, nel nostro esempio abbiamo configurato come porta di ascolto la 80, al contrario del default storico di apt-proxy: la 9999. Se non avessimo cambiato la configurazione, il proxy avrebbe comunque funzionato ma nei client si doveva configurare esplicitamente la porta di ascolto del server usando, per esempio, una riga come <strong>http://proxy:9999/debian/   lenny main contrib non-free</strong>.<br />
Il proxy è ora in piedi, sta venendo utilizzato dai client e possiamo anche dimenticarci della sua presenza! Se però vogliamo provare a verificare manualmente il suo comportamento, approx ci fornisce due ulteriori programmi che vengono usati esclusivamente da cron per mantenere in forma il proxy ma che il sistemista curioso può provare a lanciare manualmente.<br />
Il primo programma è <strong>update_approx</strong> che viene schedulato come giornaliero al momento dell&#8217;installazione, questo programma si preoccupa di aggiornare la lista e le versioni dei programmi reperibili dai repository remoti.<br />
Il secondo è <strong>gc_approx</strong>, il garbage collector: come dice il nome, questo programma si preoccupa di tenere pulita la cache di approx, eliminando i pacchetti superfli e non più disponibili dai repository remoti. Al momento dell&#8217;installazione questo programma viene schedulato come settimanale.<br />
Credo che valga veramente la pena installare approx o un altro proxy apt: il risparmio di banda è notevole già da quando si utilizzano solo due macchine e la vostra connessione vi ringrazierà <img src='http://www.miamammausalinux.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.miamammausalinux.org/2009/05/approx-risparmiare-banda-con-i-proxy-apt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DPKG: Panoramica ed opzioni particolari</title>
		<link>http://www.miamammausalinux.org/2009/03/dpkg-panoramica-ed-opzioni-particolari/</link>
		<comments>http://www.miamammausalinux.org/2009/03/dpkg-panoramica-ed-opzioni-particolari/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 16:38:24 +0000</pubDate>
		<dc:creator>Francesco Pedrini</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[dpkg]]></category>
		<category><![CDATA[Package management]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.miamammausalinux.org/?p=441</guid>
		<description><![CDATA[Sulla scia del precedente articolo di Raoul Scarazzini &#8220;RPM: Panoramica ed opzioni particolari&#8221;, ho deciso di ampliare il discorso e proporre qui una panoramica di DPKG, il package manager nato e progettato per Debian e usato da tutte le sue derivate (Ubuntu, Mepis, Knoppix e tante altre). Stati dei pacchetti Prima di addentrarci nella spiegazione [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.miamammausalinux.org/wp-content/uploads/2009/03/debian.png" alt="debian" title="debian" width="100" height="123" class="alignnone size-full wp-image-490" /></p>
<p>Sulla scia del precedente articolo di Raoul Scarazzini <a href="http://www.miamammausalinux.org/2009/01/rpm-panoramica-ed-opzioni-particolari/">&#8220;RPM: Panoramica ed opzioni particolari&#8221;</a>, ho deciso di ampliare il discorso e proporre qui una panoramica di DPKG, il package manager nato e progettato per Debian e usato da tutte le sue derivate (Ubuntu, Mepis, Knoppix e tante altre).</p>
<p><strong>Stati dei pacchetti</strong></p>
<p>Prima di addentrarci nella spiegazione delle numerose opzioni di dpkg, è necessario introdurre il concetto di &#8220;stato&#8221; di un pacchetto.</p>
<p>Su Debian, non ci si limita ad avere i classici due stati per un pacchetto &#8220;non installato&#8221; ed &#8220;installato&#8221;, sarebbe troppo semplice e semplicistico!</p>
<p>La necessità di avere diversi stati è data dal fatto che l&#8217;installazione di un pacchetto non può essere un&#8217;operazione atomica (cioè che viene eseguita tutta), ma si compone di varie fasi, dalla decompressione del pacchetto deb (che è un file compresso in formato &#8216;ar&#8217;) fino al lancio degli script contenuti nel pacchetto necessari alla corretta installazione.</p>
<p>Di seguito l&#8217;elenco dei possibili stati con una loro spiegazione sommaria:</p>
<ul>
<li><em>not-installed</em>: il più semplice, lo stato di un pacchetto che non è ancora stato installato&#8230;</li>
<li><em>half-installed</em>: l&#8217;installazione del pacchetto è iniziata ma per qualche motivo non è stata completata (errori vari oppure interruzione del processo da parte dell&#8217;utente)</li>
<li><em>unpacked</em>: il pacchetto è stato correttamente decompresso e i suoi file sono stati posizionati nelle varie directory di destinazione, ma la configurazione del pacchetto non è ancora avvenuta</li>
<li><em>half-configured</em>: il pacchetto ha già raggiunto lo stato di &#8220;unpacked&#8221;, ed è iniziata la fase di configurazione che non è giunta a termine (anche in questo caso per colpa di errori vari o a causa dell&#8217;interruzione da parte dell&#8217;utente)</li>
<li><em>triggers-awaited</em>: il pacchetto è installato e configurato, ma sta attendendo l&#8217;esecuzione dei &#8216;trigger&#8217; di un altro pacchetto. I &#8216;Trigger&#8217; di dpkg sono un modo per posticipare l&#8217;esecuzione di alcune operazioni comuni, pensate ad esempio al lancio del comando &#8216;ldconfig&#8217;, che deve essere lanciato dopo l&#8217;installazione di un pacchetto che contiene librerie&#8230; Un trigger su ldconfig è utile, nel caso di installazione di molti pacchetti, per eseguire l&#8217;operazione solo una volta al termine dell&#8217;installazione di tutti i pacchetti, anzichè lanciare ldconfig al termine dell&#8217;installazione di ogni pacchetto&#8230; il risparmio di tempo e di risorse è notevole!</li>
<li><em>trigger-pending</em>: i trigger del pacchetto sono in fase di esecuzione</li>
<li><em>installed</em>: il pacchetto è stato decompresso, configurato e &#8216;triggerato&#8217;, è finalmente disponibile per il sistema.</li>
</ul>
<p>Oltre agli stati dei pacchetti bisogna distinguere anche lo &#8216;Stato di selezione dei pacchetti&#8217; e le &#8216;Flag dei pacchetti&#8217;;</p>
<p><strong>Stato di Selezione Dei Pacchetti</strong></p>
<p>Dpkg lavora su collezioni di pacchetti, e ne processa uno alla volta, lo &#8216;seleziona&#8217; appunto. Ogni pacchetto che deve venire processato ha uno stato target, al termine del lavoro di dpkg si spera che il pacchetto possa essere lasciato nello stato desiderato. Gli stati di selezione dei pacchetti sono tre:</p>
<ul>
<li><em>install</em>: il pacchetto è stato selezionato per essere installato, al termine dell&#8217;operazione il suo stato sarà &#8220;installed&#8221;</li>
<li><em>deinstall</em>: il pacchetto è stato selezionato per essere rimosso dal sistema, verranno rimossi tutti i suoi files tranne i file di configurazione posti in /etc</li>
<li><em>purge</em>: il pacchetto è stato selezionato per la rimozione completa dal sistema, verranno rimossi anche i file di configurazione posti in /etc</li>
</ul>
<p><strong>Flag dei pacchetti</strong></p>
<p>Una volta che un pacchetto risulta in stato &#8216;<em>installed</em>&#8216;può avere due flags, che contraddistinguono in maniera più particolare ciò che dpkg deve fare con lui:</p>
<ul>
<li><em>hold</em>: il pacchetto è installato, ma non viene più gestito da dpkg, deve rimanere così com&#8217;è. L&#8217;unica maniera per far eseguire a dpkg operazioni su quel pacchetto è usare l&#8217;opzione &#8211;force-hold</li>
<li><em>reinst-required</em>: il pacchetto è rovinato (sono stati cancellati dei file oppure la rimozione non è andata a buon fine) e deve per tanto essere reinstallato. I pacchetti con questa flag non possono essere rimossi senza specificare l&#8217;opzione &#8211;force-remove-reinstreq</li>
</ul>
<p><strong>Operazioni comuni con i pacchetti DEB</strong></p>
<p>E siamo finalmente arrivati alle operazioni più comuni che si fanno con dpkg&#8230;</p>
<p><strong>Interrogazioni sul database di DPKG</strong></p>
<p>Per ottenere la lista di tutti i pacchetti (in qualsiasi stato) presenti sul sistema è sufficiente lanciare dpkg passando l&#8217;opzione &#8216;-l&#8217;, che produrrà un output simile al seguente</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ dpkg -l
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name           Version        Description
+++-==============-==============-============================================
ii  adduser        3.110          add and remove users and groups
ii  aircrack-ng    1:1.0~rc1-2    wireless WEP/WPA cracking utilities
ii  akregator      4:3.5.9-5      RSS feed aggregator for KDE
ii  alsa-base      1.0.17.dfsg-4  ALSA driver configuration files
ii  alsa-tools     1.0.16-2       Console based ALSA utilities for specific ha
ii  alsa-utils     1.0.16-2       ALSA utilities
...
ii  zlib1g         1:1.2.3.3.dfsg compression library - runtime
ii  zlib1g-dev     1:1.2.3.3.dfsg compression library - development
ii  zsh            4.3.9-1        A shell with lots of features</pre></div></div>

<p>A parte l&#8217;intestazione iniziale che serve giusto a ricordare gli stati possibili per i pacchetti, la parte interessante è l&#8217;elenco, andiamo ad analizzare la struttura dell&#8217;output:</p>
<p>La prima colonna mostra appunto lo stato dei pacchetti, &#8216;ii&#8217; identifica appunto i pacchetti installati, è lo stato più comune nell&#8217;output di dpkg.</p>
<p>Un altro stato che è facile incontrare è lo stato &#8216;rc&#8217;, che identifica i pacchetti che sono stati disinstallati, tali pacchetti non sono più presenti sul sistema, ma vengono mantenuti tutti i file di configurazione.</p>
<p>Quello che identifichiamo come &#8216;prima colonna&#8217; identifica in realtà due dati, il primo è lo stato <em>desiderato</em>, cioè cosa è stato chiesto dall&#8217;utente ed è il primo carattere, il secondo è lo stato <em>effettivo</em> del pacchetto sul sistema.</p>
<p>Ad esempio quando un pacchetto è marcato come &#8216;<em>ii</em>&#8216;, significa che l&#8217;installazione è stata richiesta dall&#8217;utente e che esso è effettivamente installato, mentre un pacchetto &#8216;<em>rc</em>&#8216; è stato rimosso, ma sono rimasti i file di configurazione (cioè non è stata richiesta un&#8217;operazione di &#8216;purge&#8217;).</p>
<p>La seconda colonna invece indica il nome del pacchetto, la terza la versione di tale pacchetto e l&#8217;ultima la descrizione breve associata ad ogni pacchetto.</p>
<p>Per ottenere invece, la lista dei pacchetti installati possiamo usare il seguente comando:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ dpkg --get-selections | awk '/tinstall$/</pre></div></div>

<p>La lista generata dall&#8217;opzione <em>&#8211;get-selections</em> è comoda anche per replicare un sistema su un&#8217;altro, l&#8217;operazione è abbastanza semplice:</p>
<p>Sul sistema sorgente:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ dpkg --get-selections &gt; package_list
scp package_list user@target:</pre></div></div>

<p>Sul sistema di destinazione:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ dpkg --set-selection&lt; package_list
apt-get dselect-upgrade</pre></div></div>

<p>In questo modo, apt (il principale frontend a dpkg, che si occupa di scaricare e risolvere le dipendenze dei vari pacchetti) andrà a cercare la lista di pacchetti da scaricare non sullo standard input ma direttamente sul database di dpkg.</p>
<p>Per ottenere informazioni su un pacchetto installato è disponibile l&#8217;opzione -p:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ dpkg -p coreutils
Package: coreutils
Essential: yes
Priority: required
Section: utils
Installed-Size: 10368
Maintainer: Michael Stone &lt;mstone@debian.org&gt;
Architecture: powerpc
Version: 6.10-6
Replaces: debianutils (&lt;= 2.3.1), dpkg (&lt;&lt; 1.13.2), fileutils, shellutils, stat, textutils
Provides: fileutils, shellutils, textutils
Pre-Depends: libacl1 (&gt;= 2.2.11-1), libc6 (&gt;= 2.7-1), libselinux1 (&gt;= 2.0.59)
Conflicts: stat
Size: 3649670
Description: The GNU core utilities
 This package contains the essential basic system utilities.
 .
 Specifically, this package includes:
 basename cat chgrp chmod chown chroot cksum comm cp csplit cut date dd df dir
 dircolors dirname du echo env expand expr factor false fmt fold groups head
 hostid id install join link ln logname ls md5sum mkdir mkfifo mknod mv nice nl
 nohup od paste pathchk pinky pr printenv printf ptx pwd readlink rm rmdir
 sha1sum seq shred sleep sort split stat stty sum sync tac tail tee test touch
 tr true tsort tty uname unexpand uniq unlink users vdir wc who whoami yes</pre></div></div>

<p>Per ottenere invece la lista dei files contenuti all&#8217;interno di un pacchetto installato è possibile usare l&#8217;opzione -L:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ dpkg -L coreutils
/.
/bin
/bin/cat
/bin/chgrp
/bin/chmod
/bin/chown
/bin/cp
/bin/date
...
/usr/share/locale/vi/LC_TIME/coreutils.mo
/usr/share/locale/zh_CN/LC_TIME/coreutils.mo
/usr/share/locale/zh_TW/LC_TIME/coreutils.mo
/usr/bin/touch
/usr/bin/md5sum.textutils</pre></div></div>

<p>Nel caso invece si disponga di un pacchetto deb non installato è possibile usare l&#8217;opzione -c:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ dpkg -c /var/cache/apt/archive/coreutils_6.10-6_powerpc.deb
drwxr-xr-x root/root         0 2008-04-04 17:08 ./
drwxr-xr-x root/root         0 2008-04-04 17:08 ./bin/
-rwxr-xr-x root/root     20780 2008-04-04 17:08 ./bin/cat
-rwxr-xr-x root/root     44992 2008-04-04 17:08 ./bin/chgrp
-rwxr-xr-x root/root     40596 2008-04-04 17:08 ./bin/chmod
-rwxr-xr-x root/root     47060 2008-04-04 17:08 ./bin/chown
...
lrwxr-xr-x root/root         0 2008-04-04 17:08 ./usr/share/locale/vi/LC_TIME/coreutils.mo -&gt; ../LC_MESSAGES/coreutils.mo
lrwxr-xr-x root/root         0 2008-04-04 17:08 ./usr/share/locale/zh_CN/LC_TIME/coreutils.mo -&gt; ../LC_MESSAGES/coreutils.mo
lrwxr-xr-x root/root         0 2008-04-04 17:08 ./usr/share/locale/zh_TW/LC_TIME/coreutils.mo -&gt; ../LC_MESSAGES/coreutils.mo
lrwxr-xr-x root/root         0 2008-04-04 17:08 ./usr/bin/touch -&gt; /bin/touch
lrwxr-xr-x root/root         0 2008-04-04 17:08 ./usr/bin/md5sum.textutils -&gt; md5sum</pre></div></div>

<p><strong>Installazione e aggiornamento di un pacchetto</strong></p>
<p>Per l&#8217;installazione di un pacchetto scaricato localmente è possibile utilizzare l&#8217;opzione -i (o &#8211;install):</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ dpkg -i /var/cache/apt/archives/coreutils_6.10-6_powerpc.deb
(Reading database ... 259576 files and directories currently installed.)
Preparing to replace coreutils 6.10-6 (using .../coreutils_6.10-6_powerpc.deb) ...
Unpacking replacement coreutils ...
Setting up coreutils (6.10-6) ...
Processing triggers for man-db ...</pre></div></div>

<p>Nel caso di aggiornamento di un pacchetto precedentemente installato, dpkg si occuperà da solo di rimuovere la versione più vecchia e sovrascriverla con la nuova versione (o con la stessa versione nel caso di una reinstallazione, come nel caso precedente).</p>
<p>Nel caso si vogliano installare ricorsivamente i pacchetti contenuti in una struttura di directory è possibile usare l&#8217;opzione -R ( o &#8211;recursive) passando come parametro il path di tale directory, in questo modo dpkg eseguirà l&#8217;operazione ricorsivamente su tutti i file contenuti all&#8217;interno della dir:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">dpkg -Ri /var/cache/apt/archives</pre></div></div>

<p><strong>Rimozione di un pacchetto</strong></p>
<p>Dpkg mette a disposizione due metodi per rimuovere i pacchetti: la semplice rimozione che rimuove tutti i file del pacchetto tranne che la configurazione nelle directory di sistema (quindi in /etc) e il &#8216;<em>purge</em>&#8216; del pacchetto, che elimina qualsiasi traccia del pacchetto, compresi i file di configurazione globali. Ovviamente tutti i file creati dalle varie applicazioni nelle home directory di utenti non verranno toccati.</p>
<p>Per rimuovere semplicemente un pacchetto bisogna usare l&#8217;opzione -r (o &#8211;remove):</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">dpkg -r alsa-utils</pre></div></div>

<p>Per purgare un pacchetto invece si utilizza l&#8217;opzione -P (o &#8211;purge):</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">dpkg -P alsa-utils</pre></div></div>

<p><strong>Risoluzione delle dipendenze</strong></p>
<p>Dpkg non è mai stato progettato per risolvere in autonomia le dipendenze, l&#8217;unica cosa che è in grado di fare è verificare se esse sono soddisfatte, mentre la risoluzione è affidata a tool di più alto livello come Apt o Aptitude. Questi tool oltre a risolvere le dipendenze si occupano anche di scaricare i file dai repository ufficiali di Debian (o della distribuzione derivata, come Ubuntu).</p>
<p>Apt fornisce un wrapper per quasi tutte le opzioni di dpkg, le più comuni sono comunque quelle di ricerca, installazione e rimozione:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ apt-get install coreutils  #installa il pacchetto specificato
$ apt-get instal --reinstall coreutils  #reinstalla il pacchetto specificato
&nbsp;
$ apt-get remove coreutils  #rimuove il pacchetto specificato
$ apt-get remove --purge coreutils  #rimuove il pacchetto specificato e ne effettua il purge
&nbsp;
$ apt-cache search coreuti  #cerca tutti i pacchetti il cui nome è simile a 'coreuti'
$ apt-cache show coreutils  #mostra le informazioni relative al pacchetto coreutils</pre></div></div>

<p><strong>Estrazione di un pacchetto</strong></p>
<p>Con dpkg è anche possibile estrarre un pacchetto senza installarlo, giusto a scopo di analisi, si deve usare l&#8217;opzione -x (o &#8211;extract):</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ dpkg -x /var/cache/apt/archives/coreutils_6.10-6_powerpc.deb directory_target</pre></div></div>

<p>All&#8217;interno di &#8216;directory_target&#8217; sarà presente tutta la struttura del pacchetto deb.</p>
<p>È anche possibile estrarre un singolo file dal pacchetto utilizzando l&#8217;opzione &#8211;fsys-tarfile, che fa produrre a dpkg l&#8217;output sotto forma di tarfile, una volta ottenuto quel file è possibile estrarre tutto grazie al comando tar:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ dpkg --fsys-tarfile /var/cache/apt/archives/coreutils_6.10-6_powerpc.deb | tar -tvf -</pre></div></div>

<p><strong>Conclusioni</strong></p>
<p>Ciò che è stato illustrato in questa panoramica corrisponde solo alla punta dell&#8217;iceberg delle potenzialità di dpkg, che tra le varie cose è anche in grado di creare da solo pacchetti .deb (a differenza di rpm che si appoggia a tool come rpmbuild). Per una lista completa ed esauriente di tutte le opzioni e le possibilità offerte da dpkg consiglio la lettura del <em>fine manual</em> di dpkg.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.miamammausalinux.org/2009/03/dpkg-panoramica-ed-opzioni-particolari/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

