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. ` 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