Manovrare X da remoto: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
m (aggiunto stub)
Riga 1: Riga 1:
== Introduzione ==
{{stub}}
=Introduzione=
Questa guida nasce dalla discussione [http://www.debianizzati.org/component/option,com_joomlaboard/Itemid,29/func,view/catid,19/id,14487/ Manovrare X da remoto] apparsa sul forum di Debianizzati.Org


Questa guida � dedicata all'uso di Aptitude.
Ogni home o client system software che si rispetti ha un 'interfaccia grafica(GUI). Microsoft la include nel suo systema, o kernel che dir si voglia. Le ditribuzioni GNU/Linux la includono nell'installazione di default. In ogni modo nelle distribuzioni GNU/Linux e POSIX la GUI non e' parte del kernel ma un programma a parte l' "X window system" o semplicemente X. Precisamente X non e' la GUI. ''Xdm'', ''Gdm'', ''Kdm'' sono GUI. X è una struttura che la GUI usa per i suoi scopi. Mentre la GUI gestisce bottoni, finestre, testi ecc. X gestisce applicazioni di piu' basso livello: input di tastiera, mouse,fonts ecc. Molte persone potrebero pensare riguardo per esempio ai termini X-server e X-client al contrario di quello che potrebbe sembrare. Un X server e' una macchina nel network dove e' installato un window manager e dove altre altre macchine, X-clients, ci si possono collegare e gestire finestre, scrivere testi, navigare in rete e che puo' leggere il tuo input. In definitiva cosa un X server "serve" sono finestre e il tuo input da mouse o tastiera.


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.
=Configurazione=
Il server X di solito viene iniziato da un X Display Manager.Un X display manager e' xdm,gdm,kdm che forniscono svariati X displays locali o remoti specificati in Xservers usando XDMCP come specificato nel file Xaccess.
In /etc/X11/xdm/xdm-config commenta :


DisplayManager.requestPort:  0
!DisplayManager.requestPort:  0
In /etc/X11/xdm/Xaccess togli il comento a


== Cos'� Aptitude ==
        #*        #any host can get a login window       
        *        #any host can get a login window


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).
Questo mettera' l'Xserver in broadcast mode che buttera' giu' una lista di tutti gli Xserver in Willing di accetare di connettersi all'X server.
Se vuoi permettere connesioni solo da parte di certi host che un sezione nello stesso file che si chiama CHOOSER


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 ...).
In /etc/X11/fs/config commenta cosi':


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:
#no-listen = tcp


{{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.}}
Poi cambia in /etc/X11/XF86Config-4
FontPath        "unix/:-1"
FontPath        "unix/:-7100"


e anche:
Questo per indicare 7100 come porta per FontPath in UDP


{{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.}}
=Utilizzo=
Se usi un sistema GNU/Linux probabilmente hai X gia' installato. L'X server puo' essere lanciarlo con un semplice:
<pre>
# X &
</pre>
Questo fara' partire un server X in background. Comparira' uno schermo con lo sfondo grigio e un X come puntatore del mouse che puoi muovere per lo schermo... niente di speciale ne' di carino da vedere, .... inutile.
Il comando di sopra quindi inizia un X server, che semplicemente sta li' in attesa di un client che si collega come per esempio ''xterm'' che apre una finestra ed esegue una shell. Ci sono molte opzioni da riga di comando che aprono finestre di diversa grandezza e posizione ma tutto cio' non sarebbe molto pratico ne' di facile utilizzo.


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.
C'e' bisogno di un ''X-client'' e di un ''window-manager''.
Un window-manager puo dare quell'usabilita' interattiva alla quale siamo abituati. Un window manager in GNU/Linux potrebbe essere mwm o fvwm che possono essere lanciati con un ''mwm -display :0''  o ''fvwm -display :0'' una volta che e' partito un window-manager muovere e gestire finestre diventa interattivo e lanciare applicazioni diventa piu' facile. Il ''-display :0'' per aprire finestre sull X-server. Un display non e' nient'altro che uno schermo al quale collegarsi. Di default quando X parte lui inizia un display sul 'canale' :0 della macchina locale.
Quando parte una sessione X automaticamente va a piazzare il display al quale e' collegata nella variabile $DISPLAY. Se non dovesse essere stata dichiarata alcuna variabile di default X si andra a piazzare sul display '':0.0''.
In ogni caso per lanciare X dalla console e' un sufficiente lanciare uno ''startx'', che iniziera' un X-server su display '':0''.
Molti X-server specialmente nel mondo GNU/Linux usano ''xdm'' o ''gdm'' o ''kdm''. Xdm sta' per "x display menager"; questi hanno lo scopo di accogliere l'utente con un X-client che e' un login grafico chiamato anche "greeter". Una volta che hai introdotto nome utente e password non solo un window manager ma un intero ambiente desktop si presenta dinanzi ai tuoi occhi.
Ritornado al discorso client server , sul server lancia startx,assicurati ci sia un window manager attivo e poi da un xterm lancia il comando:


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.
<pre> $ xhost add 192.168.0.2 (ip del client)</pre>


{{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.  
Questo permettera' connessioni dalla macchina 192.168.0.2.
Sul client invece digita :
<pre>
$ xterm -display 192.168.0.1(ip Xserver):0
</pre>
Sul server X adesso dovresti vedere un finestra di xterm. E' successo che un X-client si e' collegato ad un xserver aprendo una finestra di xterm li'.


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.}}
Riguardo la sicurezza il protocollo X e' apllicabile solo in ambienti fidati Lan e non e' cosigliabile avere sessioni X attraverso la grande rete. Se vuoi utilizzare X attraverso la rete e' consigliabile incanalare il protocollo X in un protocollo sicuro come ssh. In ogni caso ci sono anche altri modi in aggiunta ad ssh che puoi utilizzare per proteggere le tue macchine uno di questi e'xhost ma anche meglio con un programma xauth utilizzato per autenticare i clients: ''Xauth'' puo' funzionare in vari modi: uno di essi e' attraverso l'utilizzo di un cookie. Un X-client per collegarsi ad un X-server ha bisogno di conoscere una sequenza di dati casuali generati dal server conosciuto come cookie che funziona in maniera molto simile ad un session password: se il cookie trasmesso dal client non corrisponde a quello del server, Xserver rifiutera' la connessione. Xserver di default e' in ascolto sulla porta 6000 per display:0 , 6001 per display:01  ecc.


 
Programmi come xdm , gdm o kdm sono demoni che vanno in background, sono soliti essere iniziati da init al boot e sono sempre in attivita'. Si occupano di iniziare sessioni X-server se necessario, del login grafico, preparano i cookies di xauth che servono per autenticare i clients e fanno partire il programma adatto per ciascun desktop e cosi' via'.
== Uso da linea di comando ==
Xdm puo' essere configurato per accettare richieste XDMCP dal network. Questi sono speciali pacchetti UDP che un xserver trasmette da porta 177 per richiedere login remoti. Quando un Xserver richiede di collegarsi ad un altra macchia con xdm allora bisogna lanciare l'X-server con opzioni "-query" o "-broadcast". L'opzione "-query" viene usata quando X-server deve lanciare un richiesta XDMCP ad una macchina in particolare, invece "-broadcast" la trasmette a tutte le macchine nel network.
 
<pre>
Anche dalla linea di comando l'uso di aptitude � molto semplice e comodo. Si usa in genere la seguente forma:
X -query 192.168.1.2
 
</pre>
aptitude azione [argomenti...]
o
 
<pre>
''azione'' dice ad aptitude quale azione svolgere; i rimanenti argomenti dipendono dall'azione scelta e consistono tipicamente in una lista di nomi di pacchetti.
X -broadcast
 
</pre>
Le azioni pi� importanti sono:
Come detto pocanzi X puo' essere usato attraverso la grande rete ma non senza alcune contromisure.Una di questa e' di usare un tunnel ssh , affinche' funzioni va' settata l'opzione X11Forwarding a yes in ''/etc/ssh/sshd_config''.
 
Fa partire un X-server con startx sulla macchina locale , poi in xterm collegherati alla macchina remota usando ssh con il seguente comando:
; <tt>aptitude update</tt> : aggiorna la lista dei pacchetti (come premere ''''u'''' dall'interfaccia visuale o come <tt> apt-get update</tt>)
<pre>
 
ssh -X -C user@remotebox
; <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)
</pre>
 
Dove "user" e' il tuo user code. Dopo esserti collegato puoi lanciare programmi X-client e questi li vedrai sulla tua macchina locale. Quando ssh si collega a un sshd usando l'opzione -X, l'sshd prepara un "virtual" X-server su di un display col numero piu' alto disponibile (di solito il 10)
; <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.
e dopo crea il suo authentication cookie per la sessione.  
 
Quando un X-client sulla stessa macchina del sshd server si connette al display 10, lo pseudo sshd X-server convalida l'X-client usando il suo cookie, cripta la connessione e trasmette la richiesta all' ssh client sulla tua macchina. L'ssh client poi autentica la richiesta al vero X-server usando il cookie vero e visualizza le richieste dell'X-server. L'opzione "-C" comprime la comunicazione rendendola piu fluida e la decomprime una volta a termine dall'altro lato.
; <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.
L'uso di X attraverso ssh puo' delle volte causare dei problemi di rendimento e performance. Il protocollo X trasmettera' tutte le righe, tutte le aree anche non necessarie, non c'e' una cache ne' alcun tipo di funzionalita' "trasmetto solo cosa e' cambiato".Significa che se un' area e' stata ridisegnata tre volte il protocollo X trasmettera' tutte le volte che quell'area e' stata cambiata mentre basterebbe trasmettere solo l'ultima delle tre e questo potrebbe risultare un po' dannoso su connessioni lente. Il protocollo VNC e' consapevole di questo aspetto infatti il VNC server aspetta connessioni dai VNC clients e quando il client si connette VNC trasmette l'intero desktop al client. VNC e' sia un vncserver che un x-server. Quando parte si mette in ascolto sulla sua porta tcp la 5900 (+ il numero di display :0.1 x 5901, :02 x 5092 ecc.) in attesa di VNC clients che si collegano. Rimane in ascolto anche sulla socket del display proprio come un X-server ma, invece di trasmettere la richiesta su un monitor, la tiene in memoria per trasmetterla al client. Per configurare VNC c'e' bisogno della presenza di un vncserver da essere lanciato manualmente. Per prima cosa bisogna impostare una vncpasswd che poi verra' usata per il login. Ci si collega con ssh senza l'opzione ''-X'':
 
; <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").
 
; <tt>aptitude show pkg1 [pkg2...]</tt> : 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==
 
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 sottorami, e premendo invio sui vari sottorami si accede allo stesso modo ai sotto-sottorami 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 | APT uso avanzato: mixare releases diverse ]]):
<pre>
<pre>
stato    nome                vers. attuale    vers. aggiornata
ssh username@hostremoto
 
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>
</pre>
 
Poi una volta collegato lanci ''vncserver :1'' che in pratica mette vncserver in ascolto sul display 1 cioe' tcp port 5901.Dopo puoi lanciare il vnc client come per esempio tightvncviewer o vncviewer o svncviewer in questo modo :
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).
 
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.
 
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 <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
 
 
==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:
<pre>
<pre>
iB      udev          0.070    0.074
vncviewer hostremoto:1
</pre>
</pre>
dove "B" significa "con errori", e sotto si legge:
Poi ti verra' chiesta la password e tu introdurrai quella stabilita in precedenza e vuola' eccoti il desktop remoto in locale in tutto il suo splendore.
Questa configurazione presenta dei rischi, porta 5900 e 5800 deve essere aperta nel firewall e la comunicazione e' in chiara. Per criptarla c'e' bisogno di un tunnel ssh. Ancora una volta l'amico ssh ci viene incontro:
<pre>
<pre>
Alcune dipendenze di udev non sono soddisfatte:
ssh -C -L 5901:127.0.0.1:5901 user@remotehost
 
  *udev � in conflitto con module-init-tools (< 3.2pre9-1)
</pre>
</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.
questo comando mettera' ssh in ascolto sulla porta locale 5901 fino alla porta remota 5901 quella del server vnc. Una volta loggati sulla macchina remota, sulla macchina locale apri vncviewer (un qualsiasi client vnc,o addirittura il browser con java) e lo punti a ''localhost:5901'' vncviewer questo comando ti permettera' di criptare la tua connessione verso il server vnc attraverso un tunnel ssh.
 
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 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.
(G)


Molte persone credono che X sia stato progettato solo per GNULinux e unixlike ma in realta' come ogni prodotto unix il primo intento e' la portabilita' verso quanti piu' OS e' possibile .
Altri ottimi progetti sono il [http://www.ltsp.org Linux terminal Server project] che usa tutte le potenzialita' di X in scenari dove gli utenti sono collegati ad un X server centrale attraverso dei thin client o diskless machine con un grosso abbatimento sui costi e in questo senso come non menzionare il progetto [http://www.progettolazzaro.it/ProgettoLazzaro.htm LazarusNX] che ha come obbiettivo il recupero di hardware obsoleto specialmente nelle scuole italiane,creazione di reti didattiche e laboratori informatici ad alte prestazioni e costi contenuti.
"C'è una crescente sensibilità verso il reimpiego dell'hardware obsoleto, del suo riutilizzo con finalità sociali, accademiche ma anche di business - si legge in una nota - Immaginiamo una scuola (ma potrebbe essere una qualsiasi organizzazione statale o privata) che abbia un parco computer obsoleto. Con Lazarus-NX queste macchine possono essere riutilizzate su piattaforma Open Source, svincolando l'organizzazione anche dalle spese di licenza tipiche del software proprietario".


==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 <tt>'''/'''</tt> per la ricerca della stringa "cms" nei nomi dei pacchetti.
Altro link interessante:


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>.
http://www.tldp.org/HOWTO/XDMCP-HOWTO
 
Diversamente 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:
 
<pre>
filter(missing),task,status,section(subdir,passthruough),section(topdir,passthrough)
</pre>


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''.
Scopo di questo scritto e' di fornire una guida generale sul mondo dei desktop remoti e il loro uso mediante software opensource


== Links ==
Per insulti o gemiti di piacere questa e' la mia mail : gabrix@gabrix.ath.cx


* [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.
Grazie e ciao !

Versione delle 16:27, 31 mar 2006

Document-page-setup.png Attenzione: questo articolo è ancora incompleto e in fase di scrittura da parte del suo autore.

Sentitevi liberi di contribuire, proponendo modifiche alla guida tramite l'apposita pagina di discussione, in modo da non interferire con il lavoro portato avanti sulla voce. Per altre informazioni si rimanda al template.


Introduzione

Questa guida nasce dalla discussione Manovrare X da remoto apparsa sul forum di Debianizzati.Org

Ogni home o client system software che si rispetti ha un 'interfaccia grafica(GUI). Microsoft la include nel suo systema, o kernel che dir si voglia. Le ditribuzioni GNU/Linux la includono nell'installazione di default. In ogni modo nelle distribuzioni GNU/Linux e POSIX la GUI non e' parte del kernel ma un programma a parte l' "X window system" o semplicemente X. Precisamente X non e' la GUI. Xdm, Gdm, Kdm sono GUI. X è una struttura che la GUI usa per i suoi scopi. Mentre la GUI gestisce bottoni, finestre, testi ecc. X gestisce applicazioni di piu' basso livello: input di tastiera, mouse,fonts ecc. Molte persone potrebero pensare riguardo per esempio ai termini X-server e X-client al contrario di quello che potrebbe sembrare. Un X server e' una macchina nel network dove e' installato un window manager e dove altre altre macchine, X-clients, ci si possono collegare e gestire finestre, scrivere testi, navigare in rete e che puo' leggere il tuo input. In definitiva cosa un X server "serve" sono finestre e il tuo input da mouse o tastiera.

Configurazione

Il server X di solito viene iniziato da un X Display Manager.Un X display manager e' xdm,gdm,kdm che forniscono svariati X displays locali o remoti specificati in Xservers usando XDMCP come specificato nel file Xaccess. In /etc/X11/xdm/xdm-config commenta :

DisplayManager.requestPort: 0 !DisplayManager.requestPort: 0

In /etc/X11/xdm/Xaccess togli il comento a

       #*         #any host can get a login window         
        *         #any host can get a login window

Questo mettera' l'Xserver in broadcast mode che buttera' giu' una lista di tutti gli Xserver in Willing di accetare di connettersi all'X server. Se vuoi permettere connesioni solo da parte di certi host che un sezione nello stesso file che si chiama CHOOSER

In /etc/X11/fs/config commenta cosi':

  1. no-listen = tcp

Poi cambia in /etc/X11/XF86Config-4 FontPath "unix/:-1" FontPath "unix/:-7100"

Questo per indicare 7100 come porta per FontPath in UDP

Utilizzo

Se usi un sistema GNU/Linux probabilmente hai X gia' installato. L'X server puo' essere lanciarlo con un semplice:

# X &

Questo fara' partire un server X in background. Comparira' uno schermo con lo sfondo grigio e un X come puntatore del mouse che puoi muovere per lo schermo... niente di speciale ne' di carino da vedere, .... inutile. Il comando di sopra quindi inizia un X server, che semplicemente sta li' in attesa di un client che si collega come per esempio xterm che apre una finestra ed esegue una shell. Ci sono molte opzioni da riga di comando che aprono finestre di diversa grandezza e posizione ma tutto cio' non sarebbe molto pratico ne' di facile utilizzo.

C'e' bisogno di un X-client e di un window-manager. Un window-manager puo dare quell'usabilita' interattiva alla quale siamo abituati. Un window manager in GNU/Linux potrebbe essere mwm o fvwm che possono essere lanciati con un mwm -display :0 o fvwm -display :0 una volta che e' partito un window-manager muovere e gestire finestre diventa interattivo e lanciare applicazioni diventa piu' facile. Il -display :0 per aprire finestre sull X-server. Un display non e' nient'altro che uno schermo al quale collegarsi. Di default quando X parte lui inizia un display sul 'canale' :0 della macchina locale. Quando parte una sessione X automaticamente va a piazzare il display al quale e' collegata nella variabile $DISPLAY. Se non dovesse essere stata dichiarata alcuna variabile di default X si andra a piazzare sul display :0.0. In ogni caso per lanciare X dalla console e' un sufficiente lanciare uno startx, che iniziera' un X-server su display :0. Molti X-server specialmente nel mondo GNU/Linux usano xdm o gdm o kdm. Xdm sta' per "x display menager"; questi hanno lo scopo di accogliere l'utente con un X-client che e' un login grafico chiamato anche "greeter". Una volta che hai introdotto nome utente e password non solo un window manager ma un intero ambiente desktop si presenta dinanzi ai tuoi occhi. Ritornado al discorso client server , sul server lancia startx,assicurati ci sia un window manager attivo e poi da un xterm lancia il comando:

 $ xhost add 192.168.0.2 (ip del client)

Questo permettera' connessioni dalla macchina 192.168.0.2. Sul client invece digita :

$ xterm -display 192.168.0.1(ip Xserver):0

Sul server X adesso dovresti vedere un finestra di xterm. E' successo che un X-client si e' collegato ad un xserver aprendo una finestra di xterm li'.

Riguardo la sicurezza il protocollo X e' apllicabile solo in ambienti fidati Lan e non e' cosigliabile avere sessioni X attraverso la grande rete. Se vuoi utilizzare X attraverso la rete e' consigliabile incanalare il protocollo X in un protocollo sicuro come ssh. In ogni caso ci sono anche altri modi in aggiunta ad ssh che puoi utilizzare per proteggere le tue macchine uno di questi e'xhost ma anche meglio con un programma xauth utilizzato per autenticare i clients: Xauth puo' funzionare in vari modi: uno di essi e' attraverso l'utilizzo di un cookie. Un X-client per collegarsi ad un X-server ha bisogno di conoscere una sequenza di dati casuali generati dal server conosciuto come cookie che funziona in maniera molto simile ad un session password: se il cookie trasmesso dal client non corrisponde a quello del server, Xserver rifiutera' la connessione. Xserver di default e' in ascolto sulla porta 6000 per display:0 , 6001 per display:01 ecc.

Programmi come xdm , gdm o kdm sono demoni che vanno in background, sono soliti essere iniziati da init al boot e sono sempre in attivita'. Si occupano di iniziare sessioni X-server se necessario, del login grafico, preparano i cookies di xauth che servono per autenticare i clients e fanno partire il programma adatto per ciascun desktop e cosi' via'. Xdm puo' essere configurato per accettare richieste XDMCP dal network. Questi sono speciali pacchetti UDP che un xserver trasmette da porta 177 per richiedere login remoti. Quando un Xserver richiede di collegarsi ad un altra macchia con xdm allora bisogna lanciare l'X-server con opzioni "-query" o "-broadcast". L'opzione "-query" viene usata quando X-server deve lanciare un richiesta XDMCP ad una macchina in particolare, invece "-broadcast" la trasmette a tutte le macchine nel network.

X -query 192.168.1.2

o

X -broadcast

Come detto pocanzi X puo' essere usato attraverso la grande rete ma non senza alcune contromisure.Una di questa e' di usare un tunnel ssh , affinche' funzioni va' settata l'opzione X11Forwarding a yes in /etc/ssh/sshd_config. Fa partire un X-server con startx sulla macchina locale , poi in xterm collegherati alla macchina remota usando ssh con il seguente comando:

ssh -X -C user@remotebox

Dove "user" e' il tuo user code. Dopo esserti collegato puoi lanciare programmi X-client e questi li vedrai sulla tua macchina locale. Quando ssh si collega a un sshd usando l'opzione -X, l'sshd prepara un "virtual" X-server su di un display col numero piu' alto disponibile (di solito il 10) e dopo crea il suo authentication cookie per la sessione. Quando un X-client sulla stessa macchina del sshd server si connette al display 10, lo pseudo sshd X-server convalida l'X-client usando il suo cookie, cripta la connessione e trasmette la richiesta all' ssh client sulla tua macchina. L'ssh client poi autentica la richiesta al vero X-server usando il cookie vero e visualizza le richieste dell'X-server. L'opzione "-C" comprime la comunicazione rendendola piu fluida e la decomprime una volta a termine dall'altro lato. L'uso di X attraverso ssh puo' delle volte causare dei problemi di rendimento e performance. Il protocollo X trasmettera' tutte le righe, tutte le aree anche non necessarie, non c'e' una cache ne' alcun tipo di funzionalita' "trasmetto solo cosa e' cambiato".Significa che se un' area e' stata ridisegnata tre volte il protocollo X trasmettera' tutte le volte che quell'area e' stata cambiata mentre basterebbe trasmettere solo l'ultima delle tre e questo potrebbe risultare un po' dannoso su connessioni lente. Il protocollo VNC e' consapevole di questo aspetto infatti il VNC server aspetta connessioni dai VNC clients e quando il client si connette VNC trasmette l'intero desktop al client. VNC e' sia un vncserver che un x-server. Quando parte si mette in ascolto sulla sua porta tcp la 5900 (+ il numero di display :0.1 x 5901, :02 x 5092 ecc.) in attesa di VNC clients che si collegano. Rimane in ascolto anche sulla socket del display proprio come un X-server ma, invece di trasmettere la richiesta su un monitor, la tiene in memoria per trasmetterla al client. Per configurare VNC c'e' bisogno della presenza di un vncserver da essere lanciato manualmente. Per prima cosa bisogna impostare una vncpasswd che poi verra' usata per il login. Ci si collega con ssh senza l'opzione -X:

ssh username@hostremoto 

Poi una volta collegato lanci vncserver :1 che in pratica mette vncserver in ascolto sul display 1 cioe' tcp port 5901.Dopo puoi lanciare il vnc client come per esempio tightvncviewer o vncviewer o svncviewer in questo modo :

vncviewer hostremoto:1

Poi ti verra' chiesta la password e tu introdurrai quella stabilita in precedenza e vuola' eccoti il desktop remoto in locale in tutto il suo splendore. Questa configurazione presenta dei rischi, porta 5900 e 5800 deve essere aperta nel firewall e la comunicazione e' in chiara. Per criptarla c'e' bisogno di un tunnel ssh. Ancora una volta l'amico ssh ci viene incontro:

ssh -C -L 5901:127.0.0.1:5901 user@remotehost

questo comando mettera' ssh in ascolto sulla porta locale 5901 fino alla porta remota 5901 quella del server vnc. Una volta loggati sulla macchina remota, sulla macchina locale apri vncviewer (un qualsiasi client vnc,o addirittura il browser con java) e lo punti a localhost:5901 vncviewer questo comando ti permettera' di criptare la tua connessione verso il server vnc attraverso un tunnel ssh.

(G)

Molte persone credono che X sia stato progettato solo per GNULinux e unixlike ma in realta' come ogni prodotto unix il primo intento e' la portabilita' verso quanti piu' OS e' possibile . Altri ottimi progetti sono il Linux terminal Server project che usa tutte le potenzialita' di X in scenari dove gli utenti sono collegati ad un X server centrale attraverso dei thin client o diskless machine con un grosso abbatimento sui costi e in questo senso come non menzionare il progetto LazarusNX che ha come obbiettivo il recupero di hardware obsoleto specialmente nelle scuole italiane,creazione di reti didattiche e laboratori informatici ad alte prestazioni e costi contenuti.

"C'è una crescente sensibilità verso il reimpiego dell'hardware obsoleto, del suo riutilizzo con finalità sociali, accademiche ma anche di business - si legge in una nota - Immaginiamo una scuola (ma potrebbe essere una qualsiasi organizzazione statale o privata) che abbia un parco computer obsoleto. Con Lazarus-NX queste macchine possono essere riutilizzate su piattaforma Open Source, svincolando l'organizzazione anche dalle spese di licenza tipiche del software proprietario".


Altro link interessante:

http://www.tldp.org/HOWTO/XDMCP-HOWTO

Scopo di questo scritto e' di fornire una guida generale sul mondo dei desktop remoti e il loro uso mediante software opensource

Per insulti o gemiti di piacere questa e' la mia mail : gabrix@gabrix.ath.cx

Grazie e ciao !