Apt-file: ricerca all'interno dei pacchetti: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
m (verificata)
 
(18 versioni intermedie di 7 utenti non mostrate)
Riga 1: Riga 1:
==Introduzione==
{{APT
|precedente=apt-cache
|successivo=apt-mark
}}
{{Versioni compatibili|Jessie|Stretch|Buster}}
== Introduzione ==
Apt-file è un potente motore di ricerca in grado di indicare a quale pacchetto appartiene un determinato file; sembra una cosa da poco, ma non sempre è così, soprattutto quando si ha a che fare con le compilazioni da sorgenti o quando si ha bisogno di cercare un file appartenente a pacchetti non installati sul sistema.


In questo howto vedremo come sia possibile applicare una patch ad un pacchetto
== Installazione ==
ufficiale Debian.
Niente di più semplice, ovviamente con [[privilegi di amministrazione]]:
Prima di proseguire, per�, vedremo quando non � possibile farlo:
* il pacchetto non � stato distribuito anche in forma di sorgenti (capita per
qualche repository non ufficiale e per alcuni pecchetti uff. (una volta mi era
successo...).
 
 
==Preparazione del sistema==
 
Per prima cosa bisogna assicurarsi di avere, in '''/etc/apt/sources.list''',
le sorgenti per scaricare i pacchetti di tipo deb-src:
<pre>
#--CUT HERE--#
#per stable
deb-src http://ftp2.it.debian.org/debian/ stable main non-free contrib
deb-src http://non-us.debian.org/debian-non-US stable/non-US main contrib
non-free
 
#per testing
deb-src http://ftp2.it.debian.org/debian/ testing main non-free contrib
deb-src http://non-us.debian.org/debian-non-US testing/non-US main contrib
non-free
 
#per unstable
deb-src http://ftp2.it.debian.org/debian/ sid main non-free contrib
deb-src http://non-us.debian.org/debian-non-US sid/non-US main contrib non-free
#--CUT HERE--#
</pre>
ora aggiorniamo il contenuto del database dei pacchetti:
<pre>
<pre>
# apt-get update
# apt install apt-file
</pre>
</pre>


== Configurazione ==
Il file di configurazione, facoltativo e che va creato manualmente se si intendono modificare le impostazioni di default, è <code>/etc/apt/apt-file.conf</code>. Per maggiori informazioni si rimanda alla lettura del manuale (<code>man apt-file</code>).


==PROCEDIAMO==
== Utilizzo ==
 
Una volta installato, dobbiamo aggiornare la lista dei file e popolare la cache che <code>apt-file</code> utilizzerà per le sue ricerche. Per fare questo è sufficiente dare il seguente comando:
===METODO 1: `apt-get source && dpkg-buildpackage`===
 
Per scaricare i sorgenti, seguiamo questa procedura:
Per avere tutto in ordine, creiamo una cartella di lavoro
<pre>
<pre>
$ mkdir nomepacchetto && cd nomepacchetto
# apt-file update
</pre>
</pre>
così verranno scaricati i file "Packages.gz" per i vari [[repository]] presenti nel file <code>/etc/apt/sources.list</code> e contenenti la lista di tutti i pacchetti disponibili. Questi file, a seconda dei repository impostati, possono raggiungere dimensioni di svariati MByte<br/>
La directory che conterrà la cache di <code>apt-file</code> sarà:
;~/.cache/apt-file/:se il comando è stato eseguito da utente normale
;/var/cache/apt/apt/file/:se il comando è stato eseguito da [[root]], e sarà consultabile da tutti gli utenti del sistema


Ora possiamo scaricare i sorgenti:
Il comando non necessita di essere eseguito come root.
<pre>
$ apt-get source nomepacchetto
</pre>


cos� facendo, scaricheremo 3 file, che verranno decompressi in una cartella
Vediamo, ora, le principali funzioni.
(nomepacchetto-ver.sio.ne)


Ora possiamo entrare in questa cartella, scaricare la patch e applicarla:
=== Aggiornamento della cache ===
<pre>
<pre>
$ cd nomepacchetto-ver.sio.ne
# apt-file update
$ wget http://indirizzo/per/la/patch.patch
</pre>
</pre>
 
Aggiorna la cache di <code>apt-file</code> .<br/>
supponendo che la patch non sia compressa...
Questo è il comando che bisognerebbe eseguire sempre prima di ogni ricerca per fare in modo che quest'ultima possa operare su dati aggiornati. In alternativa è possibile creare un job di [[Cron]] che effettui l'aggiornamento della cache ad ogni avvio del sistema; per questo scopo è sufficiente eseguire il comando "crontab -e" da utente normale (o da root o da entrambi) e inserire le seguenti righe:
<pre>
<pre>
$ patch -p1 < patch.patch
# aggiornamento al boot della cache di apt-file
@reboot apt-file -N update
</pre>
</pre>


se � compressa:
=== Ricerca di un file ===
<pre>
<pre>
$ zcat patch.patch | patch -p1
$ apt-file search <testo>
</pre>
</pre>
 
Cerca e mostra tutti i file che hanno <testo> nel proprio nome, oltre al pacchetto in cui sono contenuti.<br/>
Una volta applicata la patch, se non riceviamo errori, siamo pronti a
Esempio:
compilare il pacchetto.
Per fare questo utilizzeremo un altro tool Debian: dpkg-buildpackage
<pre>
<pre>
# dpkg-buildpackage
$ apt-file search bin/nome-eseguibile
</pre>
</pre>
Questo comando troverà tutti i pacchetti che contengono file che cominciano per ''nome-eseguibile'' e che si trovano in una directory che finisce per bin (come <code>/bin/</code>, <code>/sbin/</code>, <code>/usr/bin</code>, <code>/usr/sbin</code>).


Il comando prover� a compilare il pacchetto, ed in caso di errori ci chieder�
=== Visualizzazione dei contenuti di un pacchetto ===
di sistemare le dipendenze (se l'errore � dovuto alla mancanza di alcune
librerie) elencando tutti i pacchetti necessari, installabili con un normale
<pre>
<pre>
# apt-get buid-dep 'nomepacchetto_da_installare'
$ apt-file list <nomepacchetto>
</pre>
</pre>
Mostra il contenuto di <nomepacchetto>.<br/>
Si noti che questo comando è molto simile a "dpkg -L <nomepacchetto>" tranne che per un aspetto non di poco conto: il pacchetto non deve necessariamente essere installato.<br/>
Esempio:
<pre>$ apt-file list apt</pre>
mostrerà il contenuto del pacchetto '''apt'''. L'opzione <code>--fixed-string</code> (abbreviata: <code>-F</code>) è implicita con questo comando, ma si può disabilitare con <code>--substring-match</code>, che se utilizzata mostrerà il contenuto di tutti i pacchetti che contengono la stringa ''apt'' nel loro nome.


una volta giunta a termine la compilazione, troveremo (nella cartella
=== Opzioni ===
nomepacchetto da noi creata) una serie di file .deb!
Tra le opzioni disponibili, ricordiamo quelle principali (di uso comune):
ora possiamo installarli:
; <code>--ignore-case | -i </code>: permette di effettuare ricerca case-insensitive;
<pre>
; <code>--fixed-string | -F</code>:utile per delimitare la ricerca solo al solo pattern effettivamente digitato;
# dpkg -i nomepacchetto_ver.sio.ne.deb
; <code>--package-only | -l</code>: mostra solo il nome del pacchetto, e non quello dei file, utile quando si esegue una ricerca usando un nome molto comune;
</pre>
; <code> --regexp | -x </code>: tratta come un pattern di una espressione regolare (in [[perl]] per la precisione, per maggiori informazioni si veda: <code>man pcrepattern</code>).
 
Bene, se non riceviamo errori...il pacchetto � installato.
 
 
===METODO 2: `apt-build`===
 
Prima di iniziare, � d'obbligo una introduzione su apt-build.
Questo tool � abbastanza giovane, e consente di compilare i pacchetti Debian
ottimizzandoli per la propria macchina. Durante l'installazione vengono poste
delle domande (tipo di processore, livello di ottimizzazione), e rispondendo
nel modo opportuno, sar� possibile compilare i pacchetti ottimizzandoli per la
propria macchina, cosa che, nel METODO 1 non avviene.
 
Apt-build ci mette a disposizione una opzione, '''--patch''', che consente di applicare delle patch al pacchetto da installare.
Vediamo, ora, come fare.
Scarichiamo la patch:
<pre>
$ wget http://indirizzo/per/la/patch.patch
</pre>
 
ora diamo il semplice comando:
<pre>
# apt-build -p 0 --patch patch.patch install 'pacchetto'
</pre>
 
ora mettiamoci comodi, armati di tazzona di caff� (rigorosamente marchiata con un bel Tux) e controlliamo a video mentre:
* vengono scaricate i pacchetti *-dev per la compilazione;
* viene aggiornato l'elenco dei pacchetti dei vari repository (usare l'opzione '''--noupdate''' per evitarlo);
* vengono scaricati i sorgenti del pacchetto;
* viene applicata la patch;
* inizia la compilazione del pacchetto:
* viene/vengono installato/i il/i pacchetto/i generato/i.
 
Bene, ora il pacchetto � installato nel vostro sistema!


{{Autori
|Autore=[[User:MaXeR|MaXeR]]
|Verificata_da=
:[[Utente:S3v|S3v]] 17:31, 7 giu 2013 (CEST)
:[[Utente:Ombra|Ombra]] 01:15, 12 gen 2016 (CET)
:[[Utente:HAL 9000|HAL 9000]] 15:19, 14 lug 2019 (CEST)
|Numero_revisori=3
}}


---- [[User:MaXeR|MaXeR]]
[[Categoria:Apt]]

Versione attuale delle 13:19, 14 lug 2019

APT
Arrow left.png

Gestori di pacchetti

Comandi utili

Configurazione del sistema

Altro

Arrow right.png



Debian-swirl.png Versioni Compatibili

Debian 8 "jessie"
Debian 9 "stretch"
Debian 10 "buster"

Introduzione

Apt-file è un potente motore di ricerca in grado di indicare a quale pacchetto appartiene un determinato file; sembra una cosa da poco, ma non sempre è così, soprattutto quando si ha a che fare con le compilazioni da sorgenti o quando si ha bisogno di cercare un file appartenente a pacchetti non installati sul sistema.

Installazione

Niente di più semplice, ovviamente con privilegi di amministrazione:

# apt install apt-file

Configurazione

Il file di configurazione, facoltativo e che va creato manualmente se si intendono modificare le impostazioni di default, è /etc/apt/apt-file.conf. Per maggiori informazioni si rimanda alla lettura del manuale (man apt-file).

Utilizzo

Una volta installato, dobbiamo aggiornare la lista dei file e popolare la cache che apt-file utilizzerà per le sue ricerche. Per fare questo è sufficiente dare il seguente comando:

# apt-file update

così verranno scaricati i file "Packages.gz" per i vari repository presenti nel file /etc/apt/sources.list e contenenti la lista di tutti i pacchetti disponibili. Questi file, a seconda dei repository impostati, possono raggiungere dimensioni di svariati MByte
La directory che conterrà la cache di apt-file sarà:

~/.cache/apt-file/
se il comando è stato eseguito da utente normale
/var/cache/apt/apt/file/
se il comando è stato eseguito da root, e sarà consultabile da tutti gli utenti del sistema

Il comando non necessita di essere eseguito come root.

Vediamo, ora, le principali funzioni.

Aggiornamento della cache

# apt-file update

Aggiorna la cache di apt-file .
Questo è il comando che bisognerebbe eseguire sempre prima di ogni ricerca per fare in modo che quest'ultima possa operare su dati aggiornati. In alternativa è possibile creare un job di Cron che effettui l'aggiornamento della cache ad ogni avvio del sistema; per questo scopo è sufficiente eseguire il comando "crontab -e" da utente normale (o da root o da entrambi) e inserire le seguenti righe:

# aggiornamento al boot della cache di apt-file
@reboot apt-file -N update

Ricerca di un file

$ apt-file search <testo>

Cerca e mostra tutti i file che hanno <testo> nel proprio nome, oltre al pacchetto in cui sono contenuti.
Esempio:

$ apt-file search bin/nome-eseguibile

Questo comando troverà tutti i pacchetti che contengono file che cominciano per nome-eseguibile e che si trovano in una directory che finisce per bin (come /bin/, /sbin/, /usr/bin, /usr/sbin).

Visualizzazione dei contenuti di un pacchetto

$ apt-file list <nomepacchetto>

Mostra il contenuto di <nomepacchetto>.
Si noti che questo comando è molto simile a "dpkg -L <nomepacchetto>" tranne che per un aspetto non di poco conto: il pacchetto non deve necessariamente essere installato.
Esempio:

$ apt-file list apt

mostrerà il contenuto del pacchetto apt. L'opzione --fixed-string (abbreviata: -F) è implicita con questo comando, ma si può disabilitare con --substring-match, che se utilizzata mostrerà il contenuto di tutti i pacchetti che contengono la stringa apt nel loro nome.

Opzioni

Tra le opzioni disponibili, ricordiamo quelle principali (di uso comune):

--ignore-case | -i
permette di effettuare ricerca case-insensitive;
--fixed-string | -F
utile per delimitare la ricerca solo al solo pattern effettivamente digitato;
--package-only | -l
mostra solo il nome del pacchetto, e non quello dei file, utile quando si esegue una ricerca usando un nome molto comune;
--regexp | -x
tratta come un pattern di una espressione regolare (in perl per la precisione, per maggiori informazioni si veda: man pcrepattern).




Guida scritta da: MaXeR Swirl-auth80.png Debianized 80%
Estesa da:
Verificata da:
S3v 17:31, 7 giu 2013 (CEST)
Ombra 01:15, 12 gen 2016 (CET)
HAL 9000 15:19, 14 lug 2019 (CEST)

Verificare ed estendere la guida | Cos'è una guida Debianized