|
|
Riga 1: |
Riga 1: |
| == Introduzione == | | [[Categoria:Sistema]] |
| | == Disclaimer == |
|
| |
|
| Questa guida è dedicata all'uso di Aptitude. | | Questa guida guida si prefigge di raccogliere informazioni riguardo udev, la sua configurazione e il suo utilizzo dal punto di vista dell'utente su sistemi Debian GNU/Linux. |
|
| |
|
| Il completissimo '''manuale utente di Aptitude''' in formato html si può trovare installando il pacchetto <tt>aptitude-doc-en</tt>, in <tt>/usr/share/doc/aptitude/html/en/index.html</tt>. Purtroppo il manuale è solo in inglese.
| | Molte delle informazioni sono tratte (e tradotte) da <tt>/usr/share/doc/udev/</tt>. Si prega di correggere o segnalare ogni possibile (e probabile) inesattezza. |
|
| |
|
| | == Il sottosistema hotplug == |
|
| |
|
| == Cos'è Aptitude ==
| | Il sottosistema hotplug (dall'inglese: connessione a caldo, cio� a PC acceso) � un servizio del kernel che provvede a notificare in user space l'avvenuta connessione di un nuovo dispositivo. |
| | Nell'evoluzione del kernel Linux questo servizio ha subito diverse modificazioni, nel tentativo di migliorare ogni volta in termini di prestazioni e flessibilit�. |
|
| |
|
| 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/manuals/apt-howto/ch-distros.it.html).
| | Nei kernel 2.4 l'interfaccia tra i driver e i programmi era fornita assieme a tutte le configurazioni del kernel stesso tramite il filesystem virtuale <tt>/proc</tt>, e i file di dispositivo erano creati staticamente: nella directory <tt>/dev</tt> erano presenti tutti i possibili device file. |
| | Nel tentativo di migliorare il sistema venne implementato devfs, un altro filesystem virtuale, che si occupava solo dell'interazione programmi-driver, separando cos� la gestione di questi da quella del kernel. |
|
| |
|
| 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 ...).
| | A partire dal kernel 2.6 devfs � stato progressivamente abbandonato e sostituito dal sysfs, ancora un filesystem virtuale, che adotta una nuova e unificata interfaccia verso i driver e che risulta migliore di tutte le implementazioni passate. |
|
| |
|
| Aptitude è un frontend a dpkg esattamente come apt-get, che sembra essere destinato a sostituire integralmente lo stesso [[Introduzione_all%27_Apt_System | apt-get (e affini)]], tanto che nelle release notes di Sarge si legge:
| | Qualsiasi sia l'interfaccia che il kernel mette a disposizione, � necessario in user space un programma che si occupi di ricevere le notifiche di hotplug e compiere le azioni necessarie per l'utilizzo delle periferiche notificate (caricare moduli, eseguire script ed, eventualmente, creare file di dispositivo in <tt>/dev</tt>). |
|
| |
|
| {{Box|Citazione:|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.}}
| | Prima di udev il programma che svolgeva questo compito era stato chiamato, con poca fantasia, hotplug. |
| | Hotplug � tutt'ora in grado di svolgere il suo compito, ma ha alcune limitazioni che si sta tentando di superare: |
|
| |
|
| e anche:
| | *� uno script bash, quindi � lento. Notare che la cosa � ininfluente per gli utenti comuni, a meno che non si connettano decine di periferiche al minuto ;-) |
| | *sempre a causa della sua natura di script, occupa molto pi� spazio di un programma C, considerato anche che necessita dell'interprete /bin/sh. Anche questo fattore non tocca direttamente un utente comune, ma � invece fondamentale per chi sta riorganizzando il processo di boot per implementare un sistema di hotplug dentro ad un nuovo tipo di initrd: l'initramfs. |
| | *deve funzionare anche sui kernel 2.4, quindi non si appoggia al sysfs, perdendo in performance e funzionalit�. |
| | *necessita di una directory /dev statica (nota che il devfs � ormai in disuso) |
|
| |
|
| {{Box|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.}}
| | == Cos'� udev == |
|
| |
|
| Si può utilizzare Aptitude in due modi: da linea di comando, cioè come apt-get (la sintassi e le opzioni sono identiche, o quasi), oppure tramite l'interfaccia visuale basata sulle librerie ncurses.
| | Udev � un programma in user space in grado ricevere le notifiche del sottosistema hotplug dei kernel 2.6. A partire dalla versione 0.070 � in grado di fare tutto quello che faceva hotplug per i kernel 2.4, ma � molto pi� veloce e leggero (� scritto in C). In pi� udev � in grado di creare dinamicamente i device file (quelli in <tt>/dev</tt>) per ogni periferica che viene rilevata nel sistema. |
|
| |
|
| 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.
| | Udev si appoggia unicamente al sysfs. Questo fatto ha il grande vantaggio di poter usufruire appieno della nuova e potente interfaccia di cui � stato dotato il kernel 2.6 (il sysfs, appunto) per la comunicazione tra i programmi in user space e i driver delle periferiche in kernel space, includendo nuove funzionalit� e migliore controllo sui driver stessi. L'unico svantaggio consiste nel fatto che non tutti i driver, al momento in cui si scrive, sono stati aggiornati per utilizzare il sysfs. |
|
| |
|
| {{Box|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.
| | Udev � un programma molto potente e flessibile che, occupandosi direttamente della creazione dei file di dispositivo (device file), permette un controllo molto accurato nella gestione degli stessi, dando la possibilit� all'amministratore di impostare in modo personalizzato tutti i loro attributi (nome, permessi, proprietario, ecc.) |
| | Tramite delle regole (udev rules) si possono assegnare nomi fissi a determinati dispositivi (a prescindere, ad esempio, dalla porta usata per collegare la periferica). Inoltre � possibile richiamare un certo programma/script non appena un dispositivo viene riconosciuto dal sistema. |
|
| |
|
| 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.}}
| | Udev non si occupa tuttavia di caricare i moduli necessari al funzionamento del dispositivo, infatti questi <b>devono</b> essere gi� caricati per permettere ad udev di riconoscere la periferica e creare il corrispondente device file. |
|
| |
|
| | Sulla stable ('''sarge''') udev presente nella versione 0.056 e viene usato in accoppiata con hotplug, che si occupa di caricare i driver delle periferiche. |
|
| |
|
| == Uso da linea di comando ==
| | In '''etch''' (attuale testing) e '''sid''' udev ha invece sostituito anche Hotplug. |
|
| |
|
| Anche dalla linea di comando l'uso di aptitude è molto semplice e comodo. Si usa in genere la seguente forma:
| | Questa guida � dedicata alla versione di udev attualmente in etch. |
|
| |
|
| aptitude azione [argomenti...]
| | == Il nuovo udev == |
|
| |
|
| ''azione'' dice ad aptitude quale azione svolgere; i rimanenti argomenti dipendono dall'azione scelta e consistono tipicamente in una lista di nomi di pacchetti.
| | Dalla versione 0.070 in poi udev ha sostituito completamente hotplug. I driver delle periferiche rilevate vengono caricati tutti automaticamente durante il boot. Per fare un esempio, se al boot vengono trovate delle porte usb, verr� automaticamente caricato il modulo <tt>usb-storage</tt> che permetter� (tra le altre cose) di usare eventuali chiavette usb. |
|
| |
|
| Le azioni più importanti sono: | | Per usare questa versione di udev � necessario un kernel 2.6.12 o superiore con le opzioni hotplug (CONFIG_HOTPLUG) e tmpfs (CONFIG_TMPFS) attivate. Le opzioni CONFIG_PNP, CONFIG_ISAPNP, CONFIG_PNPBIOS e CONFIG_PNPACPI sono altamente raccomandate per consentire il caricamente automatico di importanti driver. |
|
| |
|
| ; <tt>aptitude update</tt> : aggiorna la lista dei pacchetti (come premere ''''u'''' dall'interfaccia visuale o come <tt> apt-get update</tt>)
| | A partire dal kernel 2.6.15-rc1 � stata introdotta la nuova implementazione del driver model, la quale presenta nuove feature e una migliore organizzazione dei contenuti di sysfs. Per gestire correttamente i vari dispositivi � quindi obbligatorio dotarsi di una versione di udev pari o superiore alla 0.071. |
|
| |
|
| ; <tt>aptitude upgrade</tt> : 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)
| | Il pacchetto hotplug deve essere rimosso manualmente, anche se non dovrebbe creare problemi se restasse installato. |
|
| |
|
| ; <tt>aptitude dist-upgrade</tt> : anche questo comando aggiorna tutti i pacchetti, ma è più aggressivo nella risoluzione delle dipendenze: nouvi pacchetti saranno installati e altri rimossi, fino a quando tutte le dipendenze non saranno soddifatte. Questo comando potrebbe fare cose non desiderate (come, appunto, installare nuovi pacchetti o rimuoverne altri) quindi deve essere usato con cautela.
| | Si pu� disabilitare udev aggiungendo al boot il parametro del kernel <tt>UDEV_DISABLED=yes</tt> in grub o lilo. Alternativamente si pu� configurare in <tt>/etc/udev/udev.conf</tt> una directory diversa da <tt>/dev</tt> per la creazione dei device file. |
|
| |
|
| ; <tt>aptitude [ install | remove | purge ] pkg1 [pkg2...]</tt>: questi comandi installano, rimuovono o fanno il ''purge'' (eliminazione anche dei file di configurazione) dei pacchetti specificati.
| | == Come funziona udev == |
| | Quando un driver viene caricato, rende disponibili delle informazioni in <tt>/sys</tt> e udev viene eseguito per leggerle e creare il device file appropriato. |
|
| |
|
| ; <tt>aptitude search espressione1 [espressione2...]</tt>: 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").
| | Quando si collega una nuova periferica viene generato un evento di hotplug che viene intercettato non pi� da <tt>/sbin/hotplug</tt> bens� da <tt>/sbin/udevsend</tt> (il gestore degli eventi hotplug � indicato in <tt>/proc/sys/kernel/hotplug</tt>). |
|
| |
|
| ; <tt>aptitude show pkg1 [pkg2...]</tt> : mostra su terminale le informazioni di ogni pacchetto specificato.
| | Questo significa che: |
| | * i moduli non possono essere caricati su richiesta quando un'applicazione cerca di aprire un suo dispositivo, perch� il dispositivo non c'� ancora! |
|
| |
|
| 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.
| | * poich� i moduli non vengono caricati su richiesta, se per qualche motivo i driver non possono essere caricati automaticamente durante il boot, bisogner� aggiungerli ad /etc/modules (oppure usare modconf ;-)). |
|
| |
|
| | * alcuni moduli non sono dei driver di un dispositivo e non possono essere caricati automaticamente da udev, devono quindi essere elencati in /etc/modules anch'essi. |
|
| |
|
| ==Interfaccia grafica==
| | * alcuni driver non sono stati ancora portati su sysfs, e udev non sar� in grado di creare i loro device. Se si usa uno di questi driver � necessario creare il device dopo ogni boot. A questo scopo vedere la sezione sul file <tt>/etc/udev/links.conf</tt> |
|
| |
|
| 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.
| | In altre parole, su un tipico sistema si potrebbero dover caricare manualmente (usando /etc/modules) dei moduli come ppdev e tun. |
|
| |
|
| 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.).
| | == Da hotplug a udev == |
|
| |
|
| 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 sottorami, e premendo invio sui vari sottorami si accede allo stesso modo ai sotto-sottorami e così via, fino ad arrivare ai pacchetti.
| | Nel passaggio da hotplug a udev i seguenti file di configurazione sono diventati obsoleti: |
|
| |
|
| 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.
| | ; <tt>/etc/hotplug/*.rc</tt> e <tt>*.agent</tt>: i vecchi file di hotplug non vengono pi� usati. Le regole di udev in <tt>/etc/udev/rules.d/</tt> possono essere usate per disabilitare selettivamente il coldplugging. |
|
| |
|
| Ogni riga che mostra il nome di un pacchetto riporta anche molte informazioni.
| | ; <tt>/etc/hotplug/usb/*.usermap</tt>: devono essere sostituiti da regole udev. |
| 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 | APT uso avanzato: mixare releases diverse ]]):
| |
| <pre> | |
| stato nome vers. attuale vers. aggiornata
| |
| | |
| i aptitude 0.2.15.9-2 0.2.15.9-2
| |
| i amule 2.0.3-3 2.0.3-4
| |
| i A amule-common 2.0.3-3 2.0.3-4
| |
| c hotplug <nessuna> 0.0.200403
| |
| p apmd <nessuna> 3.2.2-3
| |
| </pre>
| |
| | |
| 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 (<tt>A</tt>), 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 (<tt>c</tt>)
| |
| *apmd non è installato (<tt>p</tt>), 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 ;-)).
| |
| | |
| | |
| ==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 <tt>apt-get update</tt>, 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).
| | ; <tt>/etc/hotplug/blacklist*</tt>: dovrebbero essere sostituite da direttive di configurazione di modprobe (ma per adesso modprobe processer� <tt>/etc/hotplug/blacklist.d/</tt>). |
|
| |
|
| 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 versione desiderata con "=", oppure dovreste leggere la guida già citata sul pinning.
| | Inoltre dalla versione 0.072: |
|
| |
|
| 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.
| | * tutti i file in <tt>/etc/udev/scripts/</tt> e <tt>/lib/hotplug/</tt> e alcuni file in <tt>/sbin/</tt> sono stati spostati in <tt>/lib/udev/</tt>. Non dimenticate di aggiornare le regole personalizzate, se ne avete create. |
|
| |
|
| 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 <tt>Pacchetti installati</tt> poi usiamo la freccia in alto e se necessario risaliamo ancora ai rami superiori finchè non arriviamo a <tt>Pacchetti aggiornabili</tt> e qui premiamo "+". Questo marcherà per l'installazione tutti i pacchetti aggiornabili :-D
| | == La directory <tt>/etc/udev/rules.d/</tt> == |
|
| |
|
| | I file vengono letti e processati in ordine alfabetico, e le direttive contenute nelle regole vengono applicate in ordine. Le uniche eccezioni sono gli attributi NAME, di cui viene considerato solo il primo. |
|
| |
|
| ==Risolvere eventuali problemi con delle dipendenze==
| | Poich� l'ordine � importante, alcuni di questi file hanno un nome particolare, per far s� che vengano letti prima o dopo di altri, e devono essere opportunamente considerati quando si aggiungono regole personalizzate. |
|
| |
|
| 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:
| | Fino ad ora sono stati definiti: |
| <pre>
| |
| iB udev 0.070 0.074
| |
| </pre>
| |
| dove "B" significa "con errori", e sotto si legge:
| |
| <pre>
| |
| Alcune dipendenze di udev non sono soddisfatte:
| |
|
| |
|
| *udev è in conflitto con module-init-tools (< 3.2pre9-1)
| | ; <tt>020_permissions.rules</tt>: imposta proprietario e permessi di default. |
| </pre> | |
| 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.
| | ; <tt>z50_run.rules</tt>: viene eseguito <tt>$REMOVE_CMD</tt>, e successivamente l'elaborazione dei device tty viene fermato con <tt>last_rule</tt>. |
|
| |
|
| 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 ;-).
| | ; <tt>z70_hotplugd.rules</tt>: le opzioni di <tt>last_rule</tt> finiscono di processare gli eventi hotplug riguardanti "drivers" e "module" e vengono eseguiti i vecchi script in <tt>hotplug.d/</tt> e <tt>dev.d/</tt>. |
|
| |
|
| 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.
| | E' fortemente sconsigliato di modificare i file nella directory <tt>/etc/udev/rules.d/</tt>, perch� il sistema di gestione dei pacchetti ([[Introduzione_all%27_Apt_System | APT]]) per default non aggiorna i file che vengono modificati dopo l'installazione. |
|
| |
|
| Ricordate che abbiamo lanciato aptitude semplicemente con il comando "aptitude"? e ricorderete anche che il mio sistema è una sarge (stable). Questo equivale a lanciare aptitude con il comando "aptitude -t stable", da cui il nostro problema.
| | Per aggiungere delle regole personalizzate per un device � sufficiente inserirle in un file <tt>/etc/udev/rules.d/00_local.rules</tt> creato da voi. Il nome del file assicura che esso venga letto per primo, e questo ci permette di inserire delle regole che varranno eseguite <b>al posto</b> di quelle di default per lo stesso device. |
|
| |
|
| 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 file <tt>/etc/udev/links.conf</tt> == |
|
| |
|
| 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.
| | Purtroppo non tutti i driver hanno un'interfaccia sysfs, e in questo caso udev non sar� in grado di creare alcun device node in modo automatico. Il problema � evidente nel caso di driver sviluppati al di fuori dal kernel, e/o proprietari, su cui si pu� solo sperare che gli autori/manutentori implementino la funzionalit�. |
|
| |
|
| | Nel frattempo abbiamo bisogno di un workaround: certo, uno script di avvio con i giusti comandi (vedi mknod, chmod, chown) pu risolvere il problema, ma il pacchetto udev in Debian fornisce un altro mezzo pi semplice: il file <tt>/etc/udev/links.conf</tt>. |
|
| |
|
| ==Cercare un pacchetto==
| | La sintassi del file � la seguente: |
| | * Ogni riga vuota o che inizia con "#" viene trascurata. |
| | * Ogni riga che inizia con "L" dice ad udev di creare un link simbolico; dopo la L iniziale devono essere specificati due parametri separati da uno spazio o da un tab: il primo � il nome del link da creare nella directory <tt>/dev</tt>, e il secondo � il file a cui punta il link. |
| | * Ogni riga che inizia con "D" dice ad udev di creare una sottodirectory della directory <tt>/dev</tt>, il cui nome deve essere specificato dopo uno spazio o un tab. |
| | * Ogni riga che inizia con "M" dice ad udev di usare <tt>/dev/MAKEDEV</tt> per creare un device node, e di seguito devono essere indicati i parametri da passare a <tt>/dev/MAKEDEV</tt>, che sono, nell'ordine: il tipo di device, il major number e il minor number (per delucidazioni in merito vedere <tt>man mknod</tt>). |
|
| |
|
| 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 <tt>'''/'''</tt> per la ricerca della stringa "cms" nei nomi dei pacchetti.
| | {{Warningbox|Coma gi� detto, il file <tt>/etc/udev/links.conf</tt> rappresenta un workaround, e come tale deve essere usato il meno possibile. In particolare, al fine di evitare conflitti e possibili ''race condition'', si raccomanda di <b>non usare mai</b> questo file per delle impostazioni che udev � in grado di fare in altro modo.}} |
| | |
| 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 <tt>'''/'''</tt> e inseriamo "<tt>~dcms</tt>". Aptitude ci mostra il primo risultato della ricerca, per vedere i risultati successivi premiamo <tt>'''n'''</tt>, e per tornare indietro nella lista <tt>'''\'''</tt>.
| |
| | |
| Per '''L'''imitare la lista dei pacchetti visualizzati possiamo usare il comando <tt>'''l'''</tt>, che si usa allo stesso modo di <tt>'''/'''</tt> ma mostra tutti e soli i pacchetti corrispondenti alla ricerca, organizzati ad albero nel modo che abbiamo già visto.
| |
| | |
| == 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.
| |
| | |
| === 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. E' 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:
| |
| | |
| ; <tt>filter(missing)</tt> : non visualizza i pacchetti che esistono solo nelle dipendenze di un altro pacchetto.
| |
| | |
| ; <tt>status</tt> : Raggruppa i pacchetti in:
| |
| :* Installati
| |
| :* Non installati
| |
| :* Aggiornamenti della sicurezza
| |
| :* Aggiornabili
| |
| :* Obsoleti
| |
| :* Virtuali
| |
| | |
| ; <tt>section[(''mode''[,passthrough])]</tt> : Raggruppa i pacchetti in base alla loro sezione. ''mode'' può assumere uno dei seguenti valori:
| |
| | |
| :; <tt>topdir</tt> : Raggruppa un base alla sezione dell'archivio debian (esempio: ''"main", "contrib", "non-free" ...'').
| |
| :; <tt>subdir</tt> : Raggruppa in base alla sezione logica (esempio: ''"adim", "base", "devel", "gnome", "kde", ecc ...'')
| |
| :; <tt>none</tt> : Raggruppa in base delle sezioni formate dalla somma delle precedenti (esempio: ''"controb/admin", "contrib/devel", "non-free/admin", "non-free/devel").
| |
| :; <tt>task</tt> : Crea un albero dei pacchetti raggruppandoli per task.
| |
| | |
| : Se viene usato il secondo parametro opzionale <tt>passthrough</tt> 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:
| |
|
| |
|
| | Per sottolineare il concetto riporto il commento del mantainer che appare in testa al file: |
| <pre> | | <pre> |
| filter(missing),task,status,section(subdir,passthruough),section(topdir,passthrough)
| | # This file does not exist. Please do not ask the debian maintainer about it. |
| | # You may use it to do strange and wonderful things, at your risk. |
| </pre> | | </pre> |
| | che si legge: |
|
| |
|
| 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''.
| | ''Questo file non esiste. Vi prego di non chiedere al mantainer Debian di questo file. Potete usarlo per fare cose strane e meravigliose, a vostro rischio.'' |
| | |
| == Links ==
| |
|
| |
|
| * [http://www.luv.asn.au/overheads/aptitude/aptitude-intro.html 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.
| | == Link == |
|
| |
|
| [[Categoria:Apt]] | | Altri link di approfondimento: |
| | * [http://www.debian-administration.org/articles/126 Card Readers and USB keys using udev] |
| | * [http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html udev Homepage] |
| | * [http://www.reactivated.net/udevrules.php Writing udev rules] |