Guida all'uso del CdC senza le macchine del CdC! (O anche "Da casa o col portatile") - V. 1.2

di Aureliano Rama (GNU FDL v1.3)

Home

Introduzione
    Soluzione 1
    Soluzione 2
    Soluzione 3
    Alternativa locale

Client SSH
    Client SSH per Windows: PuTTY

Client SCP
    SCP per Windows: WinSCP

Editor
    VI
    Nano
    Ne - Nice Editor

Licence

Questo corso ha lo scopo di insegnarvi come si programma un linguaggio imperativo (in particolare il linguaggio C).

A tale fine settimanalmente vi verranno proposte delle esercitazioni che di norma dovreste eseguire su uno dei pc del centro di calcolo (CdC).

Comunque, un numero consistente di studenti è in possesso di un portatile proprio e nello stesso tempo le macchine dell'aula H (l'aula dove si svolgono normalmente le esercitazioni settimanali) sono assai meno del numero di studenti. Inoltre molti hanno espresso l'intenzione di ripetere da casa gli esercizi proposti.

Quindi, sebbene non sia negli scopi di questo corso, questa è una veloce guida per aiutarvi ad usare le risorse del CdC con il vostro portatile o comunque da una macchina diversa da quelle del CdC stesso (ad esempio da casa vostra).

Introduzione

Ogni studente ha a sua disposizione uno spazio disco limitato (ma sufficiente alla maggior parte degli scopi).
Questo spazio disco è in effetti virtuale sulle macchine del CdC: lo spazio vero e proprio risiede su un sever NFS e quello che vedete quando siete loggati su una macchina è fittizio. Ogni volta che fate un'operazione su file, quindi, la macchina invia i relativi comandi via rete al server NFS e riceve conferma delle modifiche effettuate, mostrandovi il risultato come se fosse avvenuto in locale.
In questo modo potete loggarvi su qualsiasi macchina del CdC (anche contemporaneamente, volendo) e vedere il vostro spazio disco identico e sempre aggiornato.

Questo però comporta anche che le altre macchine, che non sono integrate nella rete del CdC (anche nel caso che ne usino alcuni servizi, come la navigazione web) non possono vedere direttamente il vostro spazio disco.

Per questo motivo, anche se installate lo stesso editor di testo che viene usato sulle macchine del CdC (Emacs), voi vedrete (e potrete modificare) solamente file locali al vostro pc (e quindi non presenti o non aggiornati sul vostro spazio disco).

In questo documento vi verranno proposte tre soluzioni per lavorare dal portatile o da casa usando la vostra home del CdC ed un'alternativa per lavorare direttamente dalla vostra macchina.

 

Soluzione 1

Tipologia: client ssh, editor remoto a linea di comando (fattibile da casa)

Usate un client SSH (già presente su Linux, Ubuntu e MaxOSX, su Windows scaricate PuTTY, vedere dopo) per connettervi ad una macchina del CdC su cui sta runnando Linux.
La macchina di Login principale è Olivia (con indirizzo olivia.cli.di.unipi.it) ma ogni macchina con Linux avviato va bene. Considerate che durante le esercitazioni Olivia sarà assaltata quindi il mio suggerimento è di connettervi ad una delle macchine che avete vicino: il nome della macchina lo potete leggere sulla schermata di login o da un qualsiasi prompt della shell; a questo nome (mettiamo 'atxh1') aggiungete '.cli.di.unipi.it' in coda per ottenere l'indirizzo da passare al client SSH (nel nostro esempio, 'atxh1.cli.di.unipi.it').
Una volta loggati su una macchina, usate un editor di testo a linea di comando.
Potete usare emacs (esiste un emacs testuale) oppure altri.
Il mio favorito è ne, è un editor molto semplice e intuitivo (ma non presente di default sulle macchine del CdC, qui le istruzioni per ottenerlo).
In questo modo avrete a disposizione il vostro spazio disco ed editerete file direttamente in loco, potendoli compilare subito dopo.
L'altra faccia della medaglia è che perdete tutti i vantaggi degli editor grafici (e soprattutto del mouse!).

Soluzione 2

Tipologia: editor locale, scp per trasferire file, client ssh per compilare (fattibile da casa)

Questa soluzione è la più indicata per l'uso da casa, poiché richiede interazioni limitate con la rete.

Una volta installato un editor di testo, usatelo per scrivere il vostro codice.
Quindi usate un client scp per trasferire i file su una macchina del CdC con Linux in esecuzione. Olivia (olivia.cli.di.unipi.it) è la scelta migliore soprattutto al di fuori delle normali ore di lezione.
A questo punto usate un client ssh per loggarvi su una macchina (la stessa o un'altra non fa differenza, visto che la vostra home è presente virtualmente su tutte le macchine del CdC) dalla quale potrete compilare ed eseguire il codice.

Soluzione 3 (avanzata, solo per utenti con una certa manualità)

Tipologia: server x in locale, client ssh con tunnelling di X, editor grafico che gira in remoto su home CdC (difficilmente fattibile da casa)

Questa soluzione richiede una connessione a bassa latenza fra il vostro pc e una delle macchine Linux del CdC ed è quindi difficilmente utilizzabile da casa (la connessione ad una macchina del CdC dall'esterno delle reti dell'università ha spesso latenza elevata). Potete provarci ma molto probabilmente le finestre risponderanno troppo lentamente per essere di alcuna utilità.

Se avete Windows, dovete installare un server X sulla vostra macchina ed averlo in esecuzione per tutta la durata della connessione. La scelta più semplice è XMing: scaricatelo da http://www.straightrunning.com/XmingNotes/, scaricate la versione in Public Domain insieme con i Fonts (sono essenziali per Emacs).
Se invece avete Linux o MacOSX, avete già un server X sulla vostra macchina (è quello che vi mostra le finestre in questo momento!).

Usate un client ssh per aprire una connessione ad una macchina del CdC, Olivia (olivia.cli.di.unipi.it) è sempre una scelta buona ma se siente in laboratorio potete usare una delle macchine vicine a voi per evitare le probabili congestioni di Olivia.
Questa connessione deve essere settata con il tunnelling di X attivato (opzione -X per la linea di comando, per PuTTY su Windows vedere sotto).

A questo punto, lanciando da linea di comando (sulla macchina CdC) un qualsiasi programma grafico (ad esempio xclock) si dovrebbe aprire la finestra sul vostro pc anche se in effetti il programma sta runnando sulla macchina remota.
Per verificare che il programma runna in remoto ma interagisce con la macchina locale, lanciate "xeyes &". Come vedrete subito, gli occhi seguono il vostro mouse ma un ps sulla console remota vi mostrerà il programma in esecuzione laggiù.

Quindi avete il meglio dei due mondi, potete usare Emacs sulla vostra macchina anche se state effettivamente editando file che risiedono nella vostra home del CdC (e che potete compilare e runnare immediatamente dalla shell aperta).

Ricordate di chiudere tutti i programmi aperti prima della shell, altriementi la shell resta sospesa perché ci sono ancora delle connessioni aperte.

Alternativa: editare e compilare sulla propria macchina

Tipologia: installare una copia del compilatore (gcc) ed un editor di testo sulla propria macchina ed essere indipendenti dalle macchine del CdC

Per macchine Linux, questa opzione è molto semplice: si tratta di usare il gestore di pacchetti (che ha un nome diverso a seconda della distribuzione) per richiedere l'installazione del GCC, dopodiché potrete usare un qualsiasi editor di testo già presente sulla macchina per scrivere i vostri programmi in C
Se volete un editor di testo un po' più sofisticato, potete sempre installare Emacs (usando sempre lo stesso gestore di pacchetti).

Per le macchine MacOSX, la possibilità più semplice è di scaricare XCode 4 dal Mac App Store: XCode è un ambiente di sviluppo integrato che contiene anche un compilatore C/C++.
Homepage di XCode
Altrimenti esiste anche la possibilità di scaricare il gcc come sorgente e di compilarlo da zero (si chiama bootstrapping perchè dovete compilare il compilatore!)
Per farlo dovete andare alla pagina Apple Open Source e scaricare i pacchetti del gcc e del make dalla pagina giusta per la versione del vostro S.O.

Sulle macchine Windows (XP, Vista e 7) invece l'opzione più facile è usare Cygwin, che fornisce un ambiente Unix-like a sola linea di comando.
Per farlo, usate la versione che potete scaricare da qui, Cygwin B20, una versione relativamente vecchia ma molto facile da installare.
Una volta installato, dovrete fare alcune modifiche manuali:

Fatto questo, potrete finalmente lavorare su una shell dove avrete a disposizione la maggior parte dei comandi Linux insieme con gli strumenti di compilazione (gcc, make, ecc...)
Potrebbe essere utile anche installare un editor di testo più avanzato di quelli che sono a disposizione di default : una buona scelta è Notepad++

 

Client ssh

Sulle macchine Linux e MaxOSX, un client ssh esiste già di default.

La sintassi è molto semplice:

ssh nomeutente@indirizzo
dove indirizzo è il nome della macchina seguito dal nome della rete (ad es. olivia.cli.di.unipi.it) e nomeutente è il vostro nome utente di login.
Quando il client avrà inizializzato la connessione, vi chiederà la password ed eseguiti i controlli, vi mostrerà il prompt della macchina
Se vi serve il tunnelling di X (per la Soluzione 3), aggiungete l'opzione -X
ssh -X nomeutente@indirizzo

SSH per Windows: PuTTY

Se avete Windows dovrete scaricare PuTTY da
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
Abbiate cura di scaricare e installare il pacchetto Windows Installer più aggiornato, per maggior facilità
(attualmente la versione più recente è la 0.62 quindi il pacchetto che vi serve è putty-0.62-installer.exe).

Dopo averlo installato, avrete a disposizione un client ssh con una comoda interfaccia grafica.

Inserite l'indirizzo della macchina

e se volete il nome utente

ed eventualmente selezionate il tunnelling di X (serve per la Soluzione 3)

quindi premete "Open" ed inserite la password quando richiesta.

Per evitare di dover inserire tutti i dati tutte le volte, potete salvare la configurazione

dopodiché basta fare doppio click su una configurazione salvata per aprirla automaticamente.

Client SCP

SCP è cp (copia file) eseguito da/verso una macchina remota (con SSH). Come per il client ssh, Linux e MacOSX hanno un client scp di default, con Windows bisogna installarne uno.
La sintassi è

scp filelocale username@macchinaremota:.
per copiare il file filelocale nella vostra home sulla macchina macchinaremota.
Notate due punti e il punto finali: i due punti indicano al client che da lí comincia il path sulla macchina remota, il punto gli dice di salvare il file nella home con lo stesso nome che aveva in locale.
Infatti un sintassi alternativa è

scp filelocale username@macchinaremota:pathremoto/nomefileremoto

Ovviamente, potete invertire la parte locale e la parte remota per copiare dei file remoti sulla vostra macchina locale (la parte locale, in quel caso, può essere un singolo punto, con significato simile al caso precedente)

scp username@macchinaremota:pathremoto/nomefileremoto .

SCP per Windows: WinSCP

Scaricate WinSCP da http://winscp.net/eng/download.php e installatelo (scegliete l'interfaccia Commander che è la più comoda).

Anche se leggermente diversa, l'interfaccia ricorda quella di PuTTY, su cui è basata.

Salvare la sessione

e farci doppio click per aprirla; inserire la password quando richiesto.
A questo punto avrete da un lato la vostra home in locale e dall'altro la vostra home remota e potete copiare e spostare file avanti e indietro (usate F5 per copia e F6 per sposta).

 

Editor

Emacs è un editor molto potente e versatile, ma non è certo il più semplice da usare.
La maggior parte dei dettagli del funzionamento di Emacs saranno visti durante le esercitazioni.
Per usare emacs in modalità console (senza interfaccia grafica) usare

emacs -nw

Altri editor in modalità console sono Vi, Nano e Ne.
Su macchine Linux sono presenti quasi tutti di default (o comunque sono facilmente recuperabili).
Per MaxOSX questi sono certamente installabili (se non già presenti).

Sia per Linux che per MaxOSX esistono svariati editor grafici, dai più generici ai più potenti. Fra questi, Emacs.

Su Windows non ci sono editor per console degni di nota.
Esistono comunque editor grafici interessanti (oltre che, ovviamente, Emacs). Uno dei migliori è Notepad++.

Vi

Vi (letto all'inglese, "vu ai") è un editor molto usato perché praticamente onnipresente in tutte le installazioni unix.
Ha alcune peculiarità che lo rendono non semplicissimo per un utente poco esperto.

In particolare, ricordiamo:
:q per uscire
:q! per uscire abbandonando le modifiche
:wq per uscire salvando
a (oppure i) per entrare in modalità modifica testo
ESC per uscire dalla modalità modifica testo

 

Nano

Nano è un editor di testo per console relativamente semplice, soprattutto grazie al menù comandi sempre visibile in basso.
La sua interfaccia comunque non è tra le più eleganti e veloci da usare, richiedendo molti passaggi per fare poche semplici operazioni.

In particolare, ricordiamo:
^X (control X) per uscire
^R per aprire un file
^O per salvare
F1 per il menù di aiuto


NE - Nice Editor

Attenzione: argomento avanzato, solo per chi ha una certa manualità

Homepage: http://ne.dsi.unimi.it/
Scarica i sorgenti (l'attuale versione è la 2.3, http://ne.dsi.unimi.it/ne-2.3.tar.gz ) con

wget http://ne.dsi.unimi.it/ne-2.3.tar.gz

Esegui i seguenti comandi per scompattare e compilare il programma:

tar xvfz ne-2.3.tar.gz
cd ne-2.3
make PREFIX=~/ne
Se la compilazione è andata a buon fine (ossia se, a parte una moltitudine di warning, non ci sono errori alla fine), eseguire i seguenti per installare il programma nella home e ripulire i temporanei:
make PREFIX=~/ne install
rm -rf ne-2.3
rm ne-2.3.tar.gz
Quindi aggiungere in ~/.bashrc la seguente riga per poter eseguire ne in ogni directory:
export PATH=$PATH:~/ne/bin
Al prossimo avvio della shell, ne sarà disponibile come comando.

Alcuni degli intuitivi comandi di ne:
^Q per uscire
^S per salvare
ESC ESC per accedere ai menù
F5 Undo
F6 Redo

 

 

 

Copyright (C) 2011 Aureliano Rama.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the license can be downloaded at http://www.gnu.org/licenses/fdl.html