Discussione:Debian Kernel Howto: differenze tra le versioni

(Perchè non compilare da root)
 
Riga 1: Riga 1:
{{stub}}
Grazie per la correzione Abortigeno, non mi ero accorto della svista sui moduli ;-)
==Introduzione==


Questa guida � dedicata all'uso di Aptitude come 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).
: [[Utente:TheNoise|~ The Noise]] 06:23, Lug 20, 2005 (EDT)
L'intento dichiarato dell'autore � quello di indirizzare gli utenti ad imparare l'utilizzo di Aptitude, per usarlo come strumento preferenziale per l'amministrazione dei pacchetti, in quanto permette una pi� facile analisi delle varie situazioni in cui il sistema viene di volta in volta a trovarsi.


Aptitude � un frontend a dpkg esattamente come apt-get, che sembra essere destinato a sostituire integralmente lo stesso apt-get, tanto che nelle release notes di Sarge si legge:
== Proposta nuovo titolo ==


{{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.}}
Ciao!
che ne dite di rimuovere la parte '''(aka make-kpkg)''' dal titolo? e magari mettere la H di ''howto'' in maiuscolo?


e anche:
[[Utente:MaXeR|MaXeR]] 10:14, Set 4, 2005 (EDT)


{{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.}}
Bhe, neanche a me piace... quindi cambiamolo, ma lasciamo il redirect perchè ci sono ormai moltissimi link alla guida (e penso anche a sezioni specifiche (quantomeno nel forum)).


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 utente basata sulle librerie ncurses.
: [[Utente:TheNoise|~ The Noise]] 12:05, Set 4, 2005 (EDT)


Per l'uso da linea di comando si rimanda all'apt-howto (aptitude install apt-howto-it, oppure http://www.debian.org/doc/manuals/apt-howto/index.it.html ) e alla pagina di manuale (man aptitude), invece tratter� pi� diffusamente l'interfaccia utente, perch� ritengo sia uno strumento fondamentale per la gestione dei pacchetti e soprattutto per la diagnostica e la risoluzione degli eventuali problemi riscontrati.
== Non riesco a compilare da utente ==


{{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.  
Mi risulta praticamente impossibile compilare da utente, in quanto molti file o directory (a cominciare da /usr/src/kernel-sourceXXXXX ) hanno permessi rwxr-xr-x ed il gruppo src non può quindi scrivere.


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.}}
Io ho ovviato con un "chmod g+w -R /usr/src/kernel-source-2.6.11", anche se non sò se sia la soluzione migliore.


==Interfaccia utente==
Jimmi


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.
== Compilare da utente o da root? ==


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.).
Onestamente il fatto di non compilare come root mi sembra molto opinabile. Io per esempio non sono d'accordo: se un utente vuole compilarsi un kernel lo può fare nella sua home. Tra l'altro vi posso dire che il team di LFS (Linux From Scratch) al momento dell'installazione dei sorgenti del kernel consiglia di dare un bel "chown -R root:root /usr/src/linux" :-D


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.
Poi ognuno faccia come vuole ;-)


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.
:[[Utente:Tindal|Tindal]] 16:00, Nov 29, 2005 (EST)


Ogni riga che mostra il nome di una pacchetto riporta anche molte informazioni.  
== Perchè non compilare da root ==
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 ]]:
Può sembrare opinabile ma è la policy di default di debian, come indicato nella [http://www.debian.org/doc/manuals/reference/ch-kernel.it.html#s-kernel-compile guida di riferimento]. Per creare un pacchetto non bisogna essere root, ma bisogna esserlo per installarlo. Se si vuole dare accesso ai sorgenti del kernele ad un utente bisogna aggiungerlo necessariamente al gruppo src. In tal modo si minimizza il numero di operazioni eseguite come root. Ammetto che sarà un pò paranoico ma si ottiene in tal modo maggiore sicurezza (non minore!) con uno sforzo minimo (aggiungere un utente ad un gruppo).
<pre>
stato    nome                vers. attuale    vers. aggiornata


i        aptitude            0.2.15.9-2      0.2.15.9-2
: [[Utente:TheNoise|~ The Noise]] 08:49, Dic 4, 2005 (EST)
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:
== lenny: modutils sostituito da module-init-tools ==
*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>)


Tramite semplici comandi si possono visualizzare molte altre informazioni. I comandi principali sono:
in lenny non c'è il pacchetto modutils. mi pare di aver capito che al suo posto ci sia "module-init-tools". è così? in caso di risposta affermativa andrebbe specificato nella guida...
; 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: chiudi la schermata attuale e passa a quella precedente


Per una lista completa vedere la guida online con "?".
ciao
 
bobo
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 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� vi chiede se volete uscire dal programma: per il momento dite di no ;-)).
 
==Aggiornare i pacchetti==
Per la descrizione dell'utilizzo di Aptitude user� 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).
 
Ora torniamo ai pacchetti mostrati prima e supponiamo di voler aggiornare amule: lo seleziono e premo "+". Questo marcher� in verde, cio� per l'installazione, sia amule che amule-common. Poi per� mi viene un'idea migliore, e decido di aggiornare tutti i pacchetti aggiornabili, quindi digito "^" per risalire al ramo superiore della vista, finch� arrivo a <tt>Pacchetti installati</tt> poi uso la freccia in alto e se necessario risalgo ancora ai rami superiori finch� non arrivo a <tt>Pacchetti aggiornabili</tt> e qui premo "+". 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 mi segnala nella zona blu che c'� un pacchetto "errato" cio� con problemi di dipendenze. Senza battere ciglio premo "b" e vedo:
<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)
</pre>
premo invio su udev, e mi appare la schermeta con tutte le informazioni su udev stesso, comprese le dipendenze: seleziono module-init-tools e premo invio. Ora mi appaiono tutte le versioni disponibili di module-init-tools, tra cui vedo che � presente la 3.2pre9-1: non mi 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 ho 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 siate voi a farlo manualmente.
 
Vorrei far 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 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 aptitude pensa che testing sia la nostra release predefinita (che non � vero) e mostrer� come aggiornabili tutti i pacchetti che lo sono in testin, 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 vorrei vedere se in debian c'� qualche programma per la gestione dei contenuti, e l'acronimo in inglese � "cms". Per fare questo posso usare le funzioni di ricerca di aptitude: per prima cosa digito "/" per la ricerca della stringa "cms" nei nomi dei pacchetti.
 
Ora per� mi viene in mente che un cms non contiene necessariamente la stringa "cms" nel nome, quindi faccio una ricerca delle descrizioni per la stessa stringa: digito ancora "/" e inserisco "~dcms". Aptitude mi mostra il primo risultato della ricerca: per vedere il successivo premo "n" oppure "\".
 
Il comando "l", invece, funziona allo stesso modo di "/" ma mostra solo i pacchetti corrispondenti alla ricerca (a differenza di "/" che evidenzia nella lista il primo pacchetto corrispondente alla ricerca).
18

contributi