APTsumma

Transcript

APTsumma
APTsumma
December 13, 2009
Introduzione all’ Apt System - [email protected]
Introduzione all’ Apt System
Da [email protected].
Vai a: navigazione, ricerca
Indice
• 1 Introduzione
• 2 Elenco comandi principali
– 2.1 Installazione, Rimozione, Aggiornamento
– 2.2 Ricerca e Informazioni sui pacchetti
– 2.3 Gestione delle fonti (o repository)
– 2.4 Pacchetti sorgenti e compilazione
– 2.5 Altro
• 3 Link
Introduzione
L’ apt-system creato dagli sviluppatori di debian un insieme di script che si
appoggiano al comando dpkg allo scopo di snellire/agevolare la gestione di pacchetti e dipendenze nei sistemi Debian GNU/Linux. Notoriamente chi prende
confidenza con debian difficilmente sar tentato di cambiare distribuzione, e
questo anche grazie a questo splendido set di tools.
Il sistema APT (Advanced Packaging Tool) permette di installare qualsiasi
programma gestendo in maniera automatica le dipendenze. Ma anche in grado
di fornire una lista di pacchetti consigliati, e di pacchetti suggeriti. Pu rimuovere un programma conservandone i file di configurazione, oppure eliminandolo
totalmente. Pu mostrare la descrizione di ogni pacchetto o ricercare quale pacchetto contiene una certa parola chiave nella descrizione. Pu aggiornare in
1
blocco l’intero sistema usando varie politiche di aggiornamento. Pu installare i
sorgenti di un pacchetto e gestire le dipendenze necessarie alla compilazione. E
molto altro ancora. Nonostante la sua complessit usare l’APT molto semplice
e intuitivo una volta imparati i comandi basilari.
Per chi si avvicina per la prima volta a debian o per chi preferisce una via
totalmente grafica per la gestione dei pacchetti si consiglia di usare Synaptic
(che non altro che una interfaccia grafica costruita sulle basi dell’APT). Il pi
potente strumento grafico per la gestione dei pacchetti (anche se l’interfaccia a
caratteri) rimane comunque Aptitude.
Elenco comandi principali
Lungi dall’ essere completa, questa brevissima panoramica ha lo scopo di fornire
un piccolo vademecum per mantenere in forma il nostro sistema operativo senza
far ricorso a tools grafici che, nella maggior parte dei casi, non hanno la necessaria ”precisione”. Vediamo brevemente i principali comandi (ovviamente
dovete essere root):
Installazione, Rimozione, Aggiornamento
dpkg -i nome-pachetto.deb installa un pacchetto debian gi scaricato e presente nella directory corrente.
apt-get install [pacchetto1, pacchetto2, pacchettoN, ... ] il comando scarica e installa/aggiorna i pacchetti indicati, risolvendo le dipendenze.
apt-get remove [pacchetto1, pacchetto2, pacchettoN, ... ] e’ l’ esatto opposto del comando precedente, rimuove i pacchetti indicati.
aptitude purge [pacchetto1, pacchetto2, pacchettoN, ... ] rimuove i pacchetti indicati ed elimina anche i file di configurazione.
apt-get update aggiorna la lista dei pacchetti e le relative informazioni (versione disponibile, descrizione, ecc... ).
apt-get upgrade aggiorna i pacchetti installati sul nostro sistema (se sono
disponibili versione piu’ recenti). Non installa nuovi pacchetti.
apt-get dist-upgrade simile al precedente, ma aggiorna tutti i pacchetti anche a costo di installare nuovi pacchetti e rimuoverne di presenti, per
soddisfare le dipendenze.
apt-get install [pacchetto -s] simula (stampando l’output) il processo di installazione di un pacchetto. Utili per controllare se il paccheto che stiamo
installando/aggiornando modifichera’ altri pacchetti da noi installati.
Vedere anche la Guida ad Aptitude.
2
Ricerca e Informazioni sui pacchetti
apt-cache search [stringa da cercare ] usando questo comando possiamo
cercare pacchetti in base al nome, alla descrizione, ecc ...
apt-cache show [nome pacchetto ] questo comando visualizza una breve descrizione del pacchetto da noi richiesto, fornendo versione, uso, dipendenze
e altre utili informazioni.
apt-file search nome-file cerca in quali pacchetti presente il file nome-file.
Vedere anche: Apt-file: ricerca all’interno dei pacchetti.
Gestione delle fonti (o repository)
apt-setup serve per aggiungere/aggiornare le fonti (o repository) da cui scaricare i pacchetti.
apt-cdrom aggiunge alle fonti per i pacchetti il contenuto di un CD debian.
Pacchetti sorgenti e compilazione
apt-get source [pacchetto ] questo il comando da utilizzare nel caso volessimo installare i sorgenti di un pacchetto. NOTA BENE: i sorgenti cos
scaricati, una volta compilati, daranno origine ad un pacchetto .deb che
andra’ a sua volta installato!I sorgenti vengono scaricati nella directory da
cui si lanciato il comando.
apt-get build-dep [pacchetto ] questo un pacchetto fondamentale, specie
se si lavora molto con i sorgenti. Si preoccupa di soddisfare le dipendenze
del pacchetto che andremo a compilare dopo aver eseguito apt-get source.
apt-get source [pacchetto - -compile] e’ il passo finale per la compilazione di
un pacchetto deb. Lanciatelo dalla stessa directory in cui avete scaricato
i sorgenti da compilare.
Altro
apt-get autoclean i pacchetti scaricati vengono memorizzati in /var/cache/apt/archive/
che col passare del tempo tende a gonfiarsi notevolmente. Con questo
comando e’ possibile dire all’ apt-system di cancellare questi pacchetti.
Notare che, se fatta a mano, questa operazione causera’ un certo ”disorientamento” da parte di apt convinto di avere una copia di eventuali
pacchetti in locale.
apt-get clean elimina tutti i pacchetti dalla cache.
apt-get moo Have you mooed today ?
3
Link
Per una panoramica completa sulle funzionalit e sull’utilizzo del sistema APT
vedere:
• Apt HowTo
Autore: Keltik
Estratto da ”http://guide.debianizzati.org/index.php/Introduzione all%27 Apt System”
Categoria: Apt
I repository ed il loro utilizzo - [email protected]
I repository ed il loro utilizzo
Da [email protected].
Vai a: navigazione, ricerca
Indice
• 1 Introduzione
• 2 Lista repository ufficiali debian
– 2.1 Vecchia Stabile: Debian Etch
– 2.2 Stabile: Debian Lenny
– 2.3 Testing: Debian Squeeze
– 2.4 Unstable: Debian Sid
• 3 I repository speciali
– 3.1 Debian Volatile
– 3.2 Debian Volatile/Sloppy
• 4 Lista repository non ufficiali
• 5 La Struttura dei repository
• 6 La Suddivisione del repository
• 7 Sources.list
– 7.1 Il ruolo fondamentale
– 7.2 Ordine di Inserimento
– 7.3 Sintassi
– 7.4 Alcuni esempi
4
Introduzione
Il repository a tutti gli effetti un archivio ordinato dove sono raccolti i pacchetti
Debian (siano essi pacchetti binari o sorgenti) in modo ben organizzato e costantemente aggiornato. In ogni sistema debian i repository utilizzati vengono indicati nel file /etc/apt/sources.list. Vedi anche FAQ: Cos’ un repository?.
Lista repository ufficiali debian
Di seguito troverete l’elenco repository ufficiali da inserire nel sources.list
per le varie versioni di debian. Il mirror quello italiano. I repository dei pacchetti sorgente sono commentati. per ulteriori informazioni leggere la sezione:
Sources.list.
Vecchia Stabile: Debian Etch
ATTENZIONE: Etch ormai la vecchia stable. Usate Lenny per le nuove
installazioni
## Debian Stable (etch)
deb http://ftp.it.debian.org/debian/ etch main contrib non-free
#deb-src http://ftp.it.debian.org/debian/ etch main contrib non-free
## Aggiornamenti della sicurezza
deb http://security.debian.org/ etch/updates main contrib
#deb-src http://security.debian.org/ etch/updates main contrib
Stabile: Debian Lenny
## Debian Stable (lenny)
deb http://ftp.it.debian.org/debian/ lenny main contrib non-free
#deb-src http://ftp.it.debian.org/debian/ lenny main contrib non-free
## Aggiornamenti della sicurezza
deb http://security.debian.org/ lenny/updates main contrib
#deb-src http://security.debian.org/ lenny/updates main contrib
Per avere pacchetti pi aggiornati su lenny si possono usare i backport:
• Debian Backports
Testing: Debian Squeeze
## Debian Testing (squeeze)
deb http://ftp.it.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.it.debian.org/debian/ squeeze main contrib non-free
## Aggiornamenti della sicurezza
5
deb http://security.debian.org/ squeeze/updates main contrib
#deb-src http://security.debian.org/ squeeze/updates main contrib
Unstable: Debian Sid
## Debian Unstable (sid)
deb http://ftp.it.debian.org/debian/ unstable main contrib non-free
#deb-src http://ftp.it.debian.org/debian/ unstable main contrib non-free
Per Sid non c’ il repository per la sicurezza dato che eventuali falle vengono
corrette semplicemente con l’aggiornamento del pacchetto incriminato.
I repository speciali
Debian Volatile
Cos’ debian-volatile? Alcuni pacchetti (come quelli per il filtraggio dello spam
e per la scansione dei virus) dovendo usare dati aggiornati tendono ad essere
dei bersagli mobili che non funzionano al meglio per tutto il ciclo di vita di una
release stable. Lo scopo principale di volatile di permettere agli amministratori
di aggiornare i loro sistemi in maniera semplice ed ordinata, senza dover affrontare gli svantaggi dati dall’uso di unstable. Per cui debian-volatile contiene
solo i cambiamenti a programmi stabili che permettono di mantenerli intatti,
funzionali e aggiornati.
## Debian Volatile (lenny)
deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
## Debian Volatile (squeeze)
deb http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free
Debian Volatile/Sloppy
Cos’ debian-volatile/sloppy? Per i pacchetti che finiscono nella sezione debian
volatile, si cerca di assicurare che le nuove versioni non introducano modifiche
funzionali ai programmi o che necessitino della supervisione degli amministratori dei file di configurazione per essere installati. Quei programmi che non
rispettano questi requisiti per essere aggiornati finiscono nell’archivio volatilesloppy.
## Debian Volatile (sarge)
#deb http://volatile.debian.org/debian-volatile sarge/volatile-sloppy main contrib non-f
## Debian Volatile (etch)
#deb http://volatile.debian.org/debian-volatile etch/volatile-sloppy main contrib non-fr
6
Lista repository non ufficiali
Per una lista dei repository non ufficiali pi diffusi vedere: Repository non ufficiali.
La Struttura dei repository
Un repository suddivisibile, grossomodo, in due sezioni:
• dists in questo ramo sono contenuti i file di controllo, che permettono
il funzionamento del sistema di pacchettizzazione. Infatti sono presenti i
file che descrivono i pacchetti presenti nell’archivio (divisi per la release
di appartenenza);
• doc raccoglie la documentazione di base per Debian (segnalazioni di Bug,
Faq, il Contratto Sociale ed altro)
• indices contiene l’indice di tutti i file contenuti in tutti i pacchetti. Queste
informazioni sono usate da apt-file.
• non-US a causa di problemi legali dovuti al divieto di esportazione di
matariale per la difesa (tra cui materiale crittografici, utilizzati anche in
PGP e SSH). Per ovviare a questi problemi, i pacchetti sono stati posti in
una sezione a parte, la cui distribuzione legata a server non Statunitensi.
• pool questo l’archivio vero e proprio, dove sono contenuti i pacchetti,
raggruppati per lettera iniziale;
• project contiene materiale per sviluppatori. Degne di nota la direcotory
experimetal, che contiene i pacchetti in fase di sviluppo e perfezionamento;
• tools contiene degli strumenti Dos per la creazione di dischetti di boot,
partizionamento e lancio di Linux.
La Suddivisione del repository
Navigando un po’ tra gli archivi Debian, si nota subito una particolare suddivisione: i repository, infatti, sono divisi in main, contrib e non-free, nel modo
seguente:
• main la sezione principale, che contiene il 90% dei pacchetti presenti in
Debian
• contrib raccoglie i pacchetti coerenti con i punti 5 e/o 6 delle DFSG, ma
che dipendono da pacchetti che non la rispettano
• non-free contiene dei pacchetti che possiedono delle limitazioni nella distribuzione (ad esempio perch non utilizzabili in ambito commerciale o
perch dipendenti da applicazioni o pacchetti che non rispettano la Debian
Free Software Guidelines)
7
Sources.list
Il ruolo fondamentale
Il file /etc/apt/sources.list forse il pi importante file di configurazione del
sistema di gestione dei pacchetti Debian. Esso, infatti, contiene l’elenco e gli
indirizzi dei repository a cui apt accede.
Ordine di Inserimento
importante inserire i repository con un giusto ordine: i primi in elenco, infatti,
sono i pi importanti (o favoriti). Per migliorare le performance, consigliabile
ordinarli per velocit (Es. prima il cdrom, poi la rete locale, poi internet, ...).
Sintassi
Ogni riga che descrive un repository ha una ben determinata sintassi:
deb uri distribution [component..]
Analizziamo i singoli componenti:
• deb o deb-src serve ad indicare se il repository indicato contiene pacchetti binari o pacchetti sorgenti (se li contiene entrambi, necessario specificarlo usando due righe diverse).
• uri indica l’indirizzo a cui possibile trovare il repository; possibile scegliere
tra i seguenti metodi di accesso ai pacchetti:
– file permette di inserire un repository presente sull’Hard Disk del
computer;
– cdrom permette di inserire un repository presente su un cd-rom;
– http permette di accedere ad un repository tramite il protocollo http
(se impostata una variabile di ambiente http proxy col formato
http://server:port/ verranno usate queste opzioni per accedere al
repository; in caso di necessit di autenticazione, possibile specificare l’inidirizzo del proxy, nella variabile d’ambiente http proxy, nel
seguente modo: http://user:pass@server:port/, anche se risulta
non essere un modo sicuro di autenticazione);
– ftp permette di accedere ad un repository tramite il protocollo ftp;
possibile specificare un proxy nell stesso modo indicato per http al
punto precedente, sostituendo alla variabile http proxy ftp proxy;
– copy idendico a file, ma i file utilizzati vengono salvati nella cache
di apt; utile nel caso di supporti removibili quali Usb-drive, Floppy,
Zip, ...;
– rsh, ssh permette di accedere ad un repository tramite il protocollo
ssh. Non possibile, per, effettuare alcuna autenticazione interativa,
ma solo tramite lo scambio di chiavi RSA.
8
• distribution indica la distribuzione (o release) utilizzata... possibile
usare il nome in codice (sarge, etch, sid) o il nome generico (stable, testing,
unstable);
• component indica la sezione (non-free, main, contrib...) del repository
da inserire; sono possibili scelte multiple.
Alcuni esempi
Non c’ niente di meglio, per capire la sintassi del file sources.list, si un po’ di
esempi.
I repository ufficiali (binari e sorgenti) presi da un mirror italiano:
deb http://ftp.it.debian.org/debian/ stable main non-free contrib
deb-src http://ftp.it.debian.org/debian/ stable main non-free contrib
Il repository di apt-build (Rif. 7.1 Pag. [*]):
deb file:/var/cache/apt-build/repository apt-build main
Un repository ’artigianale’ accessibile tramite un webserver:
deb http://repos.debianizzati.org ./
Un repository situato nella home dell’utente maxer, creato con dpkg-scanpackages:
deb file:/home/maxer/repos ./
Per altri repository vedere: Lista repository ufficiali debian e Repository non
ufficiali.
MaXeR
Estratto da ”http://guide.debianizzati.org/index.php/I repository ed il loro utilizzo”
Categorie: Apt — Repository
Il repository Backports
Da [email protected].
Vai a: navigazione, ricerca
Indice
• 1 Il repository Backports
– 1.1 Che cos’ e a cosa serve
– 1.2 Configurazione
– 1.3 Utilizzo
9
Il repository Backports
Che cos’ e a cosa serve
Chi utilizza il ramo stable di Debian si scontra spesso con un problema: il software troppo datato.
Il repository backports sopperisce alla necessit di software pi aggiornato, mettendo a disposizione pacchetti ricompilati dal ramo testing, senza che questi
richiedano nuove librerie per funzionare.
Configurazione
Aprite il vostro /etc/apt/sources.list e aggiungete la riga:
deb http://www.backports.org/debian lenny-backports main contrib non-free
Installate adesso la chiave del repository per verificare i pacchetti scaricati:
wget -O - http://backports.org/debian/archive.key | apt-key add Ora aggiornate la vostra lista di pacchetti:
apt-get update
Utilizzo
Il repository backports disabilitato di default. Per installare qualche programma dai backports bisogna perci specificare ad apt o aptitude la sorgente di
installazione:
apt-get -t lenny-backports install package
aptitude -t lenny-backports install package
Se desiderate che i pacchetti installati dal repository backports si aggiornino
automaticamente, dovete aggiungere in /etc/apt/preferences queste righe:
Package: *
Pin: release a=lenny-backports
Pin-Priority: 200
Estratto da ”http://guide.debianizzati.org/index.php/Il repository Backports”
Il repository di Google
Da [email protected].
Vai a: navigazione, ricerca
10
Il repository Debian di Google
Google mette a disposizione degli utenti Debian un repository contenente le sue
applicazioni gi pacchettizzate in formato .deb
ATTENZIONE: Installando pacchetti da questo repository si accettano le
licenze d’uso di Google e si installano pacchetti non open-source
Per configurare il repository bastano pochi passi. Innanzitutto aprite il file
/etc/apt/sources.list e inserite le seguenti righe:
# Google software repository
deb http://dl.google.com/linux/deb/ stable non-free main
Qundi scaricate la firma del repository e aggiornate la lista dei pacchetti di
apt:
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add apt-get update
Ora potete installare il software di Google, ad es:
apt-get install picasa
Estratto da ”http://guide.debianizzati.org/index.php/Il repository di Google”
Pulire Debian - [email protected]
Pulire Debian
Da [email protected].
Vai a: navigazione, ricerca
Debianized
Questo un articolo consigliato dallo staff di Debianizzati.
Gli articoli Debianized sono scritti in maniera particolarmente accurata (sia
nella forma che nel contenuto) e la loro correttezza stata verificata personalmente da pi persone nella community.
Indice
• 1 Introduzione
• 2 Prevenire meglio che curare
• 3 CheckInstall: deb da sorgenti
• 4 Debfoster
• 5 Deborphan
• 6 File di Configurazione
11
• 7 Localepurge: rimuoviamo le lingue che non ci interessano!
• 8 La cache di apt-get
• 9 La cache di apt-build
• 10 Home
• 11 Conclusione
Introduzione
Dopo qualche mese di utilizzo di una linux box, spesso si notano dei sostanziali
rallentamenti... Magari abbiamo passato questi periodi installando e disintallando applicazioni, provando programmi e configurazioni...ed il sistema risente
un po’ di queste ’esperienze’... In questo HowTo vedremo di analizzare una
soluzione molto comoda (sicuramente molto di pi di quella classica di formattare
e ricominciare da capo) per rimettere in sesto la nostra amata Debian.
Prevenire meglio che curare
Penso che sia una cosa certa, poter lavorare su un sistema ’pulito’ e ’pulibile’
sicuramente pi comodo e divertente che su uno ’sporco’ e mal gestito, soprattutto
quando si tratta di pulizia o di interventi sul sistema!
Iniziamo con la rassegna di applicazioni utili:
CheckInstall: deb da sorgenti
Checkinstall una utilit che permette di creare dei pacchetti Debian partendo
da sorgenti... Attenzione, per: non sono pacchetti completi, ma semplicemente aiutano a tenere traccia dei file installati dal programma, facilitando
l’aggiornamento e la rimozione dello stesso. Iniziamo con l’installazione:
# apt-get install checkinstall
L’utilizzo molto semplice ed intuitivo: la configurazione dei sorgenti (./configure - -some-options) e la compilazione (make) devono venir svolte, mentre il
comando
# make install
deve essere sostituito da
# checkinstall
Ed il gioco fatto! Durante l’esecuzione del programma verranno poste alcune
domande, ad esempio il tipo di pacchetto (il programma permette di creare
pacchetti deb, rpm, tgz (usati da slackware))! Sono disponibili, opzionalmente,
le seguenti direttive (anche se non mi mai capitato di doverne fare uso):
12
-y, - -default Accetta i valori di default (Modalit non interattiva)
- -pkgname=name Imposta il nome del pacchetto
- -pkgversion=version Imposta la versione
-A, - -arch, - -pkgarch=arch Imposta l’architettura
- -pkgrelease=release Imposta la release version
- -pkggroup=group Imposta il gruppo a cui il pacchetto deve appartenere
(doc, games, net...)
- -pakdir=directory Dove salvare il pacchetto
- -maintainer=email addr Il maintainer del pacchetto
- -dpkgflags=flags Eventuali flag da passare a dpkg
- -bk Esegue un Backup dei file che verranno sovrascritti
Una volta completato il processo, il pacchetto verr automaticamente installato.
Nota Bene
Nel file di controllo del pacchetto non vengono segnate eventuali dipendenze,
sostituzioni e/o conflitti, in quanto lo scopo di checkinstall quello di tenere
traccia dei file generati, e non di creare un pacchetto Debian ufficiale... Non
ridistribuite il pacchetto cos creato: solo per uso personale (per motivazioni
uguali a quella precedente)!
Questa la premessa per poter avere un sistema pulito, senza file ’orfani’ che
gironzolano per il sistema...
Debfoster
# apt-get install debfoster
Lo scopo di questo programma di mostrare i pacchetti che non sono installati
come dipendenze... Una volta individuato uno di questi pacchetti, ver mostrata
una lista con indicati i pacchetti ’bloccati’ da questo.
Output d’esempio:
libxml-libxml-perl is keeping the following 3 packages installed:
libxml-libxml-common-perl libxml-namespacesupport-perl libxml-sax-perl
Keep libxml-libxml-perl? [Ynpsiuqx?], [H]elp:
Ora possiamo scegliere cosa fare:
Y mantiene il pacchetti installato
n Rimuove il pacchetto segnalato
13
p Rimuove il pacchetto segnalato e tutti i pacchetti da lui trattenuti
s Salta la domanda
i Visualizza informazioni sul pacchetto
? Uguale a i
u Ripropone la domanda precedente
q Esce senza apportare alcuna modifica
x Esce e rimuove i pacchetti selezionati
h Visualizza la guida ai comandi
Che dire...uno strumento veramente potente!
Quando si procede alla pulizia con questo programma, per, bene fare attenzione ad alcune cose, che potrebbero generare non pochi problemi: - Tutte
le informazioni mostrate non prendono in considerazione eventuali programmi
compilati da sorgenti (con il classico make install o anche con checkinstall); Leggere con attenzione le librerie elencate come ’bloccate’, in quanto qualche
volta potrebbe essere indicata, per esempio, una libreria di sviluppo non necessaria all’esecuzione di altri programmi, ma indispensable per la compilazione
(libncurses5-dev, ad esempio).
Deborphan
# apt-get install deborphan
Questo programma, genera una lista di pacchetti ’orfani’. Per pacchetti
’Orfani’ indichiamo quelle librerie che non sono pi necessarie, in quanto nessun
pacchetto installato le indica come dipendenza.
Attenzione se si hanno programmi compilati da sorgente (in modo classico
o con checkinstall): le dipendenze di quei pacchetti sono saranno controllate, e
si potrebbe incorrere in problemi di esecuzione di questi programmi!
Opzione interessante - -libdev, che genera una lista delle librerie di sviluppo
(quelle che finiscono con -dev) non necessarie!
Per visualizzare una lista dei pacchetti ’Orfani’, sufficiente lanciare il seguente
comando:
# deborphan
o
# deborphan -$\,$-libdevel
possibile fare in modo che apt-get ’legga’ la lista dei pacchetti generata da
deborphan:
# apt-get -$\,$-purge remove ‘deborphan‘
# apt-get -$\,$-purge remove ‘deborphan -$\,$-libdev‘
L’opzione - -purge ha la funzione di rimuovere anche i file di configurazione.
14
File di Configurazione
Eliminando i file di configurazione si libera spazio, e si mantiene pi pulita la
directory /etc.
Con il seguente comando possibile rimuovere i file di configurazione che sono
stati lasciati nel sistema dai pacchetti rimossi senza l’opzione - -purge:
# dpkg -$\,$-purge ‘COLUMNS=300 dpkg -l | egrep "\^{}rc" | cut -d’ ’ -f3‘
Ecco una breve spiegazione dei comandi:
dpkg -$\,$-purge listapacchetti
rimuove i file di configurazione di tutti i pacchetti indicati. La lista dei
pacchetti ottentuta tramite il comando:
‘COLUMNS=300 dpkg -l | egrep "\^{}rc" | cut -d’ ’ -f3‘
che genera la lista dei pacchetti che non sono stati rimossi completamente
(cio dei quali non sono stati rimossi i file di configurazione).
In dettaglio:
COLUMNS=300 Modifica la larghezza delle righe, evitando cos il troncamento dei
nomi dei pacchetti (COLUMNS una semplice variabile di ambiente)
dpkg -l Elenca tutti i pacchetti disponibili
egrep "^rc" Visualizza solo quelle righe che iniziano con ”rc” (stato che indica
che il pacchetto stato rimosso ma sono ancora presenti i file di configurazione)
cut -d’ ’ -f3 Restituisce solo il nome del pacchetto: usa come delimitatore
(-d) di campo uno spazio (’ ’) e prende solo il terzo campo (-f3, field in
inglese).
Localepurge: rimuoviamo le lingue che non ci interessano!
Spesso, non sono necessarie tutte le lingue che un pacchetto installa.. Di solito
ne bastano due:
• en (lingua generale)
• it IT (lingua dell’utilizzatore)
Tra le varianti va scelta quella che viene usata nel proprio sistema (nel mio
caso it IT@euro e en US)
Quindi, quelle superflue, potrebbero essere tranquillamente rimosse, liberando
un po’ di spazio inutile!
NOTA BENE
15
sconsigliabile rimuovere l’inglese, in quanto la lingua di default del sistema...
per evitare problemi, lasciarla installata.
Durante la configurazione di localepurge, verr mostrata una lista di lingue,
dalla quale vanno selezionate solo quelle che non devono venir rimosse.
Una volta fatto questo, lanciando il comando
# localepurge
verranno eliminati i locales non necessari!!!
Ma non solo! quando si installer uno o pi pacchetti, a questi verranno automaticamente rimosse le localizzazioni che non erano state selezionate durante
la configurazione del programma.
Nota
Per chi avesse dei dubbi sull’efficacia di questa utility, ecco le statistiche sullo
spazio liberato sul mio laptop (su cui ho appena installato Debian):
knio:/home/maxer# localepurge
localepurge: Disk space freed in /usr/share/locale: 109778K
localepurge: Disk space freed in /usr/share/man: 1940K
Total disk space freed by localepurge: 111718K
La cache di apt-get
Quando scarichiamo un pacchetto, questo viene salvato in /var/cache/apt/archives
in modo da rendere pi veloce il download in caso di reinstallazione, oppure per
permettere il salvataggio di questi su cd (in caso di connessioni lente o a consumo). Per, ovviamente, occupano spazio e (dopo qualche mese, tra aggiornamenti e nuove installazioni) si arriva facilmente ad 1Gb di dati.. Per risolvere
questo problemia, lo stesso apt-get ha due comandi che gestiscono la pulizia
della cache dei pacchetti scaricati: clean e autoclean
Vediamoli in dettaglio:
apt-get clean Rimuove tutti i pacchetti contenuti in /var/cache/apt/archives
e in /var/cache/apt/archives/partial (eccezione fatta per i file di lock)
apt-get autoclean Rimuove tutti i pacchetti che non possono pi essere scaricati (perch rimossi dai repository Debian, versioni non pu scaricabili in
quanto ’superate’,...)
Per quanto riguarda il sistema, abbiamo terminato...
La cache di apt-build
Le stesse cosa dette per apt-get, valgono anche per apt-build. Questo, infatti,
una volta scaricati e compilati i sorgenti, non li rimuove. facile, cos, occupare
svariati Gb di spazio con i sorgenti (e i risultati della compilazione). Apt-build,
per effettuare pulizia, ci mette a disposizione 3 azioni :
16
clean-sources esegue un debian/rules clean, che rimuove solamente i prodotti
della compilazione;
clean-build rimuove il contenuto della directory /var/cache/apt-build/build/
che contiene i sorgenti dei pacchetti ricompilati;
clean-repository rimuove il contenuto della directory /var/cache/apt-build/repository/
che contiene i pacchetti ricompilati tramite apt-build.
Home
Nella vostra home vengono creati i file di configurazione delle applicazioni!
niente di strano, se non fosse che occupano spazio, spesso senza un motivo!
per vedere questi file/directory di configurazione necessario usare ls seguito
dalla opzione -a:
\$ ls -a
Cos facendo verranno mostrati i file/directory nascosti (in pratica quelli con
un punto davanti). Una volta individuati dei file/directory appartenenti ad
applicazioni non pi presenti nel sistema, o non pi utilizzate dal vostro utente, si
pu procedere alla rimozione con:
\$ rm -r nome_dir
dove l’opzione -r indica la ricorsivit dell’operazione, consentendo l’eliminazione
delle directory.
Conclusione
Queste sono le tecniche base per tenere pulita una Debian, e sono quelle che
applico regolarmente alle mie macchine... Diciamo che si avvertono i miglioramenti, soprattutto per quanto riguarda lo spazio risparmiato, che permette una
miglior organizzazione dei dati all’interno del disco!
MaXeR
Estratto da ”http://guide.debianizzati.org/index.php/Pulire Debian”
Categorie: Debianized — Apt — Sistema
Apt-cdrom - [email protected]
Apt-cdrom
Da [email protected].
Vai a: navigazione, ricerca
17
Indice
• 1 Introduzione
• 2 Installazione
• 3 Opzioni disponibili
• 4 Esempi
Introduzione
Apt-cdrom permette di automatizzare l’aggiunta e l’aggiornamento dei repository presenti su Cd-Rom.
Installazione
L’installazione non necessaria, in quanto contenuto nel pacchetto base di apt.
Opzioni disponibili
L’utilizzo del comando semplicissima: permette due sole azioni:
add per l’aggiunta di un cd/dvd alla lista di quelli disponibili
ident per identificare il cd/dvd inserito
Il fatto che ci sia l’opzione ident fa capire che presente un sistema di indentificazione: dopo la scansione del supporto, quando sar necessario recuperare
un pacchetto, verr richiesto il cd/dvd chiamandolo per ’nome’.
Le opzioni disponibili, invece, sono:
-d Permette di indicare un mount-point alternativo
-r Consente di rinominare il cd/dvd da analizzare
-m Non esegue il mount (nel caso sia gi montato)
Degna di nota la gestione totalmente automatizzata del processo di mount
e umount del dispositivo: quando verr richiesto un pacchetto, infatti, il cassetto del lettore verr aperto automaticamente, e tutte le operazioni di mount e
umount eseguite autonomamente.
18
Esempi
Una breve rassegna di esempi, per prendere familiarit con questo strumento:
comando semplice per aggiungere il supporto correntemente inserito nel primo
cd all’archivio
# apt-cdrom add
per sapere come viene identificato il supporto correntemente inserito
# apt-cdrom ident
permette di aggiungere all’archivio il dvd accessibile tramite il mount point
/media/dvd
# apt-cdrom -d /media/dvd add
come nell’esempio precedente, specificando il nome del supporto: Sarge DVD
n1 2005-05-24
# apt-cdrom -d /media/dvd -r "Sarge DVD n1 2005-05-24" add
MaXeR
Estratto da ”http://guide.debianizzati.org/index.php/Apt-cdrom”
Categorie: Apt — Repository
Apt-file: ricerca all’interno dei pacchetti - [email protected]
Apt-file: ricerca all’interno dei pacchetti
Da [email protected].
Vai a: navigazione, ricerca
Indice
• 1 Introduzione
• 2 Installazione
• 3 Configurazione
• 4 Utilizzo
• 5 Esempio
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.
19
Installazione
Niente di pi semplice, ovviamente
# apt-get install apt-file
Configurazione
Non necessita di modifiche... Nel file sono presenti due sezioni:
1. dove collocare i file archivio e come rinominarli (all’interno del file presente
uno specchietto riassuntivo delle variabili utilizzabili...
2. le sintassi dei comandi utilizzati per scaricare i file.
Queste direttive, salvo casi particolari, non necessitano di modifiche.
Utilizzo
Una volta installata, dobbiamo aggiornare la lista dei file. Per fare questo
sufficiente dare il seguente comando:
# apt-file update
cos verranno scaricate le liste...
Attenzione: sono file piuttosto corposi, fino a 8Mb...quindi vi consiglio di
non usarlo con una normale connessione dial-up...
Vediamo, ora, le principali funzioni:
# apt-file update
Aggiorna gli archivi dei contenuti dei pacchetti.
# apt-file purge
Rimuove tutti gli archivi di apt-file scaricati.
# apt-file search <testo>
Cerca, e stampa a video l’elenco dei pacchetti che contengono ¡testo¿.
# apt-file list <nomepacchetto>
Stampa a video il contenuto dei pacchetti corrispondenti a ¡nomepacchetto¿.
tra le opzioni disponibili, ricordo quelle principali (di uso comune...)
- -ignore-case — -i Permette di effettuare ricerca case-insensitive
- -regexp — -x Tratta come un pattern di una espressione regolare.
- -package-only Mosta solo il nome del pacchetto, e non quello dei file, utile
quando si esegue una ricerca usando come un nome molto comune.
20
Esempio
Per cercare in quale pacchetto contenuto un eseguibile si pu usare:
# apt-file search bin/nome-eseguibile
trover tutti i pacchetti che contengono file che comincino per nome-eseguibile
e che siano in una directory che finisce per bin (come /bin/, /sbin/, /usr/bin,
/usr/sbin).
MaXeR
Estratto da ”http://guide.debianizzati.org/index.php/Apt-file: ricerca all%27interno dei pacchetti”
Categoria: Apt
Apt-listbugs: come monitorare i bug - [email protected]
Apt-listbugs: come monitorare i bug
Da [email protected].
Vai a: navigazione, ricerca
Indice
• 1 Introduzione
• 2 Installazione
• 3 Configurazione
• 4 Utilizzo
• 5 Conclusione
Introduzione
Spesso ci capitato di installare dei pacchetti contenenti dei bug, conosciuti
anche prima del nostro download. Prima di installare un pacchetto, infatti,
sarebbe opportuno fare una visitina sul sito http://bugs.debian.org, dove vengono tracciati i bug segnalati. Questo motore di gestione dei bug molto potente
e funzionale..ma se non volessimo perdere tempo ogni volta? apt-listbugs la
risposta! apt-listbugs, infatti, ci permette di essere informati sui bug presenti
nel nostro sistema e presenti nei pacchetti che stiamo per installare...vediamo
come utilizzarlo e configurarlo al meglio per le nostre esigenze!
Installazione
Per installare apt-listbugs, sufficiente un
# apt-get install apt-listbugs
21
Configurazione
Apt-listbugs gi configurato per interagire con dpkg e apt in quanto aggiunge
uno script nella directory /etc/apt/apt.conf.d/, che contiene gli script da
eseguire al termine del download dei pacchetti. Raccomando di non modificare
il contenuto di questa directory, a meno di non sapere esattamente cosa fare pena
l’impossibilit di installare pacchetti e/o il cattivo funzionamento di dpkg e aptget). Nella directory /etc/apt/ verr aggiunta una nuova folder: ”listbugs”
che conterr dei file di supporto per il normale funzionamento del programma
(ad esempio il file ignore bugs, contenente la lista dei bug ignorati durante
l’installazione dei pacchetti).
Utilizzo
L’utilizzo base del programma semplicissimo: ogni volta che installeremo o
aggiorneremo dei pacchetti, apt-listbugs interrogher i server Debian per sapere
se ci sono dei bug aperti per le applicazioni installate; raccolte le informazioni ci
avvertir in caso di bug (altrimenti lascer continuare normalmente il processo
di installazione). In caso di presenza di bug, mostrer a video la lista di quelli
presenti (sia aperti che chiusi); ecco un esempio:
Retrieving bug reports... Done
critical bugs of login (1:4.0.3-30.7 -> 1:4.0.3-30.8) <done>
#290803 - login: /var/log/btmp is created with insecure permissions
critical bugs of postfix (2.1.4-5 -> 2.1.5-5) <done>
#288728 - postfix gives up with warning: no MX host for xxxx.com has a valid A record
grave bugs of mysql-server (4.0.23-1 -> 4.0.23-3) <open>
#291378 - mysql-server: Security fixes pending in experimental version
grave bugs of postfix (2.1.4-5 -> 2.1.5-5) <open>
#285111 - postfix: newaliases not working due to some library problem
#291031 - postfix: Upgrade from Postfix 2.1.4-5 to 2.1.5-4 fails #3
#292086 - stock installed master.cf file causes postfix to fail to start
Summary:
mysql-server(1 bug), login(1 bug), postfix(4 bugs)
Are you sure you want to install/upgrade the above packages? [Y/n/?/...]
Come potete vedere, visualizza una lista di bug presenti, divisi per categoria
(prima quelli ’Critical’, poi quelli ’Grave’) e poi per pacchetto. Inoltre i bug
sono contraddistinti da 2 tag: ¡done¿ e ¡open¿:
¡done¿ rappresenta un bug corretto
¡open¿ rappresenta un bug ancora aperto
Ecco una tabella riassuntiva delle categorie in cui sono divisi i bug:
critical si riferisce a problemi che bloccano il pacchetto o l’intero sistema; oppure causano la perdita di dati importanti; oppure introducono dei problemi di sicurezza sui sistemi nei quali installi il pacchetto.
22
grave rende il pacchetto in questione inusabile o quasi; oppure causa la
perdita di dati; oppure introduce dei problemi di sicurezza legati agli utenti
del pacchetto.
serious indica una seria violazione della policy Debian (vale a dire di tutto
quello che identificato come ”must” o ”required”) o che comunque secondo
il manutentore del pacchetto rende lo stesso inappropriato per il rilascio.
important un bug che abbia un effetto pesante sull’usabilit del pacchetto,
senza per renderlo inusabile per tutti.
normal il valore predefinito, utilizzabile per i bug normali.
minor un bug che non inficia l’usabilit del pacchetto e che facile da correggere.
wishlist per ogni richiesta di cambiamento del programma non legata a bug.
(fonte: http://www.debian.org/Bugs/Developer#severities)
Apt-listbugs ci mostra prevalentemente quelli appartenenti alle prime due
categorie.
Tornando ad apt-listbugs, in caso di bug rilevati, viene chiesto cosa fare. Le
opzioni disponibili sono:
y Continua l’installazione ignorando i bug trovati;
n Interrompe immediatamente l’installazione;
¡num¿ Inserendo il numero del bug (quello preceduto da #) al posto di possibile ottenere maggioni informazioni riguardo il bug;
r Mostra la lista dei bug (comodo dopo la visualizzazione dei dettagli, ad esempio);
p Esegui il pinning di tutti i pacchetti segnalati nel bug report (cio lo ’blocca’
e non lo installa); questa opzione richiede l’uscita da apt-get e una riesecuzione del comando di installazione/aggiornamento precedentemente lanciato;
23
p ¡pkg¿ Esegue il pinning del pacchetto indicato;
i Ignora il bug corrispondente a (per evitare il pinning di pacchetti il cui bug
segnato come ”done”;
? Mostra un piccolo help con le opzioni utilizzabili;
w Mostra il report bug in html (mai usato...).
Il funzionamento, quindi, molto semplice! Basta leggere con attenzione
la lista dei bug riscontrati ed agire di conseguenza! Ricordo che, nel caso di
pinning di anche un solo pacchetto, necessario ricominciare il processo di aggiornamento/installazione...
In caso di pinning di uno o pi pacchetti, necessario (al prossimo aggiornamento) rimuoverlo da /etc/apt/preferences: Nel file /etc/apt/preferences,
ad esempio, trovo questo blocco relativo a postfix (prima l’ho pinnato, visto che
il bug comprometteva gravemente il funzionamento):
Explanation: Pinned by apt-listbugs at Mon Jan 31 22:17:38 CET 2005
Explanation:
#288728: postfix gives up with warning: no MX host for xxxx.com has a vali
A record
Explanation:
#285111: postfix: newaliases not working due to some library problem
Explanation:
#291031: postfix: Upgrade from Postfix 2.1.4-5 to 2.1.5-4 fails #3
Explanation:
#292086: stock installed master.cf file causes postfix to fail to start
Package: postfix
Pin: version 2.1.4-5
Pin-Priority: 1000
al prossimo aggiornamento, per controllare se sono presenti nuove versioni di
postfix, dovr rimuovere queste indicazioni, altrimenti il pacchetto in questione
verr assunto sempre come ’aggiornato’. Se non sono mai state fatte modifiche
al file /etc/apt/preferences (soprattutto per quanto riguarda pinning per
l’utilizzo di pi release insieme) lo si pu tranquillamente eliminare prima di ogni
aggiornamento.
L’utilizzo di apt-listbugs in modo manuale (richiamandolo direttamente da
shell) inutile, ma pu servire (seguito dal parametro -h oppure consultando il
manuale (man apt-listbugs)) per modificare il comportamento del programma
(i parametri possono essere modificati nel file /etc/apt/apt.conf.d/10aptlistbugs, anche se raccomando l’utilizzo delle opzioni di default, che fino ad ora
si sono rivelate le migliori.
Conclusione
apt-listbugs senza dubbio uno strumento utilissimo, in quanto previene l’installazione
di pacchetti che possono rendere inusabile o instabile la nostra Debian Box.
24
Ovviamente non viene a sostituire le normali visite al sito http://bugs.debian.org,
dove sono elencati tutti i bug di tutti i pacchetti presenti in Debian (che invito
a controllare prima di chiedere aiuto per un comportamento strano di una applicazione).
MaXeR
Estratto da ”http://guide.debianizzati.org/index.php/Apt-listbugs: come monitorare i bug”
Categoria: Apt
Apt-zip: aggiornamenti senza una connessione veloce - [email protected]
Apt-zip: aggiornamenti senza una connessione
veloce
Da [email protected].
Vai a: navigazione, ricerca
Indice
• 1 Introduzione
• 2 Installazione
• 3 Configurazione
• 4 Preparazione del Sistema
– 4.1 Supporto Removibile
– 4.2 In una directory locale
• 5 Sintassi ed Opzioni
• 6 Utilizzo
– 6.1 Aggiornare il sistema
∗ 6.1.1 dselect-upgrade
∗ 6.1.2 upgrade
∗ 6.1.3 dist-upgrade
– 6.2 Installare i pacchetti mancanti
• 7 Gli Script
• 8 Installazione dei pacchetti
• 9 Nessuna Connessione ad Internet
– 9.1 L’idea
25
– 9.2 Configurazione di Apache
– 9.3 La struttura delle Directory
– 9.4 Modifica di sources.list
– 9.5 Creazione della lista di pacchetti
– 9.6 Conversione dello script
• 10 Conclusione
• 11 Bookmarks
Introduzione
Qualche volta ci troviamo nella situazione di dover aggiornare una macchina
con una connessione internet lenta o inesistente... Alcune volte viene suggerito
Debmirror (soluzione che reputo sovradimensionata e dispendiosa), altre viene
suggerito il download del primo DVD o dei primi 2-3 CD di Sarge (ma per
quanto riguarda sid, non esiste niente del genere)... Cos ho pensato di organizzare qualche appunto che avevo su apt-zip, un comodo tool che ci viene in
aiuto proprio in questi casi! Vedremo come utilizzarlo su computer connessi ad
internet con una connessione lenta...
Installazione
L’installazione semplicissima:
# apt-get install apt-zip
Configurazione
Il file di configurazione /etc/apt/apt-zip.conf e contiene alcuni valori di
defalut utilizzati dai due comandi di apt-zip. Ecco quello di default:
# Configuration file for apt-zip.
# This is a /bin/sh code snippet.
# METHOD is taken from /usr/share/apt-zip/.
METHOD=wget
# MEDIUM should be defined in /etc/fstab with option ‘noauto’.
MEDIUM=/ZIP
#
#
#
#
#
OPTIONS is a comma-separated list of options.
Possible options include: tar[=posixtarprogram], gnutar[=gnutarprogram],
solaristar[=solaristarprogram], restart
Examples:
OPTIONS=tar=gtar
26
# OPTIONS=solaristar,restart
# OPTIONS="gnutar, restart=1"
# Recommended for a Solaris download host when possible:
# OPTIONS=solaristar,gnutar=gtar,restart
OPTIONS=
# DEFAULT_APTGETACTION is the action taken by apt-get when neither
# the -$\,$-aptgetaction nor the -$\,$-packages options are given.
# Possible actions include: dselect-upgrade(default), upgrade and dist-upgrade
DEFAULT_APTGETACTION=dselect-upgrade
# The regexp applied to filter (with grep) the files to download.
# Examples:
# GREP=\^{}http$\backslash$|\^{}ftp
# GREP="-v \^{}cdrom$\backslash$|\^{}file"
GREP="\^{}http$\backslash$|\^{}ftp"
Le direttive che ci interessano sono due: MEDIUM e DEFAULT APTGETACTION
MEDIUM indica il path della periferica removibile che verr utilizzata (io
l’ho modificata in /mnt/pen, il mountpoint della mia pennina usb);
DEFAULT APTGETACTION l’azione di default da apt-get (a meno che
non sia indicata una lista di pacchetti od un’altra azione), quella di default
esegue un aggiornamento tramite dselect.
Normalmente solo MEDIUM viene modificato, in quanto le opzioni di default sono pi che corrette per qualsiasi utilizzo.
Preparazione del Sistema
Ora, prima di passare all’analisi del programma ed al suo utilizzo, prepariamo il
sistema per usare apt-zip. Normalmente necessario un disco removibile (penna
usb, disco usb, uno ZIP o altro) ma possibile, con alcuni accorgimenti, esportare
i due file creati da apt-zip tramite un floppy od una mail, e poi creare in un’altra
sede un cd od un dvd con i pacchetti scaricati.
Supporto Removibile
Nel caso si disponga di un supporto removibile consigliato modificare il file
/etc/fstab aggiungendo la seguente riga (riferita al dispositivo):
mountpoint device filesystem options 0 0
per esempio (nel caso di una penna usb)
/dev/sda1 /mnt/pen vfat rw,users,umask=000,quiet 0 0
per le opzioni ed i filesystem disponibili, invito a leggere la documentazione
visualizzata dal comando
27
\$ man mount
Inoltre, se non presente nel sistema, necessario creare la directory indicata
nel mountpoint (nell’esempio precedente /mnt/pen ).
In una directory locale
Nessuna preparazione richiesta.
Sintassi ed Opzioni
Apt-zip composto da due eseguibili: apt-zip-list e apt-zip-inst
apt-zip-list ha il compito di generare uno script (ed un file contenente le
opzioni per l’installazione dei pacchetti che verranno scaricati) per il download dei pacchetti da una qualsiasi macchina Linux (con un trucchetto
possibile eseguire il download anche da macchine con un sistema operativo diverso, purch con wget installato).
apt-zip-inst ha il compito di installare i file scaricati (vedremo in seguito
come).
La sintassi la seguente:
apt-zip-list [-$\,$-help] [-$\,$-version] [-$\,$-medium=mountpoint]
[-$\,$-aptgetaction=action] [-$\,$-packages=package[,package...]]
[-$\,$-fix-broken] [-$\,$-skip-mount] [-$\,$-method=method] [-$\,$-options=o
[ -$\,$-accept=accept[,accept...]] [ -$\,$-reject=reject[,reject...]]
apt-zip-inst [-$\,$-help] [-$\,$-version] [-$\,$-medium=mountpoint] [-$\,$-aptgetaction=a
[-$\,$-packages=package[,package...]] [-$\,$-fix-broken] [-$\,$-skip-mount]
Dove le opzioni hanno il seguente significato:
In comune
- -help, -h Mostra un piccolo help
- -medium, -m Indica un mountpoint differente da quello indicato nel file di
configurazione
- -aptgetaction, -a Indica una azione da far compiere ad apt-get, le scelte
possibili sono: dselect-upgrade, upgrade e dist-upgrade;
Se non viene passata l’opzione - -packages, viene eseguita l’azione di default
(se non modificata con questa opzione)
28
- -packages, -p Indica una lista (separata da virgola) dei pacchetti da installare
- -fix-broken, -f Esegue apt-get con l’opzione - -fix-broken (man apt-get)
- -skip-mount Non esegue il mount e l’umount della periferica (utile se non
si vuole utilizzare una periferica removibile)
Solo per apt-get-list
- -accept , -A / - -reject , -R Lista separata da virgola dei protocolli utilizzari per il download (default http e ftp)
Utilizzo
Tratteremo allo stesso modo sia il caso in cui venga utilizzato un supporto
removibile, sia quello in cui venga usata una directory del filesystem...
Prima di lanciare apt-zip dobbiamo decidere cosa fare:
1. aggiornare il sistema
(a) usare dselect
(b) fare un upgrade
(c) fare un dist-upgrade
2. installare dei pacchetti mancanti
Aggiornare il sistema
forse la pratica pi diffusa...abbiamo a disposizione tre opzioni:
dselect-upgrade
eseguendo
# dselect
e lanciando l’aggiornamento, verranno scaricati gli archivi con le liste dei
pacchetti aggiornati, che verranno processati da dselect... inoltre si potranno
anche selezionare i pacchetti che si vorrebbero installare (in pratica si usa normalmente il tool dselect, avendo cura di non selezionare l’opzione di installare i
pacchetti, ma uscendo dal programma)... Una volta fatto, sufficiente lanciare
il seguente comando per creare i due script necessari per scaricare, da un altro
computer, i pacchetti:
29
# apt-zip-list -$\,$-aptgetaction=dselect-upgrade -$\,$-medium=/mnt/point
dove /mnt/point rappresenta il punto di mount del dispositivo; se si tratta
di una directory normale, invece, il comando sar
# apt-zip-list -$\,$-aptgetaction=dselect-upgrade -$\,$-skip-mount -$\,$-medium=/mnt/poin
upgrade verr generata la lista dei pacchetti da scaricare per eseguire un
# apt-get upgrade
il comando per fare questo
# apt-zip-list -$\,$-aptgetaction=upgrade -$\,$-medium=/mnt/point
nel caso di un supporto removibile, o
# apt-zip-list -$\,$-aptgetaction=upgrade -$\,$-skip-mount -$\,$-medium=/mnt/point
nel caso di una directory del filesystem...
dist-upgrade in questo caso, verr generata la lista dei pacchetti da scaricare
per completare il comando
# apt-get dist-upgrade
il comando per fare questo
# apt-zip-list -$\,$-aptgetaction=dist-upgrade -$\,$-medium/mnt/point
nel caso di un supporto removibile, o
# apt-zip-list -$\,$-aptgetaction=dist-upgrade -$\,$-skip-mount -$\,$-medium=/mnt/point
nel caso di una directory del filesystem...
Installare i pacchetti mancanti
in questo caso, possibile creare la lista di pacchetti necessari per l’installazione
di un programma/pacchetto e per soddisfare le sue dipendenze... il comando
# apt-zip-list -$\,$-packages=pacchetto,pacchetto1,pacchetto2 -$\,$-medium=/mnt/point
nel caso di un supporto removibile, o
# apt-zip-list -$\,$-packages=pacchetto,pacchetto1,pacchetto2 -$\,$-skip-mount -$\,$-medi
nel caso di una directory del filesystem... dove pacchetto,pacchetto1,pacchetto2
la lista dei pacchetti da installare, separati da una virgola...
Come potete vedere, l’utilizzo veramente semplice ed intuitivo...
30
Gli Script
Dopo l’esecuzione dei comandi illustrati precedentemente, verranno generati due
script:
apt-zip.options contenente le opzioni passate ad apt-zip-list, che verranno
utilizzate da apt-zip-inst per installare correttamente i pacchetti scaricati
fetch-script-wget-nomemacchina che si occuper di scaricare i pacchetti,
di controllarne l’md5 (cos da evitare i problemi derivanti da una possibile (remotamente) corruzione dei file)
In parole povere, sar semplice, sulla macchina da cui si possono scaricare i
pacchetti, lanciare il secondo script:
\$ ./fetch-script-wget-nomemacchina
cos verranno scaricati i pacchetti contenuti nella lista...
Se non si dispone di una shell dove eseguire lo script (se la macchina windows, per esempio, anche se una visitina a [1] sarebbe indicata), possibile
scaricare ugualmente i pacchetti... sufficiente, infatti, lanciare questo comando:
\$ cat fetch-script-wget-maxer | egrep "://" | cut -d " " -f 1 > lista.txt
per ottenere una lista ’normale’ di file, utilizzabile da wget o da un normale
programma per il download di file dalla rete... Se si usa wget (Disponibile anche
per windows [2]) sufficiente un
\$ wget -i lista.txt
Nota Bene:
i file scaricati, per procedere con l’installazione, devono essere nella stessa
directory che contiene il file apt-zip.options
Installazione dei pacchetti
Una volta terminato, possibile installare i pacchetti con il comando
# apt-zip-int -$\,$-medium=/mnt/point
(ricordo che la direttiva - -medium pu essere omessa se presente nel file
di configurazione di apt-zip) aggiungendo, eventualmente, - -skip-mount se si
tratta di una directory locale...
Nessuna Connessione ad Internet
In questa sezione vedremo come poter usare apt-zip in casi di totale assenza
di connessione ad Internet. Premetto che la cosa abbastanza macchinosa, e
richiede due accessi al computer provvisto di connessione.
31
L’idea
L’idea , fondamentalmente, semplice: inganneremo apt creando sulla nostra
macchina un mirror dei repository da cui vorremmo attingere i pacchetti. Il
mirror, per, sar parziale/fasullo, in quanto conterr solo i file relativi ai pacchetti
contenuti nel repository. Sar necessario utilizzare Apache, in quanto apt-zip
non inserisce nella lista i pacchetti non raggiungibili tramite una connessione
(ad esempio quelli su disco..).
Configurazione di Apache
sufficiente installare apache:
# apt-get install apache
Per una guida pi approfondita a riguardo, consiglio la lettura di: LAMP:
Linux, Apache, MySQL e PHP.
La configurazione di default di Apache utilizza come directory principale di
lavoro /var/www/, che verr usata anche da noi per creare i nostri repository
fittizi !
Apache si muove come l’utente www-data, quindi dovremo sempre preoccuparci di rendere i dati accessibili a questo utente, in modo da non ricevere
errori di tipo 403, indicanti una mancanza di permessi.
La struttura delle Directory
Prendiamo come esempio il repository Marillat, contenente software come
mplayer, w32codecs, ... molto utili per la visualizzazione di filmati.
Prima di tutto, rechiamoci sul sito ufficiale del repository (http://www.debianmultimedia.org/), cos da vedere come strutturato.
Prendiamo in analisi i repository per Sarge:
deb http://ftp.nerim.net/debian-marillat/ sarge main
come descritto nella guida I repository ed il loro utilizzo, in questo caso i file
che descrivono il contenuto del repository si trovano in http://www.debianmultimedia.org/dists/sarge/main/, in particolare nella sottodirectory binaryi386.
Procediamo, quindi, a ricreare una struttura simile in /var/www/:
# mkdir /var/www/marillat
# chown user:www-data \$_
# chmod g+s \$_
\$ cd /var/www/marillat
\$ mkdir -p dists/sarge/main/binary-i386/
\$ cd \$_
32
in questo caso, user rappresenta l’utente che normalmente utilizziamo, mentre $ ci permette di riutilizzare il parametro utilizzato nel comando precedente,
facendoci risparmiare qualche carattere (Bash tips per maggiori informazioni).
La struttura stata creata, non ci resta che recuperare i file contenuti in
quella directory: Packages.gz e Release.
Una volta scaricati, copiamoli nella directory creata:
\$ cp Packages.gz Releasee /var/www/marillat/dists/sarge/main/binary-i386/
Modifica di sources.list
Siamo pronti a modificare il file /etc/apt/sources.list in modo da utilizzare
il repository appena creato. Nel nostro caso di esempio, quindi, la riga da
aggiungere sar la seguente:
deb http://localhost/marillat/ sarge main
Una volta terminata la modifica, aggiorniamo il database dei pacchetti disponibili con un
# apt-get update
Creazione della lista di pacchetti
Ritornando al nostro ragionamento, se tutto funziona come previsto, la richiesta
di installazione di un pacchetto dovrebbe ovviamente fallire (perch non presente
realmente nel repository), per dovrebbe avere una corrispondenza con l’url reale
del pacchetto...
Un esempio vale pi di mille parole: proviamo ad installare il pacchetto
w32codecs:
# apt-get install w32codecs
Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be installed:
w32codecs
0 upgraded, 1 newly installed, 0 to remove and 313 not upgraded.
Need to get 13.2MB of archives.
After unpacking 31.9MB of additional disk space will be used.
Err http://localhost sarge/main w32codecs 1:20050412-0.0
404 Not Found
Failed to fetch http://localhost/marillat/pool/main/w/w32codecs/w32codecs_20050412-0.0_i3
E: Unable to fetch some archives, maybe run apt-get update or try with -$\,$-fix-missing?
come si pu vedere, il pacchetto non viene trovato... se sostituiamo a localhost/marillat ftp.nerim.net/debian-marillat e proviamo a scaricare il
pacchetto da una macchina connessa alla rete, vedremo che effettivamente l’url
corretto.
33
A questo punto banare l’utilizzo di apt-zip-list per la generazione della lista
di pacchetti da installare. Procediamo con il nostro esempio, e chiediamo ad
apt-zip di creare lo script per scaricare il pacchetto w32codecs:
\$ apt-zip-list -$\,$-packages=w32codecs -$\,$-skip-mount -$\,$-medium=/path/della/direct
Conversione dello script
Lo script che abbiamo ottenuto, per, contiene dei riferimenti al mirror fittizzio,
che devono essere convertiti in url corrette, riferite alla posizione reale del repository.
Per velocizzare questa conversione, ci faremo aiutare da sed:
\$ sed -e ’s/localhost$\backslash$/marillat/ftp.nerim.net$\backslash$/debian-marillat/’
fetch-script-wget-knio > fetch-script-wget-knio-url
il file fetch-script-wget-knio-url permetter di scaricare correttamente i
pacchetti.
Conclusione
L’utilizzo di questa utility veramente semplice, soprattutto rispetto alle innumerevoli comodit che offre... Personalmente uso apt-zip con un Hard Disk
da 10Gb come supporto removibile, dove sono presenti delle directory per ogni
computer che necessita di aggiornamenti/installazioni, cos da avere tutto abbastanza separato ed ordinato...
Una funzione simile offerta, dalla versione presente in Etch in poi, da synaptic, che permette l’esportazione di una lista di url per il download di pacchetti,
in modo analogo a apt-zip.
Bookmarks
[1] Bash & Windows - http://home.wanadoo.nl/fvu/Projects/Bash/Web/bash.htm
WGET for Windows - http://www.interlog.com/ tcharron/wgetwin.html
MaXeR
Estratto da ”http://guide.debianizzati.org/index.php/Apt-zip: aggiornamenti senza una connessione ve
Categorie: Apt — Repository
Apt-spy: trovare i mirror pi veloci - [email protected]
Apt-spy: trovare i mirror pi veloci
Da [email protected].
Vai a: navigazione, ricerca
34
Indice
• 1 Introduzione
• 2 Installazione
• 3 Configurazione
• 4 Utilizzo
Introduzione
La velocit con cui scarichiamo gli aggiornamenti per la nostra distribuzione
preferita, soprattutto se questi sono frequenti, molto importante e ci pu far
risparmiare del tempo prezioso. Molti fattori influiscono nel determinare la
qualit della connessione tra il nostro computer e il server web che vogliamo
raggiungere. Con apt-spy possibile testare una lista di mirror dei repository
debian per vedere quale risulta pi veloce per la nostra connessione.
Installazione
Per installare apt-spy, sufficiente un
# apt-get install apt-spy
Configurazione
Il parametro -a di apt-spy permette di restringere la ricerca solo su una determinata area geografica (es: nord america, europa, ...). Queste zone sono definite
nel file /etc/apt-spy.conf e pu tornare utile definirne una personalizzata per
risparmiare tempo.
La seguente lista ad esempio contiene solo le nazioni che hanno dato risultati
migliori sul mio precedente test in cui ho usato l’Europa come area:
Custom-Area:
AT
DE
DK
GB
GR
HR
IT
NO
PT
RO
35
Utilizzo
Per prima cosa aggiornate la lista dei mirror:
# apt-spy update
A questo punto siete pronti per lanciare apt-spy:
\$ apt-spy -d unstable -o new_sources.list -a Custom-Area -w top5mirrors.txt
Vediamo i parametri usati:
-d specifica la distribuzione da usare (stable, testing, unstable, ..)
-o specifica il file in cui salvare il sources.list generato; di default verrebbe
salvato in /etc/apt/sources.list per questo consigliato specificare un nome
diverso in modo che il nostro sources.list non venga sovrascritto!
-a specifica l’area da usare
-w specifica in quale file scrivere la lista dei migliori server trovati; il numero
predefinito di server di server che verranno listati 5
Altre opzioni interessanti:
-t specifica il tempo aprossimativo per ogni test; di default 15 secondi
-n specifica il numero di server migliori da scrivere nel file specificato con -w
-s lista di nazioni, separate da virgola, da testare. Al momento non pu essere
usato insieme all’opzione -a. Per conoscere i codici delle nazioni potete
guardare il file /etc/apt-spy.conf.
Virtual DarKness 09:55, May 31, 2005 (EDT)
Estratto da ”http://guide.debianizzati.org/index.php/Apt-spy: trovare i mirror pi%C3%B9 veloci”
Categoria: Apt
Apt-show-versions - [email protected]
Apt-show-versions
Da [email protected].
Vai a: navigazione, ricerca
Per chi come me utilizza un sistema misto (testing/sid) ogni tanto utile
sapere quanti e quali pacchetti provengono da quale release. Proprio dopo il recente aggiornamento a squeeze/sid mi sono trovato con diversi pacchetti provenienti da sid. Non tutti sono forse per ”basilari” per il sistema; intendo dire,
alcuni sono magari ”prelevabili” da squeeze, senza ”scomodare” sid. Cercando
in lungo e in largo tutte le espressioni regolari possibili con aptitude, non sono
riuscito a trovare un buon metodo per ottenere il risultato voluto. Infine sono
incappato in apt-show-versions, capendo subito che le mie ricerche avevano dato
buon frutto.
36
Indice
• 1 Sintassi e utilizzo
• 2 Alcuni esempi
– 2.1 Visualizzare tutti i pacchetti provenienti da sid
– 2.2 Contare tutti i pacchetti provenienti da sid
– 2.3 Rimuovere tutti i pacchetti provenienti da sid
• 3 Pinning
• 4 Referenze
Sintassi e utilizzo
\$ apt-show-versions <nomepacchetto>
Ottenendo:
<nomepacchetto>/<release> <aggiornabilit~> (uptodate o upgradeable from xxx to yyy) <vers
Ad esempio:
\$ apt-show-versions aptitude
aptitude/squeeze uptodate 0.4.11.11-1
Come sopra, otteniamo che il pacchetto aptitude deriva da squeeze, aggiornato ed alla versione 0.4.11.11-1.
Per ottenere una lista di tutti i pacchetti baster digitare il comando:
\$ apt-show-versions
dunque senza nessun pacchetto specificato.
Alcuni esempi
Grazie all’utilizzo di qualche pipe (=eseguire un comando/applicazione dentro
un altro) e grep (per ”filtrare” il risultato) potremmo ora scegliere, contare,
rimuovere, ... tutti i pacchetti di una particolare release.
Visualizzare tutti i pacchetti provenienti da sid
\$ apt-show-versions | grep sid
Contare tutti i pacchetti provenienti da sid
\$ apt-show-versions | grep sid | wc -l
37
Rimuovere tutti i pacchetti provenienti da sid
# aptitude remove ‘apt-show-versions | grep sid | cut -d ’/’ -f1‘
dove con ”cut -d ’/’ -f1”, dividiamo la stringa dove c’ lo slash (/) e prendiamo
solo il primo campo (-f1) per avere solo il nome del pacchetto senza le informazioni relative alla release, all’aggiornabilit e alla versione (che non sarebbero
”digerite” da aptitude).
Pinning
ATTENZIONE: al pinning!
Dal momento che l’utilit del pacchetto si trova in un sistema misto, molto
probabilmente, anche se non obbligatorio, utilizzerete il pinning per gestire i
pacchetti provenienti da release diverse. In questo caso, per un pinning ¿ 500,
i pacchetti ad esempio in testing con una versione superiore in sid verranno
considerati pacchetti appartenenti a sid ed aggiornabili. Dunque, al prossimo
aggiornamento passeranno all’ultima versione disponibile trovandosi effettivamente in sid.
Per una ”giovane” testing o un sistema misto sid/experimental dunque consigliabile un pinning inferiore a 500 per la release superiore.
Referenze
Per tutte la altre possibilit /informazioni vi rimando ai vari man dei comandi
utilizzati in questo how-to, pi a questa discussione nel forum della comunit :
http://forum.debianizzati.org/aptget-friends/etch-da-aggiorna-pinning-backportso-cosa-altro-t34728.0.html e alla guida ufficiale sulla gestione dei pacchetti: http://www.debian.org/doc/man
reference/ch-package.it.html.
Happy debian !
Brunitika
Estratto da ”http://guide.debianizzati.org/index.php/Apt-show-versions”
APT uso avanzato: mixare releases diverse - [email protected]
APT uso avanzato: mixare releases diverse
Da [email protected].
Vai a: navigazione, ricerca
Spesso abbiamo la necessit di installare la nuova versione di un pacchetto
di cui proprio non possiamo fare a meno, che per non disponibile per il rilascio
di Debian che abbiamo installato.
38
Il caso pi frequente probabilmente quello di un’ installazione di Testing
(Etch) con la necessit di installare anche pacchetti presenti solo in Unstable o
in Experimental, oppure di voler usare un repository con pacchetti particolari,
ma compilati per una release di Debian diversa dalla nostra.
APT nostro fido alleato anche in questi frangenti, permettendoci di utilizzare fonti per pacchetti di releases diverse (e soddisfarne le dipendenze) senza
costringerci ad un upgrade dell’intera distribuzione e senza dover impazzire per
risolvere conflitti e inconsistenze. Questa caratteristica definita anche aptpinning, dal pin che si imposta nel file preferences.
In questo how-to mostrer come utilizzare pacchetti Debian provenienti da
Testing, Unstable, Experimental, Marillat (multimedia/video) e Rarewares.org
(multimedia/audio), ma le istruzioni sono facilmente riportabili anche ad altre
situazioni (unstable + experimental, stable + testing, stable + unstable, stable
+ testing + unstable, ecc...).
Assicuriamoci di essere l’ utente root e procediamo.
Per prima cosa editiamo il file /etc/apt/sources.list ed inseriamo gli archivi
dei pacchetti Debian che utilizzeremo:
### Debian Ufficiale -$\,$- Testing
deb http://ftp.it.debian.org/debian/ testing main non-free contrib
### Debian Ufficiale -$\,$- Testing Sicurezza
deb http://security.debian.org/ testing/updates main contrib non-free
### Debian Ufficiale -$\,$- Sid
deb http://ftp.it.debian.org/debian/ unstable main non-free contrib
### Debian Ufficiale -$\,$- Experimental
deb http://ftp.debian.org/debian/ ../project/experimental main
### Multimedia -$\,$- Audio -$\,$- Rarewares
deb http://www.rarewares.org/debian/packages/unstable ./
### Multimedia -$\,$- Video -$\,$- Marillat
deb ftp://ftp.nerim.net/debian-marillat/ etch main
deb ftp://ftp.nerim.net/debian-marillat/ sid main
A questo punto dobbiamo preparare due files normalmente non presenti
sulla nostra debianbox: si tratta dei file preferences e apt.conf. Questi due
file istruiranno APT su come gestire le dipendenze dei pacchetti, informandolo
su come comportarsi in caso di conflitti e altri problemi.
Creiamo il file preferences:
# touch /etc/apt/preferences
editiamolo col nostro editor di fiducia e inseriamo queste direttive:
39
Package: *
Pin: release o=Unofficial Multimedia Packages
Pin-Priority: 950
Package: *
Pin: release o=xmixahlx
Pin-Priority: 900
Package: *
Pin: release a=testing
Pin-Priority: 850
Package: *
Pin: release a=unstable
Pin-Priority: 800
Package: *
Pin: release a=experimental
Pin-Priority: 750
Il pinning pu essere orientato ad un archivio, un’origine, la versione di un
pacchetto, un componente, ecc...
Con ”o=” si specifica l’ origine (la distribuzione) del pacchetto, con ”a=”
l’archivio (sarge,sid, stable, ecc...).
Questo dato reperibile in modo inequivocabile attraverso APT, andando a
sbirciare all’interno del file ”Release” che contenuto in tutti i repository ufficiali.
Per archivi personali e/o non ufficiali, invece, non sempre e necessariamente
presente (purtroppo).
Vediamo alcuni esempi:
# cd /var/lib/apt/lists
# cat www.rarewares.org_debian_packages_unstable_._Release
Archive: unstable
Origin: xmixahlx
Label: xmixahlx_rarewares-unstable
Architecture: i386
# cat ftp.nerim.net_debian-marillat_dists_testing_main_binary-i386_Release
Archive: testing
Component: main
Origin: Unofficial Multimedia Packages
Label: Unofficial Multimedia Packages
Architecture: i386
Dove:
• Archive = l’ archivio Debian a cui i pacchetti appartengono (ad es.:
stable, testing. ecc...);
40
• Component = indica il tipo di componente (ad es.: main, contrib, nonfree);
• Origin = specifica il proprietario del repository;
• Label = identifica il repository: potete inserire descrizioni, ecc...;
• Architecture = l’architettura dei pacchetti contenuti nel repository (ad
es.: i386, sparc, source, ecc...).
Possiamo vedere che nel file Release contenuto proprio il dato che stavamo
cercando: Origin.
Ora creiamo il file apt-conf
# touch /etc/apt/apt.conf
editiamolo inserendo quanto segue:
APT::Default-Release "testing";
APT::Cache-Limit 15000000;
Apt::Get::Purge;
APT::Clean-Installed;
APT::Get::Fix-Broken;
APT::Get::Fix-Missing;
APT::Get::Show-Upgraded "true";
Facciamo l’ update del database dei pacchetti:
# apt-get update
D’ora in avanti avremo due possibilit per installare un nuovo pacchetto: il
metodo che usiamo di solito e cio:
# apt-get install nome_pacchetto
che utilizzer pacchetti proveniente dalla versione impostata come DefaultRelease in apt.conf, oppure il comando
# apt-get install -t versione_di_debian nome_pacchetto
che provveder a installare il pacchetto da noi richiesto per la versione specificata (versione debian), risolvendo automaticamente le dipendenze.
Happy debian!
Autore: Keltik
Revisione: Nest
Verificato: The Noise
Estratto da ”http://guide.debianizzati.org/index.php/APT uso avanzato: mixare releases diverse”
Categoria: Apt
Impedire l’ aggiornamento di un pacchetto - [email protected]
41
Impedire l’ aggiornamento di un pacchetto
Da [email protected].
Vai a: navigazione, ricerca
Debianized
Questo un articolo consigliato dallo staff di Debianizzati.
Gli articoli Debianized sono scritti in maniera particolarmente accurata (sia
nella forma che nel contenuto) e la loro correttezza stata verificata personalmente da pi persone nella community.
A volte per motivi di affidabilit / stabilit necessario mantenere una specifica
versione di un pacchetto precedentemente installato.
Lo scopo di questo Tips proprio quello di congelare gli aggiornamenti di un
pacchetto in modo da poter tranquillamente eseguire un apt-get upgrade senza
aver timore di compromettere il nostro sistema.
Con dpkg, si esporta la lista dei pacchetti selezionati:
dpkg -$\,$-get-selections > selections.txt
Poi si edita il file risultante selections.txt, cambiando la linea contenente
il nome del pacchetto che si vuole tenere in ”hold”, per esempio nel caso di
mysql-server, da questo:
mysql-server install
a quest’altro:
mysql-server hold
Successivamente si salva il file, e ricarica il tutto dentro il database di dpkg
con:
dpkg -$\,$-set-selections < selections.txt
Naturalmente lo status ”hold” di un pacchetto potrebbe impedire l’aggiornamento
di altre applicazioni da esso dipendenti.
Autore: Keltik
Estratto da ”http://guide.debianizzati.org/index.php/Impedire l%27 aggiornamento di un pacchetto”
Categorie: Debianized — Apt
Aptitude - [email protected]
Aptitude
Da [email protected].
Vai a: navigazione, ricerca
42
Indice
• 1 Introduzione
• 2 Cos’ Aptitude
• 3 Uso da linea di comando
• 4 Interfaccia grafica
– 4.1 Descrizione dell’interfaccia grafica
– 4.2 Riassunto principali comandi
– 4.3 Esempio: aggiornare i pacchetti
• 5 Risolvere eventuali problemi con delle dipendenze
• 6 Cercare un pacchetto
– 6.1 Ricerca avanzata
• 7 Personalizzare la visualizzazione dei pacchetti
– 7.1 Personalizzare il raggruppamento in sezioni
• 8 Riferimenti
Introduzione
Questa guida dedicata all’uso di Aptitude.
Il completissimo Manuale Utente di Aptitude in formato html si pu
trovare in /usr/share/doc/aptitude/html/en/index.html, installando il pacchetto aptitude-doc-en. Oppure on-line al seguente indirizzo: aptitude user’s
manual. Purtroppo il manuale solo in inglese.
Cos’ Aptitude
Aptitude un frontend per la gestione avanzata dei pacchetti di una distribuzione
Debian, ma risulta valida per tutte le distribuzioni che supportano APT (http://www.debian.org/doc/manua
howto/ch-distros.it.html).
Aptitude ormai lo strumento preferenziale per l’amministrazione dei pacchetti su Debian, in quanto non solo raggruppa in un unico semplice programma
le funzionalit di molti tool (apt-get, apt-cache ...) ma anche perch permette di
gestire in modo molto pi facile (ed efficace) situazioni complesse (dipendenze,
dipendenze inverse, rimozione pacchetti non utilizzati, ecc ...).
Aptitude un frontend a dpkg esattamente come apt-get, che sembra essere
destinato a sostituire integralmente lo stesso apt-get (e affini), tanto che nelle
release notes di Sarge si legge:
Citazione:
43
Il metodo di aggiornamento raccomandato fra le release Debian GNU/Linux
prevede l’utilizzo dello strumento di gestione dei pacchetti aptitude. Tale strumento rende le decisioni riguardanti le installazioni dei pacchetti pi sicure che
l’esecuzione diretta di apt-get.
e anche:
Citazione:
Test di aggiornamento hanno mostrato che la versione di sarge di aptitude
migliore sia di apt-get sia della versione di woody di aptitude nella risoluzione
di dipendenze complesse durante un aggiornamento.
Si pu utilizzare Aptitude in due modi: da linea di comando, cio come aptget (la sintassi e le opzioni sono identiche, o quasi), oppure tramite l’interfaccia
visuale basata sulle librerie ncurses.
L’interfaccia visuale verr trattata pi diffusamente, perch si ritiene che sia
uno strumento fondamentale per la gestione dei pacchetti e soprattutto per la
diagnostica e la risoluzione degli eventuali problemi riscontrati.
Prima di iniziare
Prima di iniziare a mettere le mani sulla tastiera, notiamo che aptitude, a
differenza della maggior parte delle opzioni di apt-get, si pu lanciare anche con
i diritti di utente comune.
Poich per l’effettiva installazione o rimozione dei pacchetti necessario possedere
i diritti di root, possibile e caldamente consigliato usare questa possibilit per
effettuare qualunque prova, visto che non si sar in grado di modificare neanche
una virgola del sistema prima di aver inserito la password di root.
Uso da linea di comando
Anche dalla linea di comando l’uso di aptitude molto semplice e comodo. Si
usa in genere la seguente forma:
aptitude azione [argomenti...]
azione dice ad aptitude quale azione svolgere; i rimanenti argomenti dipendono dall’azione scelta e consistono tipicamente in una lista di nomi di pacchetti.
Le azioni pi importanti sono:
aptitude update aggiorna la lista dei pacchetti (come premere ’u’ dall’interfaccia
visuale o come apt-get update)
aptitude safe-upgrade aggiorna tutti i pacchetti aggiornabili senza che nascano
conflitti. Se l’aggiornamento di un pacchetto causa un conflitto il pacchetto non viene aggiornato (piuttosto che, ad esempio, rimuovere i pacchetti che generano il conflitto)
aptitude full-upgrade anche questo comando aggiorna tutti i pacchetti,
ma pi aggressivo nella risoluzione delle dipendenze: nuovi pacchetti saranno
installati e altri rimossi, fino a quando tutte le dipendenze non saranno
44
soddifatte. Questo comando potrebbe fare cose non desiderate (come, appunto, installare nuovi pacchetti o rimuoverne altri) quindi deve essere
usato con cautela.
aptitude [ install | remove | purge | reinstall ] pkg1 [pkg2...] questi
comandi installano, rimuovono o fanno il purge (eliminazione anche dei file
di configurazione) dei pacchetti specificati.
aptitude search espressione1 [espressione2...] mostra su terminale i
pacchetti che contengono nel nome una delle espressioni fornite. Le espressioni possono essere semplici stringhe o anche espressioni pi complesse
(”Search Patterns”).
aptitude show pkg1 [pkg2...] mostra su terminale le informazioni di ogni
pacchetto specificato.
I comandi che installano, aggiornano o rimuovo pacchetti accettano tutti il
parametro ”-s” che st per ”simula”. Quando viene passato ”-s” nella linea di
comando, aptitude svolge tutte le azioni che svolgerebbe normalmente, ma non
scarica o installa/rimuove effettivamente nessun file.
Interfaccia grafica
Descrizione dell’interfaccia grafica
La prima schermata che aptitude ci presenta, dopo che l’abbiamo lanciato da
linea di comando, e dopo il caricamento delle informazioni attuali sui pacchetti
(”caricamento della cache”), divisa orizzontalmente in due parti.
Nella parte superiore troviamo una zona a sfondo blu con un men che propone
diverse opzioni, e una zona a sfondo nero in cui si vede l’albero dei pacchetti
disponibili, classificati in base al loro stato (installati, non installati, ecc.).
Per vedere il contenuto di uno dei rami usiamo le frecce ”su” e ”giu” fino a
selezionare la riga corrispondente e premiamo invio. Sotto al ramo in questione
ora abbiamo dei sotto-rami, e premendo invio sui vari sotto-rami si accede allo
stesso modo ai sotto-sotto-rami e cos via, fino ad arrivare ai pacchetti.
La parte inferiore invece dedicata alla descrizione del pacchetto attualmente
selezionato. Alcuni pacchetti, per esempio k3b, hanno una descrizione molto
lunga: premendo TAB e usando le frecce possibile leggerla tutta.
Ogni riga che mostra il nome di un pacchetto riporta anche molte informazioni. Per esempio, riporto lo stato di alcuni pacchetti nel mio sistema (nota:
il mio sistema una sarge, ma ho installato diversi pacchetti da testing e anche
alcuni da unstable. Per informazioni sul pinning vedere APT uso avanzato:
mixare releases diverse ):
stato
nome
vers. attuale
vers. aggiornata
i
aptitude
0.2.15.9-2
0.2.15.9-2
45
i
i A
c
p
amule
amule-common
hotplug
apmd
2.0.3-3
2.0.3-3
<nessuna>
<nessuna>
2.0.3-4
2.0.3-4
0.0.200403
3.2.2-3
Possiamo vedere che:
• aptitude installato ed alla versione pi recente
• amule installato ma aggiornabile alla versione 2.0.3-4
• amule-common installato per soddisfare una dipendenza (A), cio solo a
causa di un pacchetto che dipende da lui (amule). Anch’esso aggiornabile
• hotplug non installato, ma quando l’ho cancellato ho scelto di mantenere
i file di configurazione (c)
• apmd non installato (p), oppure stato cancellato con l’opzione ”purge”
(comando: ” ”): lo stato risultante il medesimo
Tramite semplici comandi si possono visualizzare molte altre informazioni.
I comandi principali sono:
v visualizza le versioni disponibili per il pacchetto
d visualizza le dipendenze del pacchetto
r visualizza i pacchetti che dipendono dal pacchetto selezionato (dipendenze
inverse)
C scarica da internet e visualizza il changelog del pacchetto
q chiude la schermata attuale e passa a quella precedente
Per una lista completa vedere la guida online con ”?”.
Ora premiamo invio su di un pacchetto: ci appare la schermata relativa al
pacchetto, con la descrizione completa e molte altre informazioni, organizzate
ad albero come abbiamo gi visto. Se ci interessa qualche informazione in pi
su uno dei pacchetti che troviamo in questa schermata, lo selezioniamo e premiamo invio: appaiono le versioni disponibili del pacchetto. Se selezioniamo
una delle versioni e premiamo invio ci ritroviamo nella schermata informativa
di quel pacchetto. Fate attenzione perch in questo modo si pu perdere facilmente l’orientamento. Torniamo alla vista dell’albero dei pacchetti premendo
”q” tante volte quanto serve (se vi sbagliate e lo premete una volta in pi, aptitude vi chiede se volete uscire dal programma: per il momento dite di no ;-)).
46
Riassunto principali comandi
u (minuscolo) aggiorna la lista dei pacchetti.
+ marca il pacchetto selezionato per l’installazione o l’aggiornamento.
- (segno meno) marca il pacchetto selezionato per la rimozione.
(underscore) marca il pacchetto selezionato per la rimozione, eliminando
tutti i file di configurazione (purge).
U (maiuscolo) marca per l’aggiornamento tutti i pacchetti per cui sia disponibile una nuova versione.
= mette in hold il pacchetto selezionato. Questo vuol dire che il pacchetto
non verr aggiornato anche se una nuova versione disponibile e si seleziona
di aggiornare i pacchetti (ad esempio con U).
C (maiuscolo) scarica e mostra il changelog del pacchetto selezionato.
b Trova il prossimo pacchetto difettoso.
g Procede con l’installazione, la rimozione e l’aggiornamento.
Nota
Dopo aver premuto uno dei comandi +, -, o U bisogner premere due volte g
per eseguire le azioni richieste: dopo la prima volta verr visualizzata il lista dei
pacchetti installati/aggiornati/rimossi/mantenuti, dopo il secondo g verranno
eseguite le operazioni richieste.
Esempio: aggiornare i pacchetti
Per la descrizione dell’utilizzo di aptitude useremo come esempio una sessione
reale, in cui vengono svolte alcune normali operazioni di aggiornamento e amministrazione dei pacchetti.
Per prima cosa, nella nostra sessione di amministrazione, aggiorniamo le
informazioni sui pacchetti disponibili. Con apt-get avremmo digitato apt-get
update, mentre in aptitude sufficiente premere ”u”.
Fate attenzione perch aptitude non chiede conferma dopo che avete impartito
un comando, quindi non digitate nulla senza prima essere sicuri/e di cosa state
per fare.
Dopo aver fatto l’update potremmo trovare una, due, o tre voci nuove
nell’albero dei pacchetti: ”Aggiornamenti di sicurezza”, ”Pacchetti aggiornabili”, e ”Pacchetti nuovi”. Per fare scomparire le prime due necessario aggiornare tutti i pacchetti contenuti nei rispettivi rami, mentre per far sparire la
terza sufficiente premere ”f” (forget).
Una buona regola per l’amministratore quella di far s che alla fine dell’aggiornamento
queste tre voci non siano presenti. Se ci sono dei pacchetti che risultano aggiornabili, ma che non volete aggiornare, probabilmente dovreste bloccarli alla
47
versione desiderata con ”=”, oppure dovreste leggere la guida gi citata sul
pinning.
Ora torniamo ai pacchetti mostrati prima e supponiamo di voler aggiornare
amule: lo selezioniamo e premiamo ”+”. Questo marcher in verde, cio per
l’installazione, sia amule che amule-common.
Poi per ci viene un’idea migliore, e decidiamo di aggiornare tutti i pacchetti
aggiornabili, quindi digitiamo ”ˆ” per risalire al ramo superiore della vista,
finch arriviamo a Pacchetti installati poi usiamo la freccia in alto e se
necessario risaliamo ancora ai rami superiori finch non arriviamo a Pacchetti
aggiornabili e qui premiamo ”+”. Questo marcher per l’installazione tutti i
pacchetti aggiornabili :-D
Risolvere eventuali problemi con delle dipendenze
Dopo aver marcato per l’installazione tutti i pacchetti aggiornabili, aptitude ci
segnala nella zona blu che c’ un pacchetto ”errato” cio con problemi di dipendenze. Senza battere ciglio premiamo ”b” e leggiamo:
iB
udev
0.070
0.074
dove ”B” significa ”con errori”, e sotto si legge:
Alcune dipendenze di udev non sono soddisfatte:
*udev
in conflitto con module-init-tools (< 3.2pre9-1)
premiamo invio su udev, e ci appare la schermata con tutte le informazioni su
udev stesso, comprese le dipendenze: selezioniamo module-init-tools e premiamo
invio. Ora ci appaiono tutte le versioni disponibili di module-init-tools, tra cui
vediamo che presente la 3.2pre9-1: non ci resta che selezionarla e marcarla per
l’installazione :-D.
Quello che successo semplicemente che nel mio sistema udev in testing,
e fino alla versione 0.070 funzionava bene con module-init-tools-3.2pre1-2, che
invece in stable. Aggiornando tutto abbiamo marcato per l’installazione il
nuovo udev, versione 0.074, che per dipende da module-init-tools ¿= 3.2pre9-1.
Poich questo pacchetto in testing, APT non ha potuto risolvere la dipendenza
automaticamente: se un pacchetto in una distribuzione (e APT configurato
nel modo giusto) non verr mai passato ad un’altra, a meno che non siamo noi
a farlo manualmente.
Si prega di notare che questo comportamento non un bug, ma una cosa
voluta: APT ha ricevuto un comando ambiguo e lo segnala generando un errore,
proprio come noi ci aspettiamo da lui ;-).
In effetti, i reali colpevoli della generazione dell’errore siamo noi. Infatti,
per permettere ad APT di gestire correttamente delle dipendenze in testing,
dobbiamo semplicemente usare ”testing” come distribuzione predefinita.
Ricordate che abbiamo lanciato aptitude semplicemente con il comando ”aptitude”? e ricorderete anche che il mio sistema una sarge (stable). Questo
48
equivale a lanciare aptitude con il comando ”aptitude -t stable”, da cui il nostro
problema.
Se avessimo usato ”aptitude -t testing” aptitude avrebbe risolto correttamente la dipendenza, ma attenzione: in questo modo diciamo ad aptitude che
testing la nostra release predefinita (che non vero) e lui ci mostrer come aggiornabili tutti i pacchetti che lo sono in testing, cio anche tutti quelli in stable
(come peraltro ci aspettiamo che faccia ;-)).
Il fatto che aptitude, per quanto avanzato, ancora non legge il pensiero
dell’amministratore, e fa solo il suo mestiere: prende tutte le decisioni ovvie
autonomamente, e genera un errore quando non sa cosa decidere.
Cercare un pacchetto
Ora supponiamo di voler vedere se in debian c’ qualche programma per la gestione dei contenuti, e l’acronimo in inglese ”cms”. Per fare questo possiamo
usare le funzioni di ricerca di aptitude: per prima cosa digitiamo / per la ricerca
della stringa ”cms” nei nomi dei pacchetti.
Ora per ci viene in mente che un cms non contiene necessariamente la stringa
”cms” nel nome, quindi facciamo, con la stessa stringa, una ricerca nelle descrizioni dei pacchetti: digitiamo ancora / e inseriamo ” dcms”. Aptitude ci
mostra il primo risultato della ricerca, per vedere i risultati successivi premiamo n, e per tornare indietro nella lista \.
Per Limitare la lista dei pacchetti visualizzati possiamo usare il comando l,
che si usa allo stesso modo di / ma mostra tutti e soli i pacchetti corrispondenti
alla ricerca, organizzati ad albero nel modo che abbiamo gi visto.
Ricerca avanzata
Aptitude supporta numerose opzioni di dicerca come il precedente d per cercare una stringa nelle descrizioni. La stringa di ricerca pu inoltre essere una
REGEXP (espressione regolare). Queste opzioni possono essere usate indifferentemente da linea di comando (dopo search) che dall’interfaccia grafica
(premendo / oppure l).
Di seguito si riporta qualche esempio. fare riferimento alla guida di aptitude
citata all’inizio per i dettagli.
Volete sapere quali pacchetti di gnome 2.14 son entrati in etch? Semplice:
\$ aptitude search gnome~V2.14
Il seguente comando cerca invece i pacchetti che contengono editor nella
descrizione e che appartengono alla sezione sound:
\$ aptitude search ~deditor~ssound
Personalizzare la visualizzazione dei pacchetti
Con aptitude possibile personalizzare sia i campi visualizzati nella lista dei
pacchetti, sia il raggruppamento in sezioni e sotto-sezioni.
49
Personalizzare il raggruppamento in sezioni
Le sezioni nelle quali sono raggruppati i pacchetti quando si avvia Aptitude
(e non solo) sono generate dinamicamente da un insieme di regole separate da
virgola. &grave; possibile vedere e modificare le regole che generano la vista
attuale premendo ’G’.
Le regole vengono elaborate in sequenza dalla prima all’ultima
Vediamo alcune regole:
filter(missing) non visualizza i pacchetti che esistono solo nelle dipendenze
di un altro pacchetto.
status Raggruppa i pacchetti in:
• Installati
• Non installati
• Aggiornamenti della sicurezza
• Aggiornabili
• Obsoleti
• Virtuali
section[(mode [,passthrough])] Raggruppa i pacchetti in base alla loro
sezione. mode pu assumere uno dei seguenti valori:
]Raggruppa un base alla sezione dell’archivio debian (esempio: ”main”,
”contrib”, ”non-free” ...). Raggruppa in base alla sezione logica (esempio: ”adim”, ”base”, ”devel”, ”gnome”, ”kde”, ecc ...) Raggruppa
in base delle sezioni formate dalla somma delle precedenti (esempio:
”controb/admin”, ”contrib/devel”, ”non-free/admin”, ”non-free/devel”).
Crea un albero dei pacchetti raggruppandoli per task.
] Se viene usato il secondo parametro opzionale passthrough i pacchetti
che per qualche motivo non hanno una sezione vengono passati alla regola
successiva senza essere inseriti in categorie.
All’avvio di aptitude, premendo ’G’ si pu vedere che vengono usate le
seguenti regole:
topdir
subdir
none
task filter(missing),task,status,section(subdir,passthruough),section(topdir,pass
In base a quanto detto la spiegazione di queste regole semplice: visualizza solo i pacchetti reali, crea l’albero dei task, raggruppa i pacchetti per stato,
per ogni stato raggruppa in sezioni logiche e all’interno di ogni sezione logica
raggruppa in base alla sezione dell’archivio.
50
Riferimenti
• Aptitude Introduction: ottima introduzione ad Aptitude (in inglese) che
tratta (tra le altre cose) molte pi opzioni della linea di comando rispetto
alla presente guida (per vedere tutte le diapositive cliccare sullo 0 che
appare in basso al centro al passaggio del mouse).
• Aptitude User’s Manual: completissimo manuale di riferimento di
Aptitude (disponibile solo in inglese). Lo stesso manuale si pu trovare
in /usr/share/doc/aptitude/html/en/index.html installando il pacchetto aptitude-doc-en.
Estratto da ”http://guide.debianizzati.org/index.php/Aptitude”
Categoria: Apt
Controllare lo stato di un pacchetto - [email protected]
Controllare lo stato di un pacchetto
Da [email protected].
Vai a: navigazione, ricerca
Indice
• 1 Introduzione
• 2 Debian Quality Assurance
• 3 PTS: Package Tracking System
–
–
–
–
–
–
–
–
–
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
Stato di un pacchetto
General Information
Bugs Count
Subscription - Package Tracking System
Binary Package(s)
Available versions
Sources Files
Testing Status
Conclusione
Introduzione
Spesso ci si trova in situazioni in cui alcuni pacchetti non sono installabili,
oppure sembrano spariti dai repository, ...
Questa piccola guida mostra alcuni strumenti utilizzabili dagli utenti per
monitorare lo stato di un pacchetto...
51
Debian Quality Assurance
Faremo riferimento a questo progetto Debian, che ha lo scopo di mantenere la
qualit della distribuzione Debian al livello pi alto possibile! La home page del
progetto raggiungibile all’indirizzo http://qa.debian.org .
PTS: Package Tracking System
Il Package Tracking System ha lo scopo di tener traccia dei pacchetti presenti
in Debian nei seguenti campi:
• Storia del Pacchetto
• Dati del Maintainer
• Rapporto con Testing
• Bug del pacchetto
• Versioni presenti in Debian
• Dati correlati al pacchetto:
– Changelog
– Copyright
– Buildd log
– Lintian report
– Popcon report
Stato di un pacchetto
General Information
Informazioni relative ai maintainer del pacchetto ed al suo stato (versione,
sezione, priorit , ...)
Bugs Count
Monitor dei bug di un pacchetto. Sono classificati nel seguente modo:
All bugs tutti i bug presenti nel pacchetto
Release Critical bug con severit critical, grave o serious che potrebbero determinare la rimozione del pacchetto nel momento di rilascio della prossima
release stabile
Important and Normal bug con severit alta
52
Minor and Wishlist piccoli bug e richieste
Fixed and Pending numero di bug chiusi ed in attesa di chiusura (quando
il pacchetto in compilazione, quindi non presente nei repository)
Subscription - Package Tracking System
Consente di essere informati sullo sviluppo del pacchetto (nuove versioni, bug,
aggiornamenti) tramite una e-mail.
Questo servizio consente, quindi, di essere informati su qualsiasi cambiamento relativo allo stato del pacchetto, consigliato per tutti i pacchetti importanti/indispensabili per fine lavorativi o di studio :)
Binary Package(s)
Elenco dei pacchetti binari (il collegamento porta alla pagina ufficiale del pacchetto su packages.debian.org) ed i suoi relativi bug, riportati nell’ordine descritto in Bugs Count.
Available versions
Le versioni disponibile del pacchetto. Un ottimo indicatore per sapere subito se
il pacchetto presente o no nella release interessata.
Sources Files
Link ai sorgenti del pacchetto (quelli alla versione pi recente, presente in unstable).
I sorgenti sono composti da due file, pi uno contenente la ’descrizione’:
• .orig.tar.gz rappresenta il pacchetto ufficiale, rilasciato dall’Upstream Author
• .diff.gz contiene la patch da applicare ai sorgenti ufficiali per ottenere il
pacchetto Debian (di norma aggiunge una directory debian/ all’interno
dei sorgenti
• .dsc contiene la descrizione del pacchetto pi altri dati importanti.
Testing Status
Questa la sezione pi importante del PTS, in quanto mostra lo stato del pacchetto
nei confronti della release Testing.
Altro sito (questo non ufficiale) per monitorare lo stato dei pacchetti che
cercano di entrare in testing il seguente: bjorn.haxx.se/debian/. Cercando
un pacchetto potrete vedere tutti i motivi che bloccano la migrazione di un
pacchetti in testing (bug release critical, attese di altri pacchetti, tempo minimo
non trascorso ecc...).
53
Altra chicca del precedente link la possibilit di monitorare quali pacchetti
entrano in testing o sono rimossi ogni giorno.
Conclusione
Questa piccola introduzione all’uso degli strumenti che Debian mette a disposizione degli sviluppatori vuole essere di aiuto a tutti gli utenti che, utilizzado
testing od unstable, si trovano in difficolt durante i periodi di transizione dei
pacchetti o di aggiornamento...
Per problemi non risolvibili tramite questa pagina, comunque, sempre a
disposizione il Forum
Estratto da ”http://guide.debianizzati.org/index.php/Controllare lo stato di un pacchetto”
Categoria: Apt
Gestione dei metapacchetti - [email protected]
Gestione dei metapacchetti
Da [email protected].
Vai a: navigazione, ricerca
Indice
• 1 Introduzione
• 2 Definizione
• 3 Installazione/Rimozione
– 3.1 Installare un metapacchetto
– 3.2 Rimuovere un metapacchetto
∗ 3.2.1 Rimuovere l’intera suite
∗ 3.2.2 Rimuovere uno o pi pacchetti della suite
• 4 Creare un metapacchetto
– 4.1 Esempio pratico
Introduzione
Con questa guida vedremo di scoprire i metapacchetti e capire come utilizzarli/gestirli nel nostro sistema. Per capire alcuni concetti spiegati si dar per
sottinteso la conoscenza del funzionamento del gestore di pacchetti Apt-Get.
Per chi non conoscesse il sistema o semplicemente desidererebbe un riassunto a
riguardo, vi rimando a una nostra un’introduzione : Introduzione all’ Apt System.
Il concetto base da capire quello di dipendenza.
54
Definizione
Per la definizione di metapacchetto vi rimando al nostro glossario: Metapacchetto.
Installazione/Rimozione
Capito cosa sono i metapacchetti, ci accorgeremo subito di un problema: se per
l’installazione di una suite, come ad esempio GNOME, l’installazione di un solo
metapacchetto ci permette l’installazione di tutti i pacchetti necessari, essendo
quest’ultimi tutte dipendenze del metapacchetto, se si andr a rimuovere un
pacchetto della suite in questione, il metapacchetto precedentemente installato
avr una dipendenza non soddisfatta. Questo far s che ad esempio Aptitude
rimuover tutti i pacchetti della suite in quanto risultanti come dipendenze di
un pacchetto che non pi installato (il metapacchetto appunto); altri comandi,
come ad esempio:
# apt-get autoremove
porteranno allo stesso risultato, sempre per via di dipendenze installate per
un pacchetto che non esiste pi.
NOTA BENE: questo comportamento dei pacchetti in realt un sistema
molto ben pensato per ”pulire” il sistema da pacchetti ”inutili” (o meglio detto,
non pi utili). Facendo un piccolo esempio, se ho installato un pacchetto Y per
soddisfare una dipendenza di un pacchetto X, eliminato X il pacchetto Y non
mi servir pi, essendo stato installato unicamente per far funzionare X. Immaginando di aver appena eliminato il pacchetto X, Aptitude andr automaticamente
ad eliminare il pacchetto Y ”ricordandosi” di averlo installato come dipendenza
del pacchetto X. apt-get autoremove ”vedr ” il pacchetto Y come installato da
dipendenza e lo eliminer portando allo stesso risultato.
Installare un metapacchetto
In questo caso non occorre nessuna attenzione particolare: installeremo il metapacchetto come qualsiasi altro pacchetto con il nostro gestore preferito (aptitude,
apt-get, synaptic, ...), il quale si ”porter dietro” tutti i pacchetti del caso (come
sue dipendenze).
Rimuovere un metapacchetto
Il problema di quest’azione riassunto all’inizio di questo capitolo.
Rimuovere l’intera suite Se vogliamo semplicemente eliminare tutta la
suite’ del metapacchetto andremo semplicemente a rimuoverlo con il nostro
gestore preferito. Nel caso di aptitude, provveder lui stesso ad eliminare le
dipendenze (dunque i pacchetti della suite); nel caso di apt-get, dopo il classico
55
# apt-get -$\,$-purge remove nomemetapacchetto
dovremo dare ancora
# apt-get autoremove
proprio per rimuovere le dipendenze installate per il metapacchetto.
Rimuovere uno o pi pacchetti della suite In questo caso, come gi detto
in precedenza, la rimozione di uno o pi pacchetti della suite, rimuover con
essi il metapacchetto principale (essendo lui stesso senza una o pi dipendenze
soddisfatte). A questo punto, senza il metapacchetto che faceva da ”scheletro”
alla suite, i pacchetti di quest’ultima verranno eliminati da aptitude o da apt-get
autoremove.
Per eliminare dunque dei pacchetti da una suite utilizzeremo apt-get e aptitude
in modo combinato. Facciamo un esempio:
• come suite prenderemo GNOME. I metapacchetti che la installano sono
gnome e gnome-desktop-environment
• andremo ad eliminare il pacchetto evolution della suite, senza eliminare
quest’ultima.
Inizieremo dunque con apt-get:
# apt-get -$\,$-purge remove evolution
Lanciato il comando andremo ad eliminare 5 pacchetti: gnome, gnomedesktop-environment, evolution, evolution-exchange, evolution-plugins, tra i quali
noteremo i due metapacchetti della suite in questione. Lo stesso apt-get ci suggerir poi di utilizzare apt-get autoremove per eliminare le dipendenze non soddisfatte (che sono per in questo caso tutti i pacchetti della suite). Per mantenere
questi pacchetti daremo il comando:
# aptitude keep-all
che andr ad eliminare la loro eliminazione (scusate il gioco di parole).
L’opzione keep-all di aptitude cancella tutte le azioni impostate per ogni pacchetto; qualsiasi azione d’installazione, rimozione o aggiornamento verr rimossa
dallo stato di tutti i pacchetti interessati.
A questo punto, avremo la nostra suite perfettamente funzionante con le
”modifiche” apportate.
56
Creare un metapacchetto
Come abbiamo visto in precedenza, i metapacchetti sono molto utili per installare suite di programmi con un solo comando (installando il metapacchetto
appunto). Con il pacchetto equivs tutto molto semplice; incominceremo con
l’installarlo:
# aptitude install equivs
A questo punto lanceremo il comando:
\$ equivs-control controller
il quale creer un file controller per il nostro metapacchetto (il nome arbitrario, potete scegliere quello che volete). Il suo aspetto il seguente (dopo
averlo aperto in un editor qualsiasi):
### Commented entries have reasonable defaults.
### Uncomment to edit them.
Section: misc
Priority: optional
Standards-Version: 3.6.2
Package: <package name; defaults to equivs-dummy>
# Version: <enter version here; defaults to 1.0>
# Maintainer: Your Name <[email protected]>
# Pre-Depends: <comma-separated list of packages>
# Depends: <comma-separated list of packages>
# Recommends: <comma-separated list of packages>
# Suggests: <comma-separated list of packages>
# Provides: <comma-separated list of packages>
# Replaces: <comma-separated list of packages>
# Architecture: all
# Copyright: <copyright file; defaults to GPL2>
# Changelog: <changelog file; defaults to a generic changelog>
# Readme: <README.Debian file; defaults to a generic one>
# Extra-Files: <comma-separated list of additional files for the doc directory>
Description: <short description; defaults to some wise words>
long description and info
.
second paragraph
Andremo poi ad inserire i campi illustrati dopo aver decommentato le righe
che vogliamo definire. Il campo pi importante sicuramente Depends, che ha
il ruolo fondamentale del metapacchetto, senza dimenticarci di dare il nome al
metapacchetto. Gli altri campi sono pi o meno facoltativi (inserire la versione,
il mantenitore e una piccola descrizione sarebbe comunque auspicato).
57
Infine daremo il comando:
\$ equivs-build controller
che creer il metapacchetto .deb che potremo poi installare come qualsiasi
pacchetto
Esempio pratico
Prendiamo ad esempio questa guida: Installare e configurare i codec per DVD e Mp3.
Sarebbe ora interessante creare un metapacchetto che installi i pacchetti necessari con un solo comando. Iniziamo dunque a creare un controller:
\$ equivs-control controller
Editiamo poi il file controller nel modo seguente (sulla base della guida
citata):
### Commented entries have reasonable defaults.
### Uncomment to edit them.
Section: misc
Priority: optional
Standards-Version: 3.6.2
Package: codec-dvd-mp3
Version: 0.1
Maintainer: Debianizzati <[email protected]>
# Pre-Depends: <comma-separated list of packages>
Depends: libfaad2-0,libmp4-0,libfaac0,alsamixergui,toolame,lame,libmp3lame0,libdvdnav4,li
Recommends: debian-multimedia-keyring
# Suggests: <comma-separated list of packages>
# Provides: <comma-separated list of packages>
# Replaces: <comma-separated list of packages>
# Architecture: all
# Copyright: <copyright file; defaults to GPL2>
# Changelog: <changelog file; defaults to a generic changelog>
# Readme: <README.Debian file; defaults to a generic one>
# Extra-Files: <comma-separated list of additional files for the doc directory>
Description: installa codec per DVD e mp3
Questo metapacchetto installa le librerie per la riproduzione di DVD e mp3. Ricordiamo d
Creiamo il pacchetto debian:
\$ equivs-build controller
58
Se tutto sar andato a buon fine (occhio alla sintassi!) otterremo il pacchetto
codec-dvd-mp3 0.1 all.deb nella directory da dove abbiamo lanciato i comandi.
Per dare un’ennesima verifica al pacchetto, daremo il comando:
\$ dpkg -$\,$-info codec-dvd-mp3_0.1_all.deb
ottenendo il seguente output:
Package: codec-dvd-mp3
Version: 0.1
Architecture: all
Maintainer: Debianizzati <[email protected]>
Installed-Size: 36
Depends: libfaad2-0, libmp4-0, libfaac0, alsamixergui, toolame, lame, libmp3lame0, libdv
Recommends: debian-multimedia-keyring
Section: misc
Priority: optional
Description: installa codec per DVD e mp3
Questo metapacchetto installa le librerie per la riproduzione di DVD e mp3. Ricordiamo
Sarebbe bello ora installare il nostro pacchetto con dpkg, ma dovremmo
sapere che non possibile. Questo perch dpkg non sa risolvere le dipendenze
come apt-get. Dovremmo allora inserire il nostro pacchetto in un repository
(esistente o creandolo anche in locale -¿ Creare un Repository Debian) oppure
forzare le dipendenze all’installazione (opzione - -force-depends da aggiungere al
classico dpkg -i ) e installare le dipendenze manualmente con un manager come
aptitude.
Brunitika 16:49, 8 apr 2009 (CEST)
Estratto da ”http://guide.debianizzati.org/index.php/Gestione dei metapacchetti”
Make-jpkg: Pacchettiziamo Java Sun - [email protected]
Make-jpkg: Pacchettiziamo Java Sun
Da [email protected].
Vai a: navigazione, ricerca
Debianized
Questo un articolo consigliato dallo staff di Debianizzati.
Gli articoli Debianized sono scritti in maniera particolarmente accurata (sia
nella forma che nel contenuto) e la loro correttezza stata verificata personalmente da pi persone nella community.
Indice
• 1 Introduzione
• 2 Cosa ci occorre
59
• 3 Creazione del Pacchetto
• 4 Conclusioni
Introduzione
Spesso, per vari motivi, necessario installare Java su una macchina Debian...
Sicuramente tutti gli utenti avranno notato che non c’, nel repository ufficiale,
un pacchetto contenente j2se o j2dk ufficiali della SUN. Sono, invece, presenti i
compilatori alternativi, come gcj, kaffe, kjc, javacc.... Per, se volessimo avere il
compilatore e/o l’interprete ’originale’ della SUN? come possiamo fare?
Il primo modo che salta agli occhi di installarlo in /opt e poi sistemare il
$PATH... ma la soluzione, giustamente, non piace a tutti, in quanto ’sporca’ il
sistema e, cosa che crea parecchi problemi, genera dei problemi con le dipendenze
dei pacchetti, visto che molti dei pacchetti che richiedono java per funzionare
non lo trovano installato.
In questo HowTo vedremo come pacchettizzare Java, usando direttamente il
binario di installazione disponibile sul sito della Sun!
Cosa ci occorre
Provvediamo a scaricare i pacchetti java-package e fakeroot.
# apt-get install java-package fakeroot
E poi scarichiamo il jdk o jre dal sito ufficiale Sun:
1.5: http://java.sun.com/j2se/1.5.0/download.jsp
1.4: http://java.sun.com/j2se/1.4.2/download.html
Una volta terminato il download, saremo pronti per proseguire.
Creazione del Pacchetto
Bene, siamo pronti a creare il pacchetto!!! Posizioniamoci nella directory dove
sono stati scaricati i binari di java e, da utente normale, diamo il seguente
comando:
\$ fakeroot make-jpkg jdk-1_5_0_01-linux-i586.bin
(o il nome del pacchetto scaricato...in questo caso ho pacchettizzato il jdk
1.5.0) al comando make-jpkg possibile passare i seguenti parametri:
- -full-name ¡name¿ Nome del Maintainer
- -email ¡email¿ Email del Maintainer
60
- -changes Indica che il processo deve creare un file .changes
- -help Visualizza un piccolo help contenente i comandi qui illustrati
- -version Stampa a video la versione
Una volta terminato il processo di generazione del pacchetto, provvediamo
a fare quanto segue:
\$ su
# dpkg -i sun-j2sdk1.5_1.5.0+update01_i386.deb
Ovviamente sostituendo ’sun-j2sdk1.5 1.5.0+update01 i386.deb’ con il nome
del pacchetto appena creato! Se ci sono problemi, relativamente ad una dipendenza con un nome simile a ’sun-j2sdk1.5debian’, possibile sistemare tutto con
il comando
# apt-get install sun-j2sdk1.5debian
Ora non ci resta che sistemare una ultima cosa: alternatives (se precedentemente era stato installato un pacchetto non ufficiale di java) Date il comando
# update-alternatives -$\,$-config java
(uguale procedimento anche per javac, javadoc ed eventualmente altri eseguibili java) e selezionate ’quale java’ utilizzare!
Passo facoltativo: per utenti di browser derivati da Mozilla (IceWeasel) il
comando che segue serve per abilitare Java come plugin per tale programma.
# ln -s /usr/lib/j2re1.5-sun/plugin/i386/ns7/libjavaplugin_oji.so /usr/lib/mozilla/plugin
Conclusioni
Con questi pochi e semplici passaggi, abbiamo installato java senza sporcare il
sistema, e risolvendo il problema delle dipendenze!
Buon Java a tutti!!!
MaXeR
Estratto da ”http://guide.debianizzati.org/index.php/Make-jpkg: Pacchettiziamo Java Sun”
Categorie: Debianized — Apt — Apt-Dev
Pacchetti binari e sorgenti - [email protected]
Pacchetti binari e sorgenti
Da [email protected].
Vai a: navigazione, ricerca
Su debian abbiamo fondamentalmente due tipi di pacchetti: i binari e i
sorgenti. Partiamo dai primi.
61
Pacchetti binari
I pacchetti binari sono archivi contenenti eseguibili, file di configurazione e documentazione che assieme formano un’applicazione. Sotto debian, i binari hanno
il suffisso .deb (c’ la possibilit anche di usare rpm, ma questa un’altra storia...).
Vediamo cosa contiene un archivio .deb:
# ls
apache_1.3.33-6_i386.deb
# ar -tv apache_1.3.33-6_i386.deb
rw-r-$\,$-r-$\,$- 0/0
4 May 11 11:34 2005 debian-binary
rw-r-$\,$-r-$\,$- 0/0 13852 May 11 11:34 2005 control.tar.gz
rw-r-$\,$-r-$\,$- 0/0 369530 May 11 11:34 2005 data.tar.gz
Abbiamo un file e due tarball. Procediamo estraendo questi ultimi.
# ar -x apache_1.3.33-6_i386.deb
# ls
apache_1.3.33-6_i386.deb control.tar.gz
# cat debian-binary
2.0
data.tar.gz
debian-binary
Il file debian-binary stabilisce la versione del formato deb, in questo caso la
2.0. Estraiamo gli archivi control.tar.gz e data.tar.gz.
# tar xvzf control.tar.gz
./
./config
./templates
./postinst
./preinst
./prerm
./postrm
./conffiles
./control
./md5sums
# tar xvzf data.tar.gz
./
./etc/
./etc/apache/
./etc/apache/conf.d/
./etc/init.d/
./etc/init.d/apache
./etc/logrotate.d/
./etc/logrotate.d/apache
./usr/
./usr/lib/
62
./usr/lib/apache/
./usr/lib/apache/suexec.disabled
./usr/lib/cgi-bin/
./usr/sbin/
./usr/sbin/apache
./usr/sbin/apachectl
./usr/share/
./usr/share/bug/
./usr/share/bug/apache/
./usr/share/bug/apache/presubj
./usr/share/doc/
./usr/share/doc/apache/
./usr/share/doc/apache/examples/
...
L’archivio control.tar.gz contiene le informazioni riguardanti il pacchetto e
le sue dipendenze e degli script che vengono lanciati prima e dopo l’installazione
o la rimozione. Il file control contiene il nome del pacchetto, la sua versione, la
sezione, la priorit , l’architettura per cui stato compilato il pacchetto, le dipendenze, il maintainer del pacchetto e la sua descizione. Diamogli un’occhiata.
# cat control
Package: apache
Version: 1.3.33-6
Section: web
Priority: optional
Architecture: i386
Depends: libc6 (>= 2.3.2.ds1-21), libdb4.2, libexpat1 (>= 1.95.8),
mime-support, apache-common (>= 1.3.33-6), apache-common (<< 1.3.34-0),
perl (>= 5.8.4-2), logrotate (>= 3.5.4-1), dpkg (>> 1.9.0), libmagic1,
debconf
Suggests: apache-doc
Conflicts: apache-modules, libapache-mod-perl (<= 1.17-1), jserv (<=
1.1-3)
Replaces: apache-modules
Provides: httpd-cgi, httpd
Installed-Size: 700
Maintainer: Debian Apache Maintainers <[email protected]>
Description: versatile, high-performance HTTP server
The most popular server in the world, Apache features a modular
design and supports dynamic selection of extension modules at runtime.
Some of its strong points are its range of possible customization,
dynamic adjustment of the number of server processes, and a whole
range of available modules including many authentication mechanisms,
server-parsed HTML, server-side includes, access control, CERN httpd
metafiles emulation, proxy caching, etc. Apache also supports multiple
63
virtual homing.
.
Separate Debian packages are available for PHP, mod_perl, Java
Servlet support, Apache-SSL, and other common extensions. More
information is available at http://www.apache.org/.
Un pacchetto pu avere priorit required, ossia necessario al funzionamento
del sistema, important, quindi costituisce la base del sistema, standard, cio i
pacchetti comuni presenti su sistemi non troppo minimali, optional, i pacchetti
totalmente opzionali, quindi X11, Emacs, e via dicendo, e infine extra, che contiene pacchetti aventi caratteristiche particolari che li distinguono dagli optional.
Oltre alle dipendenze vere e proprie(nel caso di sopra le libc, dpkg, debconf,
ecc.), abbiamo anche altri pacchetti citati, ossia i suggested packages, quindi
quelli che possono funzionare bene assieme al pacchetto che si sta installando,
i recommended, che comunemente vengono installati assieme a quest’ultimo, i
conflicts e i replaced packages, rispettivamente i pacchetti con cui va in contrasto
e che sostituisce, e infine i provided services, i servizi che il pacchetto fornisce
(in questo caso, demone http con supporto cgi). Guardiamo ora conffiles:
# cat conffiles
/etc/init.d/apache
/etc/logrotate.d/apache
Vengono elencati i file di configurazione che verrano creati. Gli scripts di
cui parlavo prima sono postinst, postrm, preinst e prerm, che si occupano come
gi detto delle operazione pre e post installlazione/rimozione.
L’archivio data.tar.gz contiene tutti i file che verranno effettivamente disposti
nel filesystem. Diamo per esempio un’occhiata alla directory usr:
# ls
apache_1.3.33-6_i386.deb control.tar.gz
conffiles
data.tar.gz
config
debian-binary
control
etc
# ls usr
lib sbin share
# ls usr/sbin
apache apacheconfig apachectl
md5sums
postinst
postrm
preinst
prerm
templates
usr
var
Pacchetti sorgenti
I pacchetti sorgenti sono costituiti da due archivi e un file di testo: un file .dsc
che descrive il pacchetto, un archivio .orig.tar.gz che contiene i sorgenti originali
del software, e un .diff.gz contenente le patch applicate da debian al pacchetto.
# apt-get source irssi-text
Reading Package Lists... Done
64
Building Dependency Tree... Done
Need to get 1168kB of source archives.
Get:1 http://ftp.de.debian.org unstable/main irssi-text 0.8.9-3 (dsc)
[691B]
Get:2 http://ftp.de.debian.org unstable/main irssi-text 0.8.9-3 (tar)
[1154kB]
Get:3 http://ftp.de.debian.org unstable/main irssi-text 0.8.9-3 (diff)
[13.9kB]
Fetched 1168kB in 11s (103kB/s)
dpkg-source: extracting irssi-text in irssi-text-0.8.9
# ls
irssi-text-0.8.9
irssi-text_0.8.9-3.dsc
irssi-text_0.8.9-3.diff.gz irssi-text_0.8.9.orig.tar.gz
Il file .dsc contiene la versione del software, l’architettura per cui stato
scritto, la dipendenze da soddisfare e gli hash dei due archivi per verificarne
l’integrit .
# cat irssi-text_0.8.9-3.dsc
-$\,$-$\,$-$\,$-$\,$-BEGIN PGP SIGNED MESSAGE-$\,$-$\,$-$\,$-$\,$Hash: SHA1
Format: 1.0
Source: irssi-text
Version: 0.8.9-3
Binary: irssi-text
Maintainer: David Pashley <[email protected]>
Architecture: any
Standards-Version: 3.6.1
Build-Depends: libglib2.0-dev, perl (>= 5.8.1), libperl-dev (>= 5.8.1),
libncurses5-dev, debhelper (>= 3.0.18), libssl-dev, openssl,
autotools-dev
Files:
1df516a770656ff0bec0ab62f9096bf6 1153560 irssi-text_0.8.9.orig.tar.gz
37f128f0dafa596c006090a1036ec9b2 13944 irssi-text_0.8.9-3.diff.gz
-$\,$-$\,$-$\,$-$\,$-BEGIN PGP SIGNATURE-$\,$-$\,$-$\,$-$\,$Version: GnuPG v1.2.5 (GNU/Linux)
iD8DBQFCQU0ffDt5cIjHwfcRAoApAKCL5BUc7i9X3iQIQyapUJboWF9IPACgrWPd
/t+qP8OkRmh1e6mUH8wz+ic=
=TYfB
-$\,$-$\,$-$\,$-$\,$-END PGP SIGNATURE-$\,$-$\,$-$\,$-$\,$I file di control gi visti nei pacchetti binari sono anche qui, contenuti nella
cartella debian dell’archivio.
65
# ls irssi-text-0.8.9
AUTHORS
README.cygwin
config.sub
findsyntax.pl
ltmain.sh
COPYING
TODO
configure
install-sh
missing
ChangeLog
acconfig.h
configure.in
irssi-config.in
mkinstalldirs
INSTALL
aclocal.m4
curses.m4
irssi-icon.png
scripts
Makefile.am autogen.sh
debian
irssi-version.h.in src
Makefile.in colorless.theme default.theme
irssi.conf
stamp-h.in
NEWS
config.guess
docs
irssi.spec
stamp.h.in
README
config.h.in
file2header.sh irssi.spec.in
syntax.pl
# ls irssi-text-0.8.9/debian
botti.1
conffiles copyright irssi-text.postinst prerm undocumented
changelog control
dirs
menu
rules
Nel caso si stia installando un pacchetto sorgente, bene non seguire la procedura ./configure;make;make install; perch il pacchetto non verr tracciato,
non si potr prenderne informazioni tramite dpkg-query e per la rimozione
bisogner procedere manualmente, con il rischio di ’sporcare’ la distro. E’
meglio usare strumenti quali dpkg-buildpackage e apt-build (per cui rimando
alle pagine di man) per avere i vantaggi della compilazione senza ’sporcare’ il
sistema.
Metapacchetti
Esiste un tipo particolare di pacchetto detto metapacchetto. Questo un pacchetto che in realt non contiene alcun eseguibile o sorgente. Serve semplicemente per installare tutto l’insieme di pacchetti (a volte a loro volta metapacchetti) che lo costituisce. Un esempio kde:
# ls -l
total 6348
-rw-r-$\,$-r-$\,$-
1 root root 6486276 Jan 26 17:32 kdebase_2.2.2-14.9_i386.deb
Gi le dimensioni lasciano presagire qualcosa: come pu un pacchetto come
kdebase occupare solo poco pi di 6 Mb? Spacchettiamolo:
# ar -x kdebase_2.2.2-14.9_i386.deb
# ls
control.tar.gz data.tar.gz debian-binary
# tar xvzf data.tar.gz
./
./usr/
./usr/share/
./usr/share/doc/
./usr/share/doc/kdebase/
./usr/share/doc/kdebase/README.pam
./usr/share/doc/kdebase/README.Debian
./usr/share/doc/kdebase/copyright
66
kdebase_2.2.2-14.9_i386.deb
./usr/share/doc/kdebase/README.gz
./usr/share/doc/kdebase/changelog.Debian.gz
./usr/share/doc/kde/
./usr/share/doc/kde/HTML/
./usr/share/doc/kde/HTML/en/
./usr/share/doc/kde/HTML/en/kcontrol/
./usr/share/doc/kde/HTML/en/kdebugdialog/
./usr/share/doc/kde/HTML/en/kdesu/
./usr/share/doc/kde/HTML/en/kdm/
./usr/share/doc/kde/HTML/en/khelpcenter/
./usr/share/doc/kde/HTML/en/khelpcenter/faq/
./usr/share/doc/kde/HTML/en/khelpcenter/glossary/
./usr/share/doc/kde/HTML/en/khelpcenter/quickstart/
./usr/share/doc/kde/HTML/en/khelpcenter/userguide/
./usr/share/doc/kde/HTML/en/khelpcenter/visualdict/
...
L’archivio data.tar.gz contiene solo documentazione e delle librerie. Diamo
un’occhiata al control:
station:/opt# tar xvzf control.tar.gz
./
./shlibs
./postinst
./preinst
./prerm
./postrm
./conffiles
./md5sums
./control
station:/opt# cat control
Package: kdebase
Version: 4:2.2.2-14.9
Section: x11
Priority: optional
Architecture: i386
Depends: kdelibs3 (>= 4:2.2.2-1), libc6 (>= 2.2.4-4), libfam0,
libjpeg62, libkonq3 (>= 4:2.2.2-14.9), libpng2(>=1.0.12), libqt2 (>=
3:2.3.1-1), libstdc++2.10-glibc2.2 (>= 1:2.95.4-0.010810), xlibs (>>
4.1.0), zlib1g (>= 1:1.1.4), debianutils (>= 1.6), xfree86-common,
libpam-modules, kdewallpapers, kdebase-libs (= 4:2.2.2-14.9)
Recommends: kdebase-doc, konqueror, konsole, kate | kedit | kword,
libarts | libarts-alsa, kdebase-audiolibs | kdebase3-audiolibs, kscreensaver
Suggests: menu (>=1.5-5), kdm | x-display-manager, kde-i18n,
libpam-cracklib, xscreensaver, xscreensaver-gl, xearth, xplanet, usbutils
Provides: x-session-manager
67
Installed-Size: 16280
Maintainer: Christopher L Cheney <[email protected]>
Description: KDE core applications
This is a suite of all kde core applications~:
Includes: kicker, kwin, kdesktop and others...
In realt , vediamo che a costituire il cuore di kde sono le sue dipendenze.
Senza i metapacchetti bisognerebbe installare uno per uno i pacchetti che costituiscono kde.
sync
Estratto da ”http://guide.debianizzati.org/index.php/Pacchetti binari e sorgenti”
Categoria: Apt-Dev
Applicare una patch ad un pacchetto Debian - [email protected]
Applicare una patch ad un pacchetto Debian
Da [email protected].
Vai a: navigazione, ricerca
Indice
• 1 Introduzione
• 2 Preparazione del sistema
• 3 Procediamo
– 3.1 Metodo 1: ‘apt-get source && dpkg-buildpackage‘
– 3.2 Metodo 2: ‘apt-build‘
Introduzione
In questo howto vedremo come sia possibile applicare una patch ad un pacchetto
ufficiale Debian. 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:
68
#-$\,$-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-$\,$-#
ora aggiorniamo il contenuto del database dei pacchetti:
# apt-get update
Procediamo
Metodo 1: ‘apt-get source && dpkg-buildpackage‘
Per scaricare i sorgenti, seguiamo questa procedura: Per avere tutto in ordine,
creiamo una cartella di lavoro
\$ mkdir nomepacchetto && cd nomepacchetto
Ora possiamo scaricare i sorgenti:
\$ apt-get source nomepacchetto
cos facendo, scaricheremo 3 file, che verranno decompressi in una cartella
(nomepacchetto-ver.sio.ne)
Ora possiamo entrare in questa cartella, scaricare la patch e applicarla:
\$ cd nomepacchetto-ver.sio.ne
\$ wget http://indirizzo/per/la/patch.patch
supponendo che la patch non sia compressa...
\$ patch -p1 < patch.patch
se compressa:
\$ zcat patch.patch | patch -p1
69
Una volta applicata la patch, se non riceviamo errori, siamo pronti a compilare il pacchetto. Per fare questo utilizzeremo un altro tool Debian: dpkgbuildpackage
# dpkg-buildpackage
Il comando prover a compilare il pacchetto, ed in caso di errori ci chieder di
sistemare le dipendenze (se l’errore dovuto alla mancanza di alcune librerie)
elencando tutti i pacchetti necessari, installabili con un normale
# apt-get build-dep ’nomepacchetto_da_installare’
una volta giunta a termine la compilazione, troveremo (nella cartella nomepacchetto da noi creata) una serie di file .deb! ora possiamo installarli:
# dpkg -i nomepacchetto_ver.sio.ne.deb
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:
\$ wget http://indirizzo/per/la/patch.patch
ora diamo il semplice comando:
# apt-build -p 0 -$\,$-patch patch.patch install ’pacchetto’
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:
70
• viene/vengono installato/i il/i pacchetto/i generato/i.
Bene, ora il pacchetto installato nel vostro sistema!
MaXeR
Estratto da ”http://guide.debianizzati.org/index.php/Applicare una patch ad un pacchetto Debian”
Categoria: Apt-Dev
Apt-build: ottimizzazione dei pacchetti - [email protected]
Apt-build: ottimizzazione dei pacchetti
Da [email protected].
Vai a: navigazione, ricerca
Indice
• 1 Introduzione
• 2 Installazione
• 3 Opzioni
• 4 Utilizzo
• 5 Conclusioni
• 6 Faq
• 7 Bookmark
Introduzione
Come tutti sanno, o avranno notato, Debian compilata con opzioni di compilazione generiche, pensate per processori i386. Questa scelta stata fatta per
questioni di stabilit , a quanto ho trovato sulla rete.
Per chi vuole sfruttare a fondo la propria macchina, e consigliata una ricompilazione con le ottimizzazioni relative al proprio processore, cos da poter
sfruttare fino in fondo tutte le innovazioni introdotte in questi anni, ma prima
di affrontare questo argomento, per, vorrei fare alcune precisazioni...
Innanzitutto, non tutti i programmi diventeranno pi veloci: esisteranno sempre i ’colli di bottiglia’, come la velocit di lettura degli Hard Disk, etc; quindi
i programmi che ne trarranno giovamento maggiore saranno quelli che abusano
di operazioni matematiche, e che stressano il processore...
71
Installazione
Ovviamente, trattandosi di Debian, sufficiente dare un semplice:
# apt-get install apt-build
Mentre il pacchetto viene scaricato insieme alle sue dipendenze, vi invito a
fare una visitina a Debtoo, un interessante progetto per dare a Debian strumenti
utili per la compilazione dei pacchetti... L’indirizzo http://www.debtoo.org/ .
Analizziamo le domande del processo di configurazione che viene lanciato
durante l’installazione:
Where should apt-build download and build packages?
La scelta di default va pi che bene...assicuratevi per di avere un po’ di spazio
(4-5Gb sarebbero comodi), in quanto la compilazione ne richiede tanto, ed i
sorgenti gi processati non vengono rimossi automaticamente.
Where must apt-build store built packages?
Qui siamo liberi di fare quello che vogliamo: apt-build, una volta terminata
la compilazione, creer il pacchetto debian ottimizzato per la nostra macchina.
Qui dobbiamo indicare dove metterli...
These are equivalent to -O1, -O2 and -O3. Optimization level is
time dependant - in fact, the more you want to optimize your build
the more time will be necessary for compiling but the faster your
programs will be. Warning: Strong optimization may lead to stability
problems. Which optimization level do you want?
Le scelte che mi sento di consigliare sono due: Medium per una ottimizzazione media.... Strong per una ottimizzazione avanzata (attenzione: pi alto il
livello di ottimizzazione, pi tempo impiega il processo...come indicato nel testo
della domanda.
Add apt-build repository to sources.list?
Rispondendo ’Si’ aggiungeremo al nostro sources.list una riga indicante il
repository che viene creato da apt-build (la seconda domanda che ci stata
posta durante il processo di configurazione)
Which options would you like to add to gcc?
Qui possiamo passare delle opzioni aggiuntive a gcc... Eccone alcune: -jX
X indica il numero di compilazioni parallele consentite -pipe Riduce l’accesso al
disco (velocizzando l’operazione) utilizzando il pipe (—) invece dei file temporanei
What is your architecture?
Ora ci verr mostrata una lista di famiglie di processori, relative alla ’marca’
del nostro processore (nel mio caso tutte AMD)...scegliamo quella adeguata (nel
mio caso, su un Compaq Presario 2100, athlon-xp)
Siamo giunti al termine della configurazione! Ancora un passaggio e saremo
pronti a conoscere apt-build!
Bisogna modificare il file /etc/apt/sources.list aggiungendo i repository
per i sorgenti. Per quelli ufficiali Debian, sufficiente ricopiare la riga dei repository dei pacchetti normali e sostituire a ’deb’ ’deb-src’. Ad esempio, se il nostro
sources list contiene la riga:
72
deb http://ftp.it.debian.org/debian/ sid main
diventer
deb http://ftp.it.debian.org/debian/ sid main
deb-src http://ftp.it.debian.org/debian/ sid main
NB: le due righe possono coesistere tranquillamente. Ora siamo pronti ad
iniziare!
Opzioni
Analizziamo un po’ di opzioni, molto utili, che renderanno pi comprensibili i
comandi utilizzati in seguito. La sintassi di apt-build vicinissiama a quellad i
apt-get, infatti troviamo, come comandi, i seguenti:
update Aggiorna la lista dei pacchetti (come apt-get update)
upgrade Esegue un aggiornamento del sistema, scaricando i pacchetti e compilandoli
install Scarica e compila il pacchetto indicato
source Scarica e decomprime il pacchetto nella directory di compilazione (di
solito /var/cache/apt-build/build )
remove Come apt-get remove
clean-sources esegue un debian/rules clean, che rimuove solamente i prodotti
della compilazione
clean-build rimuove il contenuto della directory /var/cache/apt-build/build/
che contiene i sorgenti dei pacchetti ricompilati;
clean-repository rimuove il contenuto della directory /var/cache/apt-build/repository/
che contiene i pacchetti ricompilati tramite apt-build
world Ricompila tutti i pacchetti correntemente installati
info Visualizza le informazioni relative al pacchetto compilato
Le opzioni, invece, sono le seguenti:
- -reinstall Ricompila e reinstalla il paccheto gi installato...ci torner comodo...
- -rebuild Ricompila il pacchetto indicato
- -remove-builddep Rimuove le dipendenze di compilazione (librerie -dev)
installate da apt-build per la compilazione
73
- -nowrapper Non usa il wrapper: compilazione senza le opzioni di ottimizzazione
- -purge Durante la rimozione, verranno cancellati anche i file di configurazione presenti in /etc
- -noupdate Non esegue ’apt-get update’ prima dell’installazione dei pacchetti
- -build-command cmd Usa cmd per compilarei il pacchetto
- -patch file Applica la patch prima di compilare il pacchetto
- -patch-strip n Indica lo striplevel per il file di patch (equivale al parametro
-pX del comando patch
- -yes -y Risponde ’Yes’ a tutte le domande poste da apt (usare con prudenza)
- -version -v Mostra la versione di apt-build
- -source Non scarica i sorgenti (indica che i sorgenti sono gi stati scaricati
- -build-only Non installare le dipendenze del pacchetto (usare con attenzione)
- -build-dir dir Specifica la directory in cui eseguire la compilazione
- -repository-dir dir Specifica la directory dove mettere i file compilati
- -target-release Indica da quale release (Stable, Testing, Unstable, Experimental) scaricare i sorgenti
- -sources-list Specifica un sources.list alternativo
Le opzioni che useremo spesso saranno - -reinstall - -noupdate.
Utilizzo
Ora guardiamo come utilizzare apt-build per ricompilare pacchetti gi presenti
nel sistema...
# apt-build -$\,$-reinstall install kdebase
ad esempio... l’opzione - -reinstall ci permetter di installare il pacchetto
anche se nel sistema gi presente un pacchetto con la medesima versione.
Una volta lanciato il comando, apt-build si occuper di sincronizzare la lista
dei pacchetti, scaricher le librerie di sviluppo necessarie alla compilazione del
pacchetto ed eventualmente si occuper anche delle dipendenze. Una volta
scaricato il pacchetto dei sorgenti provveder alla compilazione.
Potrebbero apparire errori di compilazione: in questi casi bisogna leggerli
con attenzione per capire se un errore prodotto da apt-build o da un errore nei
sorgenti e, in tal caso, chiedere aiuto a S. Google =)
74
Se invece il pacchetto non stato precedentemente installato, possibile installarlo omettendo l’opzione - -reinstall:
# apt-build install nomepacchetto
Comando ’strano’, che non ho ancora avuto modo di sperimentare :
# apt-build world
che permette la ricompilazione di tutti i pacchetti correntemente installati
sul computer!
Allo stesso modo possibile aggiornare il sistema direttamente, tramite un
semplice
# apt-build upgrade
Una precisazione d’obbligo: non tutti i repository offrono i pacchetti contenenti i sorgenti, e per questo ci si pu trovare di fronte ad alcuni errori... Qui sta
a voi risolverli, o installando il pacchetto binario o cercando un altro mirror...
Conclusioni
Lo strumento veramente potente, anche se non esente da bug... Promette
bene e porta una ventata di novit in un campo precedentemente complesso in
quanto, per compilare con ottimizzazioni, era necessario ricorrere a strumenti
un po’ complessi e sfortunatamente tutti indipendenti tra loro, allontanando
tutto questo dall’utente novizio... Ora, anche chi vuole un sistema compilato
ad hoc per la propria macchina, potr restare fedele e usufruire della potenza di
apt!
Faq
Q: Ho spostato la directory della cache di apt-build, ma ora apt mi
d degli errori...
A: Beh...sarebbe stato utile, dopo lo spostamento, eseguire un
# dpkg-reconfigure apt-build
per riconfigurare il tutto con i nuovi path. Se invece si vuole agire a mano
sufficiente modificare il file /etc/apt/apt-build.conf e il sources.list, aggiornando i path relativi ad apt-build.
Q: Come mai non vengono elencati tutte le famiglie di processori
durante la configurazione?
A: Semplicemente perch lo script di configurazione di apt-build esegue un check
preliminare in modo da determinare la marca del processore.
Q: Mi sono accorto di non aver configurato correttamente aptbuild, come posso fare a modificare la configurazione??
A: Certamente...con il comando
75
# dpkg-reconfigure apt-build
Q: Ho notato che apt-build sostituisce gcc e g++ con uno script,
cosa vuol dire?
A: Apt-build utilizza un wrapper, uno script che si occupa di chiamare gcc
e g++ passandogli dei parametri aggiuntivi (quelli per l’ottimizzazione) se a
chiamarlo apt-build.
Q: Visto che apt-build modifica lo script per lanciare gcc e g++,
verranno applicate le opzioni di ottimizzazione anche quando compilo
senza usare apt-build?
A: No, in quanto, all’interno del wrapper (che uno script di shell) viene
controllato se apt-build il chiamante e, in quel caso, applica le opzioni per
l’ottimizzazione; nel caso in cui gcc/g++ non vengono chiamati da apt-build,
non sono applicate le ottimizzazioni.
Bookmark
http://debian-i586.sourceforge.net/ Interessante progetto di ricompilazione di
Debian. Ora sembrerebbe un po’...‘smorto‘...magari si potrebbe dargli una
mano...
MaXeR
Estratto da ”http://guide.debianizzati.org/index.php/Apt-build: ottimizzazione dei pacchetti”
Categorie: Apt — Apt-Dev
Dpkg-sig: Firma dei packages .deb - [email protected]
Dpkg-sig: Firma dei packages .deb
Da [email protected].
Vai a: navigazione, ricerca
Per poter firmare i nostri package necessitiamo di sue strumenti per poter
firmare i nostri package necessitiamo di due strumenti gpg e dpkg-sig.
Il primo dovrebbe essere gi installato di default con la nostra debian, per il
secondo:
# apt-get install dpkg-sig
fatto questo generiamo una nuova coppia di chiavi , da usare solo per firmare
i packages:
\$ gpg -$\,$-gen-key
• rispondiamo 1 alla prima domanda ovvero DSA e ElGamal, diamo invio
• come dimensione lasciamo pure 1024, diamo invio
• mettiamo 0 come scadenza, diamo invio
76
• rispondiamo s, diamo invio
• ora ci verr chiesto Nome e Cognome:
Nome e Cognome: denis pecci
inseriamo i nostri dati e diamo invio
• ora ci viene chiesto l’indirizzo email:
Indirizzo di Email: [email protected]
inseriamolo e diamo invio
• ed ora inseriamno il commento per la coppia di chiavi:
Commento: NextDeb Team Packager
diamo invio
• ora premiamo ’o’ e invio
• ora ci verr richiesta la password per le chiavi, inseriamola e invio
Ecco fatto, ora abbiamo la nostra coppia di chiavi per firmare i pacchetti,
esportiamole sul nostro keyserver preferito.
Per firmare i nostri packages procediamo in questo modo:
# dpkg-sig -$\,$-sign nostronick nomepackages.deb
Esempio
# dpkg-sig -$\,$-sign debian cwcdr_2.0.1-4_all.deb
Processing cwcdr_2.0.1-4_all.deb...
Ti serve una passphrase per sbloccare la chiave segreta
dell’utente: "denis pecci (NextDeb Team Packager) <[email protected]>"
chiave DSA di 1024 bit, ID 73E02514, creata il 2004-11-26
Signed deb cwcdr_2.0.1-4_all.deb
Ecco fatto, ora abbiamo firmato in maniera inequivocabile il nostro pacchetto. Per controllare la firma possiamo usare sia dpkg-sig che gpg. Con gpg
basta usare il seguente comando:
# gpg -$\,$-verify nome package
Esempio
77
# gpg -$\,$-verify cwcdr_2.0.1-4_all.deb
gpg: Firma fatta ven 26 nov 2004 11:23:33 CET usando DSA con ID 73E02514
gpg: Firma valida da "denis pecci (NextDeb Team Packager) <[email protected]>"
gpg: controllo il trustdb
gpg: controllo al livello 0 firmato=0 ot(-/q/n/m/f/u)=0/0/0/0/0/2
mentre con dpkg-sig:
# dpkg-sig -v -l nome package
Esempio
# dpkg-sig -v -l cwcdr_2.0.1-4_all.deb
Processing wcdr_2.0.1-4_all.deb...
debian
come potete vedere quest’ultima maniera mostra solo il nick del firmante del
package.
Autore: debian
Estratto da ”http://guide.debianizzati.org/index.php/Dpkg-sig: Firma dei packages .deb”
Categoria: Apt-Dev
Pacchettizzare un tema per Bootsplash - [email protected]
Pacchettizzare un tema per Bootsplash
Da [email protected].
(Redirect da Pacchetizzare un tema per Bootsplash) Vai a: navigazione, ricerca
Indice
• 1 Introduzione
• 2 Requisiti
• 3 Creazione del pacchetto
– 3.1 La directory debian/*
∗
∗
∗
∗
∗
∗
∗
3.1.1
3.1.2
3.1.3
3.1.4
3.1.5
3.1.6
3.1.7
Rimozione dei file non necessari
.templates
rules
control
dirs
docs
postinst
78
∗ 3.1.8 postrm
∗ 3.1.9 prerm
• 4 Compilazione
• 5 Test del pacchetto
• 6 Conclusioni
Introduzione
Il pacchetto bootsplash per Debian, presente nei repository:
deb http://debian.bootsplash.de unstable main
deb-src http://debian.bootsplash.de unstable main
molto comodo per la gestione dei temi, ma ha un difetto: utilizza debconf
per la gestione dei temi. Questo porta ad un effetto collaterale: i temi installati
manualmente non saranno riconosciuti e per poterli usare si dovranno eseguire
operazioni scomode (rispetto ad un semplice dpkg-reconfigure bootsplash :-) ).
Vedremo, ora, come creare un pacchetto Debian contenente un tema, e come
gestire il template di debconf per aggiornare la lista dei temi.
Nota Bene:
gli script qui descritti non sono opera mia, ma di Oliver Sorge, che mantiene
i temi presenti nel repository sopra riportato
Requisiti
Per poter creare un pacchetto Debian dobbiamo installare i seguenti pacchetti:
• build-essential
• dpkg-dev
• dh-make
• debhelper
Creazione del pacchetto
Estraiamo il pacchetto contenente il tema, e rinominiamo la directory contenente
il tema in un formato del tipo bootsplash-theme-¡nometema¿-¡versione¿.
La directory deve contenere le directory images, ...
Una volta completato, lanciamo il comando
\$ dh_make -$\,$-copyright GPL
79
ovviamente dopo aver verificato la licenza del tema...
Alla domanda
Type of package: single binary, multiple binary, library, or kernel module?
[s/m/l/k]
rispondiamo con una s.
Controlliamo i dati riportati (per il nome e l’email possiamo usare le variabili
d’ambiente $DEBEMAIL e $DEBFULLNAME); se tutto corretto possibile
andare avanti.
Verr cos creata la directory debian/, contenente tutto il necessario per il
nostro pacchetto.
La directory debian/*
Rimozione dei file non necessari
La directory debian/ contiene molti file non necessari, che possiamo tranquillamente rimuovere:
\$ cd debian
\$ rm conffiles.ex cron.d.ex emacsen* init.d.ex manpage* matrix* menu.ex watch*
.templates
Dobbiamo creare il template utilizzato da debconf. Creiamo, quindi, un file del
tipo bootsplash-theme-¡nometema¿.template con il seguente contenuto:
Template: shared/bootsplash-theme
Type: select
Choices: \${choices}
Description: Please select theme bootsplash should use.
Please select the theme bootsplash should use. If you wish to
change it at a later date, just run dpkg-reconfigure bootsplash.
Template: bootsplash-theme-<nometema>/resolutions
Type: multiselect
Choices: 1024x768
Default: 1024x768
Description: Select the resoultion you would like to enable bootsplash for.
You need to select which resolutions bootsplash should be enabled for, also
remember to include the proper (vga=???) line in your lilo.conf.
Ricordandoci di sostituire a ¡nometema¿ il nome del nostro tema ed eventualmente sistemare i valori delle risoluzioni.
80
rules
Il file debian/rules necessit di molte modifiche... Conviene, quindi, sostituire il
contenuto con questo:
#!/usr/bin/make -f
# -*- makefile -*# Sample debian/rules that uses debhelper.
# GNU copyright 1997 to 1999 by Joey Hess.
# Uncomment this to turn on verbose mode.
# export DH_VERBOSE=1
# Edit these lines!!!
THEME_DIRS = images config animations bootloader
THEME_SUFFIX = <nometema>
configure: configure-stamp
configure-stamp:
dh_testdir
touch configure-stamp
build: build-stamp
build-stamp: configure-stamp
dh_testdir
touch build-stamp
clean:
dh_testdir
dh_testroot
rm -f build-stamp configure-stamp
dh_clean
install: build
dh_testdir
dh_testroot
dh_clean -k
dh_installdirs
-cp -a \$(THEME_DIRS) $\backslash$
"\$(CURDIR)/debian/bootsplash-theme-\$(THEME_SUFFIX)/etc/bootsplash/themes/\$(THEME_SUFFI
binary-indep: build install
# We have nothing to do by default.
# Build architecture-dependent files here.
binary-arch: build install
81
dh_testdir
dh_testroot
dh_installchangelogs
dh_installdocs
dh_installdebconf
dh_link
dh_strip
dh_compress
dh_fixperms
dh_installdeb
dh_shlibdeps
dh_gencontrol
dh_md5sums
dh_builddeb
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install configure
ricordando le seguente cose:
• fare attenzione ad usare la tabulazioni (tasto ¡tab¿) al posto degli spazi
per le indentazioni (obbligatorie)!
• modificare la variabile THEME DIRS riportando solo le directory presenti
all’interno della directory ¡nometema¿-¡versione¿ ad eccezione di debian.
• modificare la variabile THEME SUFFIX con il nome del tema.
control
Il file debian/control necessita di alcune modifiche:
• Section dovrebbe essere modificata in graphics
• Architecture pu essere modificato in all, visto che il pacchetto non sar dipendente dall’architettura
• Depends pu essere modificato in bootsplash (¿= 3.0.0), debconf (¿= 0.5)
— debconf-2.0
• deve essere aggiunta la riga Provides: bootsplash-theme
• la descrizione deve essere modificata nel seguente modo (in linea coi pacchetti di http://www.bootsplash.de ):
Description: The bootsplash theme <nometema>
This is another bootsplash theme packaged for the Debian GNU/Linux
Operating System.
.
Resolutions: 1280x1024
82
dirs
Dovr contenere
etc/bootsplash/themes/<nometema>
docs
Dovr contenere
docs/*
se la directory presente nei sorgenti del tema (altrimenti si pu omettere
questo file).
postinst
Usiamo direttamente quelli creati per i pacchetti dei temi presenti su http://www.bootsplash.org :
#! /bin/sh
# postinst script for test
#
# see: dh_installdeb(1)
set -e
. /usr/share/debconf/confmodule
THEME_SUFFIX=<nometema>
# summary of how this script can be called:
#
* <postinst> ‘configure’ <most-recently-configured-version>
#
* <old-postinst> ‘abort-upgrade’ <new version>
#
* <conflictor’s-postinst> ‘abort-remove’ ‘in-favour’ <package>
#
<new-version>
#
* <deconfigured’s-postinst> ‘abort-deconfigure’ ‘in-favour’
#
<failed-install-package> <version> ‘removing’
#
<conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
#
case "\$1" in
configure)
db_register shared/bootsplash-theme bootsplash-theme-\$THEME_SUFFIX
~;;
abort-upgrade|abort-remove|abort-deconfigure)
~;;
83
*)
gettext -s "postinst called with unknown argument $\backslash$‘\$1’" >&2
exit 1
~;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0
postrm
#! /bin/sh
# postrm script for bootsplash-theme-newtux
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
#
* <postrm> ‘remove’
#
* <postrm> ‘purge’
#
* <old-postrm> ‘upgrade’ <new-version>
#
* <new-postrm> ‘failed-upgrade’ <old-version>
#
* <new-postrm> ‘abort-install’
#
* <new-postrm> ‘abort-install’ <old-version>
#
* <new-postrm> ‘abort-upgrade’ <old-version>
#
* <disappearer’s-postrm> ‘disappear’ <r>overwrit>r> <new-version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
# Theme variables
THEME_SUFFIX=<nometema>
case "\$1" in
remove)
#
#
#
#
This only applies to the remove process.
By default the directory of the theme under
/etc/bootsplash/themes will not be removed.
However, this postrm script will do this if
84
# a directory exists.
if [ -d /etc/bootsplash/themes/\$THEME_SUFFIX ]
then
gettext -s "Deleting orphaned files under /etc/bootsplash/themes/\$THEME_
rm -rf /etc/bootsplash/themes/\$THEME_SUFFIX || gettext -s "ERROR: Couldn
fi
~;;
purge|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
~;;
*)
gettext -s "postrm called with unknown argument $\backslash$‘\$1’" >&2
exit 1
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
# Automatically added by dh_installdebconf
if [ "\$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
. /usr/share/debconf/confmodule
db_purge
fi
# End automatically added section
exit 0
prerm
#! /bin/sh
# prerm script for bootsplash-theme-debblue
#
# see: dh_installdeb(1)
set -e
. /usr/share/debconf/confmodule
# summary of how this script can be called:
#
* <prerm> ‘remove’
#
* <old-prerm> ‘upgrade’ <new-version>
#
* <new-prerm> ‘failed-upgrade’ <old-version>
#
* <conflictor’s-prerm> ‘remove’ ‘in-favour’ <package> <new-version>
85
#
* <deconfigured’s-prerm> ‘deconfigure’ ‘in-favour’
#
<package-being-installed> <version> ‘removing’
#
<conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
case "\$1" in
remove|upgrade|deconfigure)
# I no longer claim this question.
db_unregister shared/bootsplash-theme
# See if the shared question still exists.
if db_get shared/bootsplash-theme; then
db_metaget shared/bootsplash-theme owners
db_subst shared/bootsplash-theme choices \$RET
db_metaget shared/bootsplash-theme value
if [ "<package>" = "\$RET" ]~; then
db_fset shared/bootsplash-theme seen false
db_input high shared/bootsplash-theme || true
db_go || true
fi
fi
~;;
failed-upgrade)
~;;
*)
gettext -s "prerm called with unknown argument $\backslash$‘\$1’" >&2
exit 1
~;;
esac
exit 0
Compilazione
La compilazione di un pacchetto semplicissima: nella directory contenente i
sorgenti diamo il seguente comando:
\$ dpkg-buildpackage
se tutto va a buon fine, verr creato un pacchetto debian nella directory
superiore.
86
Test del pacchetto
L’unico modo per testare il pacchetto installarlo (dpkg -i pacchetto.deb) e
riconfigurare il pacchetto bootsplash (dpkg-reconfigure bootsplash)... se tutto
stato fatto correttamente, nella lista apparir il nuovo tema...
Conclusioni
La guida qui riportata frutto dell’analisi dei pacchetti bootsplash-theme-* presenti nel repository di http://www.bootsplash.de ;)
Estratto da ”http://guide.debianizzati.org/index.php/Pacchettizzare un tema per Bootsplash”
Categorie: Apt — Apt-Dev
Backport da unstable in testing - [email protected]
Backport da unstable in testing
Da [email protected].
Vai a: navigazione, ricerca
Indice
• 1 Introduzione
• 2 Lo stato di un pacchetto
• 3 Creare i pacchetti binari per la propria distribuzione
– 3.1 Pacchetti necessari
– 3.2 Scaricare i sorgenti
– 3.3 Scaricare le dipendenze
– 3.4 Compilare il pacchetto
• 4 Conclusioni
Introduzione
A causa delle numerose migrazioni gli utenti di testing possono trovarsi davanti
a qualche problema relativo alla mancanza di pacchetti nel repository ufficiale
Debian...
Questo dovuto alla politica di gestione di testing, la quale richiede che un
pacchetto debba avere le seguenti caratteristiche, prima di entrare in testing:
• Sia stato in unstable per almeno 10 giorni (nel caso di priorit bassa (low ));
• Non abbia Bug gravi;
87
• Le dipendenze richieste siano completamente soddisfatte in testing.
In questo caso possibile adattare i pacchetti di Sid per l’uso su testing
(o anche su stable talvolta) eseguendo la procedura di backport illustrata in
questa guida.
Lo stato di un pacchetto
possibile conoscere lo stato di un pacchetto (per l’esattezza di un pacchetto di
sorgenti) tramite il sito della Quality Assurance, nel seguente modo:
• ricavare il pacchetto sorgente da cui viene creato il pacchetto binario in
questione:
\$ apt-cache show nomepacchetto | grep Source
• recarsi su http://packages.qa.debian.org ed inserire il nome del pacchetto
sorgente
• leggere lo stato del pacchetto!
Nota:
possibile automatizzare la procedura inserendo, nella pagina http://packages.qa.debian.org,
il nome del pacchetto binario... il sistema mostrer il nome del pacchetto di sorgenti relativo ed in 10 secondi reindirizzer alla pagina relativa al suo stato.
Creare i pacchetti binari per la propria distribuzione
Premetto che la seguente procedura utilizzabile prevalentemente per il backport
da unstable a testing, mentre potrebbe dare problemi per il backport da testing
a stable.
Pacchetti necessari
Per eseguire le operazioni illustrare in questa pagina sono necessari i seguenti
pacchetti, normalmente utilizzati per lo sviluppo dei pacchetti Debian:
• dpkg-dev
• devscripts
• fakeroot
88
Scaricare i sorgenti
Dalla pagina relativa allo stato del pacchetto possibile scaricare i sorgenti necessari per questo backport (nel riquadro Source files). I file sono, per l’esattezza,
3:
• l’archivio contenente i sorgenti originali, .orig.tar.gz
• l’archivio contenente le patch per creare il pacchetto, .patch.gz
• il file contenente la descrizione del pacchetto, .dsc
Una volta scaricati in una unica directory necessario estrarli:
\$ dpkg-source -x nomepacchetto.....dsc
Scaricare le dipendenze
Prima di procedere alla compilazione necessario installare i pacchetti -dev necessari per la compilazione... Anche in questo caso, come sempre del resto, il
sistema di gestione dei pacchetti Debian ci viene in aiuto: infatti necessario un
semplice
# apt-get build-dep nomepacchetto
per installare le dipendenze necessarie alla compilazione.
Nota:
il comando potrebbe non risolvere tutte le dipendenze (nel peggiore dei
casi potrebbe non trovare informazioni riguardo a queste). In questo caso,
quindi, bisogner installarle a mano. Le dipendenze mancanti verranno mostrate
nell’output di dpkg-buildpackage e dovranno essere installate come viene installato normalmente un pacchetto. Non sar possibile continuare nel processo di
compilazione se non si soddisfano tutte le dipendenze di compilazione.
Compilare il pacchetto
Una volta installate le dipendenze si pu procedere con la compilazione del pacchetto:
• bisogna entrare nella directory dei sorgenti creata durante l’estrazione dei
sorgenti;
• per far partire la compilazione si pu usare il seguente comando:
\$ fakeroot dpkg-buildpackage
Se tutto procede senza problemi verranno creati, nella directory precedente,
i pacchetti binari frutto della compilazione... per installarli sufficiente il classico
# dpkg -i nomepacchetto.....deb
89
Conclusioni
Questo rappresenta il metodo pi semplice per ottenere un pacchetto per testing
partendo da un pacchetto sorgente di unstable, anche se non sempre pu essere
applicato (a causa di dipendenze non risolte perch non presenti in testing (in
questo caso necessario partire dal backporting delle librerie mancanti) o perch le
versioni dei pacchetti in testing non sono abbastanza aggiornate per concludere
con successo la compilazione (evento molto raro)).
Nel Backport Howto vedremo, pi in dettaglio, come eseguire un Backport
da testing/unstable verso stable...
Estratto da ”http://guide.debianizzati.org/index.php/Backport da unstable in testing”
Categorie: Apt — Apt-Dev
Pbuilder: compilazione in ambienti puliti - [email protected]
Pbuilder: compilazione in ambienti puliti
Da [email protected].
Vai a: navigazione, ricerca
Pbuilder uno strumento che permette di creare un ambiente pulito per la
compilazione e il test di pacchetti Debian. Inoltre pu essere usato anche per
effettuare i backport, compilazioni particolari e tutto quello che pu richiedere
l’uso di un ambiente pulito e controllato.
Indice
• 1 Installazione
• 2 Configurazione e Opzioni
– 2.1 pbuilder
– 2.2 pdebuild
– 2.3 Azioni
• 3 Utilizzo
– 3.1 Creazione Ambiente
– 3.2 Aggiornamento Ambiente
– 3.3 Compilazione di pacchetti
∗ 3.3.1 Da un pacchetto di sorgenti
∗ 3.3.2 Dalla Directory dei sorgenti
– 3.4 Firma GnuPG
– 3.5 File di Configurazione
90
• 4 Varie
– 4.1 Semplifichiamo i comandi con alias
Installazione
Pbuilder , ovviamente, contenuto in Debian:
# apt-get install pbuilder
Configurazione e Opzioni
Normalmente non sono necessarie configurazioni particolari, osserviamo, perci,
le opzioni pi importanti:
pbuilder
- -basetgz [base.tgz ] permette di indicare una locazione, per il tarball dell’ambiente
da gestire, diverso da quello di default
- -buildplace [location of build ] permette di specificare un directory, diversa da quella di default, dove ricreare l’ambiente ed eseguire le compilazioni
- -mirror [mirror location ] permette di specificare un mirror Debian diverso da quello predefinito
- -othermirror [other mirror location in apt deb-line format, delimited with — signs
] permette di aggiungere altri mirror (o repository)
- -http-proxy [proxy ] se presente un proxy http nella rete, possibile gestirne l’accesso (nella forma http://username:password@server)
- -distribution [distribution(potato—woody—sarge—sid—etch—experimental)
] imposta la distribuzione
- -buildresult [location-to-copy-build-result ] permette di specificare una
directory diversa in cui posizionare i pacchetti creati
- -aptcache [location of retrieved package files ] permette di specificare
una directory in cui immagazzinare i pacchetti debian scaricati (e usati)
per soddisfare le dipendenze per la compilazione
- -configfile [configuration file to load ] specifica un file di configurazione
alternativo
- -debemail [mail address ] imposta l’indirizzo email
91
- -debbuildopts [dpkg-buildpackage options ] permette di impostare delle
opzioni aggiuntive per il comando dpkg-buildpackage, che si occupa della
creazione di un pacchetto Debian a partire dai sorgenti
- -logfile [filename to output log ] specifica un file di log, utile per analizzare con calma i risultati delle compilazioni
- -binary-arch permette di impostare l’architettura da usare per la creazione
dell’ambiente (utile nel caso di supporto per pi architetture (macchina a
64 bit))
- -save-after-login/- -save-after-exec permette di salvare lo stato della macchina
al termine di una sessione interattiva, ricreando il tarball a partire dall’ambiente
modificato (usare con attenzione)
pdebuild
- -use-pdebuild-internal
- -auto-debsign impone la firma automatica al termine della compilazione
del pacchetto
- -debsign-k [keyid ] imposta la chiave con cui eseguire la firma del pacchetto
Azioni
create creazione di un nuovo ambiente
update aggiornametno di un ambiene esistente
build compilazione
clean pulizia di un ambiente
login login all’interno di un ambiente
execute esecuzione di un comando all’interno di un ambiente
dumpconfig mostra a video la configurazione dell’ambiente specificato, utile
per le operazioni di debug
Utilizzo
Creazione Ambiente
In questo esempio creeremo un ambiente per la distribuzione sid, con i repository
Debian main, contrib e non-free.
92
# pbuilder create -$\,$-basetgz /home/maxer/pbuilder/sid.tgz -$\,$-mirror http://debian.f
-$\,$-othermirror http://debian.fastweb.it/debian contrib non-free -$\,$-distribution
-$\,$-debemail [email protected] -$\,$-binary-arch i386
Analizzando il comando osserviamo che:
• con - -basetgz impostiamo un percorso diverso per salvare il tarball che
conterr l’immagine del nostro ambiente;
• con - -mirror specifichiamo un mirror italiano, mentre con - -othermirror
aggiungiamo anche non-free e contrib (allo stesso modo potremmo aggiungere altri repository...);
• con - -distribution impostiamo la distribuzione di cui vogliamo creare
l’ambiente;
• con - -debemail impostiamo la nostra email;
• con - -bynary-arch impostiamo l’architettura dei nostri binari (utile nei
sistemi a 64 bit, in cui possibile emulare l’architettura a 32 bit ;-).
Pbuilder scaricher dalla rete tutto il materiale necessario, e creer l’immagine
(potrebbe volerci molto tempo.. quindi consigliata una bella tazzona di caff)!
Aggiornamento Ambiente
L’aggiornamento di un ambiente utile per le release diversa da Stable, nelle
quali sono spesso presenti degli aggiornamenti, che potrebbero portare ad una
modifica delle dipendenze (si pensi, ad esempio, alla migrazione da xfree ad
xorg).
Per aggiornare i pacchetti ed il database dei repository, sufficiente un
# pbuider update -$\,$-basetgz /home/maxer/pbuilder/sid.tgz
Compilazione di pacchetti
La compilazione pu avvenire in due modi:
• Da un pacchetto di sorgenti, tramite pbuilder
• Dalla directory che contiene i sorgenti tramite pdebuild
Da un pacchetto di sorgenti
Questa procedura funziona se si dispone di un pacchetto Debian in formato
sorgente... la procedura usabile, ad esempio, per ricompilare un pacchetto
presente in testing o unstable per una distribuzione stable (tecnica chiamata
backport).
# pbuild build -$\,$-basetgz /home/maxer/pbuilder/sid.tgz file_0.0-1.dsc
93
Questo comando avvier la compilazione, esattamente secondo le seguenti
fasi:
1. creazione dell’ambiente a partire dal tarball indicato
2. risoluzione delle dipendenze per la compilazione
3. compilazione
4. rimozione ambiente creato (definito sporco)
5. eventuale firma GnuPG
Dalla Directory dei sorgenti
Questa procedura, a differenza di quella illustrata precedentemente, molto pi
usata (almeno nel mio caso) in quanto pu essere applicata direttamente alla
directory dei sorgenti (si sta sempre parlando di pacchetti Debian, quindi i
sorgenti devono contenere la directory debian/, che gestisce la creazione dei
pacchetti.
Una volta posizionati nella directori contenente i sorgenti, sufficiente eseguire questo comando:
# pdebuild build -$\,$-basetgz /home/maxer/pbuilder/sid.tgz
In questo caso, invece, la procedura seguita da pbuilder sar leggermente
diversa:
1. esecuzione debian/rules clean all’interno della directory dei sorgenti
2. creazione dell’ambiente a partire dal tarball indicato
3. risoluzione delle dipendenze per la compilazione
4. compilazione
5. rimozione ambiente creato (definito sporco)
6. eventuale firma GnuPG
Firma GnuPG
Pbuilder permette anche la firma con chiave GnuPG, molto utile in quanto evita
l’utilizzo di deb-sign, automatizzando il tutto! L’unico problema (se cos si pu
definire) la necessit di esportare la propria chiave privata ed importarla nel
keyring dell’utente root.
94
File di Configurazione
Una pratica diffusa e molto comoda per semplificare l’utilizzo di pbuider sono
i file di configurazione: essi permettono, infatti, di specificare direttamente al
loro interno i parametri (oltre ad offrirne molti di pi).
Un altro vantaggio, inoltre, consiste nel poter specificare altre distribuzioni
(come ubuntu, knoppix, ...) che altrimenti non sarebbero supportate dal pbuilder
dispnibile in Debian.
I link seguenti portano a dei file di configurazione ad hoc per le distribuzioni
indicate:
• Pbuilder: Breezy.conf
• Pbuilder: Dapper.conf
Varie
Semplifichiamo i comandi con alias
I comandi da impartire sono spesso complessi e lunghi... in questo caso ci
viene in aiuta alias, che permette di creare un nuovo comando, alias di uno pi
complesso.
Per fare questo, sufficiente inserire nel file /root/.bashrc delle righe simili
alle seguenti:
# comandi per la compilazione
alias pdebuild-sarge="pdebuild -$\,$-auto-debsign -$\,$-debsign-k 34337C08 -$\,$-buildres
-$\,$-mirror http://debian.fastweb.it/debian"
alias pdebuild-etch="pdebuild -$\,$-auto-debsign -$\,$-debsign-k 34337C08 -$\,$-buildresu
-$\,$-mirror http://debian.fastweb.it/debian"
alias pdebuild-sid="pdebuild -$\,$-auto-debsign -$\,$-debsign-k 34337C08 -$\,$-buildresul
-$\,$-mirror http://debian.fastweb.it/debian"
alias pdebuild-breezy="pdebuild -$\,$-auto-debsign -$\,$-debsign-k 34337C08 -$\,$-buildre
-$\,$-configfile /root/pbuilder-breezy.conf"
# automatizziamo al massimo
alias pdebuild-all="pdebuild-sarge; pdebuild-etch; pdebuild-sid; pdebuild-breezy"
# aggiornamento
alias pbuilder-update-sid="pbuilder update -$\,$-basetgz /store3/sid.tgz -$\,$-mirror htt
alias pbuilder-update-etch="pbuilder update -$\,$-basetgz /store3/etch.tgz -$\,$-mirror h
alias pbuilder-update-sarge="pbuilder update -$\,$-basetgz /store3/sarge.tgz -$\,$-mirror
alias pbuilder-update-breezy="pbuilder update -$\,$-basetgz /store3/breezy.tgz -$\,$-conf
# automatizziamo al massimo
alias pbuilder-update-all="pbuilder-update-sarge && pbuilder-update-etch && pbuilder-upda
95
I comandi elencati sono, per l’esattezza, quelli che uso io per creare i pacchetti per qualsiasi release Debian ed Ubuntu.
Estratto da ”http://guide.debianizzati.org/index.php/Pbuilder: compilazione in ambienti puliti”
Categoria: Apt-Dev
96