Wie benutze ich den CIP-Pool der LMU beim Programmierpraktikum


  1. Einführung
  2. SSH/SCP-Zugang
  3. CVS/SVN und der Zugang dazu
  4. X-Forward (Programme vom CIP-Pool verwenden, bsp. Eclipse)
  5. Kommunikation (write)
  6. Sonstiges (Öffnungszeiten, Ansprechpartner)


1. Einführung

Nachdem es letztes Jahr kleinere und größere Schwierigkeiten beim Programmierpraktikum gab, hoffe ich, daß mit Hilfe dieser Anleitung einige Probleme garnicht erst auftreten.Wer sich fragt, wieso man den CIP-Pool überhaupt verwenden sollte, sollte bedenken, daß es im Programmierpraktikum auch darum geht, Teamarbeit zu verrichten. Dies ist besonders leicht zu schaffen, wenn man im gleichen Raum sitzen kann. Wer seine/n Rechner nicht irgendwohin schaffen will, kann sich einfach im CIP-Pool treffen. Auch trifft man dort öfter mal andere Gruppen und kann sich mit diesen austauschen und gemeinsam Probleme lösen.

Trotz alledem will man natürlich nicht immer in der Uni sitzen, besonders am Wochenende oder nach einem anstrengenden Tag nicht mehr zu Hause weg. Weil man trotzdem seine Arbeit verrichten muss, muss man natürlich auf die Daten im CIP-Pool zugreifen können, da die Abgabe der Teamaufgaben über ein Repository im CIP-Pool funktioniert. Und auch sonst, außerhalb dem Praktikums will man vielleicht mal etwas im CIP-Pool erledigen. Diese Seite soll dazu eine Hilfestellung bieten! Für Anregungen und Kritiken bin ich offen und freue mich auf Kommentare.

Ich kann leider keine vollständige Einleitung in die Unix-Shell bieten. Es empfiehlt sich, besonders beim SSH-Zugang, zu wissen, wie man Verzeichnisse wechselt und sich deren Inhalt anzeigt. Wie Programme im Hintergrund ausführt, was Kommandozeilenparameter sind, erkläre ich ganz unten bei dem Punkt Sonstiges. Wer sich mit dem Thema beschäftigen will findet hier eine größere Einführung in die Bourne Again Shell (bash).


2. SSH/SCP-Zugang

Um sich via SSH oder SCP in den CIP-Pool einwählen zu können, muß man (1) eine CIP-Pool Kennung haben, (2) ein Programm, das SSH oder SCP spricht und (3) den Remote-Zugang aktiviert haben.

  1. Die Kennung beantragt man normalerweise bei der RBG kurz nach dem Einschreiben in den Studiengang, aber man muß sie beantragen, das geht nicht von allein.
  2. Als zweites braucht man ein Programm, das SSH oder SCP spricht, einen sogenannten SSH Client. Unter UNIX/Linux wird sowas üblicherweise mitgeliefert (in einem xterm scp oder ssh eingeben). Unter (jedem) Windows muß man sich extra einen runterladen. Für SSH empfehle ich PuTTY. Er besteht aus nur einer Datei die man einfach nur ausführen muss und schon startet der Client. Für SCP empfehle ich WinSCP. Ein grafischer Client mit einem in zwei geteilten Fenster, ähnlich zu Total Commander oder viele FTP-Clients.
  3. Schließlich muss man noch, aus denen in den CIP-Pool-FAQ angegebenen Gründen, den Remote-Zugang zum CIP-Pool über den CIP Account Konfigurator aktivieren.

Sind alle Vorraussetzungen erfüllt, kann man mit dem CIP-Pool Kontakt aufnehmen. Hier die Screenshots von meiner Konfiguration von WinSCP und Putty:

WinSCP (und damit SCP generell) benutzt man nur zum Datentransfer. Ist so eine Art FTP über einen SSH-Tunnel. Ich schiebe damit zum Beispiel meine Mozilla-Konfiguration in den CIP-Pool, damit ich da die gleiche habe wie zu Hause (UPDATE: Dieser Artikel ist relativ alt, heute würde ich natürlich das Sync Tool für den Mozilla und IMAP für Thunderbird Mail empfehlen). Aber man kann damit natürlich auch seine Homepage im CIP-Pool bereitstellen, oder sich den Eclipse-Workspace auf die lokale Maschine kopieren (Verzeichnis workspace im Home-Verzeichnis).

SSH liefert Kommandozeilenzugriff auf den entfernten Rechner. Nach Eingabe von der CIP-Pool-Kennung und dem dazugehörigen Passwort hat man praktisch alle Möglichkeiten, die einem auch ein term im KDE des CIP-Pools bietet. Achtung: Die RBG bittet darum, auf den Remote-Rechnern keine resourcenintensive Jobs auszuführen. Das heißt: Wenn man eine Verbindung zum CIP-Pool aufbaut, landet man erstmal auf einem Remote-Rechner:

 

login as: pinto
 Password:
 Last login: Fri Aug 6 19:54:21 2004 from r081025.stusta.swh.mhn.de
 Auf diesem Rechner bitte keine resourcenintensiven Programme ausführen.
pinto@luxemburg:~ $_

 

Nun sollte man mit Hilfe der Auflistung der Rechnernamen der CIP-Pools einen heraussuchen, der kein Remote-Rechner ist. Dies macht man, indem man sich mit einem verbindet und hofft, dass nicht die oben angezeigte Meldung kommt. Zum Beispiel london:

 

pinto@luxemburg:~ $ ssh london
Warning: Permanently added the DSA host key for IP address '141.84.214.161' to the list of known hosts.
 Password:
 Have a lot of fun...
 Last login:
 minsk: 17:51:30 28.8.2004
 Last login on london:
pinto@london:~ $_

 

Doch was sind resourcenintensive Jobs? Mozilla, Eclipse oder sonstigen größere Applikationen zu starten sind sicherlich resourcenintensive Jobs! Was aber genau darunter fällt, ist Definitionssache der RBG. Was man genau im CIP-Pool alles machen darf, liest man am besten in den Richtlinien der RBG nach. Wie man das Eclipse vom CIP-Pool zu Hause aus nutzt (und andere X-Programme, also Programme, die unter KDE laufen) steht unten in Punkt 4. X-Forward (Programme vom CIP-Pool verwenden, bsp. Eclipse).


3. CVS/SVN und der Zugang dazu

CVS (= Concurrent Versioning System) und SVN (= Subversion System) sind zwei Systeme die helfen sollen, Programme im Team zu entwickeln. Sie sind im Endeffekt ein Verzeichnis auf einem Server („repository“). Dieses Verzeichnis enthält ganz normal Dateien. Nur enthält es weitere Dateien, die mehr oder weniger Log-Dateien sind. Um CVS und SVN zu benutzen braucht man einen entsprechenden Client. Diese Clients können die Log-Dateien lesen und bearbeiten. Sinn des ganzen ist folgendes:
Jeder im Team kann eine Datei erstellen, wenn sie compiliert (erstmal egal, ob sie so funktioniert wie sie soll) kann man sie in eben dieses Verzeichnis hochladen („commit“). Der Client vermerkt in den Log-Dateien, wer die Datei hochgeladen hat und einen Kommtar zu dieser Version der Datei. So kann jemand alle Dateien die benötigt werden herunterladen, egal ob sie von ihm/ihr geschrieben wurden oder nicht.
Sind alle Dateien in einem Zustand, den man brauchen kann (also, sie compilieren und sie tun das, was man von ihnen will) kann man diesen Zustand markieren („tag“). In diesem Fall werden die unterschiedlichen Versionen einer Datei zu genau diesem Zeitpunkt gespeichert. So ein „Tag“ kann man dann bennen wie man will.
Will man an derselben Datei weiterarbeiten oder diese nur anschauen, kann man sich diese runterladen („checkout“). Jedes mal, wenn man eine Datei wieder in das System hochlädt, bekommt diese eine neue Version. Funktioniert diese einmal nicht oder ist sie zu unübersichtlich geworden um noch irgendwas zu verstehen, kann man mit dem checkout-Befehl auch ältere Versionen einer Datei runterladen.
Ein Feature können diese Systeme noch. Macht man ein größeres Projekt und bekommt einerseits immer mehr Bugs und andererseits immer neue Ideen für neue Features kann man das Projekt aufteilen. Das Hauptprojekt, wo sowohl Bugs entfernt werden aber auch neue Features eingefügt werden nennt sich Trunk (engl. Stamm). Erreicht man einen Punkt, in dem man nur noch Bugs entfernt und keine neue Features einführen will (weil zum Beispiel der Abgabetermin näherrückt), spaltet man einen Branch (engl. Ast) ab. Dieser ist eine reine Kopie des Trunks und man kann unabhängig vom Trunk an diesem arbeiten.

Im CIP-Pool muß man mit dem CIP Account Konfigurator das Passwort für den SVN-Server setzen. Um zu schauen, ob die Verbindung generell klappt oder der Server zum Beispiel gerade down ist kann man die Adresse für das Repository einfach in den Webbrowser eingeben. Da kommt dann eine Abfrage nach Username (CIP) und dem Passwort (SVN). Kommt diese nicht oder wird danach nichts angezeigt stimmt mit aller Wahrscheinlichkeit was mit dem Server nicht.

 

SVN

 

Letztes Jahr haben wir das CVS genutzt, die Entwicklerversion des Forum http://www.die-informatiker.net/ befindet sich aber in einem SVN und ich gehe mal davon aus, daß SVN in Zukunft CVS ersetzen soll. Die Version des Eclipse-Plugins Subclipse (0.9.16), die ich benutze funktioniert aber leider nicht. So muß man sich mit dem Kommandozeilentool zufrieden geben. Als erstes lädt man sich das gesamte repository runter:

 

svn checkout <URL> <Workspace-Pfad>

 

Dann ändert man mit dem Editor seiner Wahl (ich empfehle Eclipse für Java-Projekte) die Dateien, die man bearbeiten will. Ist das gemacht, muss man die Dateien wieder hochladen.

 

svn commit <Pfad-zum-Projekt> -m <Kommentar>

 

Es ist wichtig, den Kommentar so verständlich wie möglich für alle anderen Teammitglieder zu schreiben!

Wer hinter einem Proxy sitzt muß die Datei servers im Verzeichnis %APPDATA%\Subversion bearbeiten. Mehr Information dazu gibt es in der Subversion FAQ (Proxyproblem Nr. 20).

 

CVS

 

In Eclipse ist das CVS-Plugin zwar mitgeliefert, aber man muß erstmal den entsprechenden View „CVS Repositories“ anzeigen lassen (sofern er noch nicht im unteren Bereich angezeigt wird). Die erreicht man indem man unter Window -> Show View -> Other… den CVS-Bereich erweitert und nach einem Klick auf CVS Repositories auf OK. Nun erscheint unten ein neuer Reiter namens Repositories (siehe Bild). Nach einem Rechtsklick auf den weißen Bereich darunter kann man ein neues Repository hinzufügen (New -> Repository Location…). Der Host ist remote.cip.ifi.lmu.de, den Pfad erfahrt ihr von eurem Gruppenleiter. User ist der CIP-Pool-User und das Passwort das CIP-Pool-Passwort. Bei Connection Type ist extssh auszuwählen. Um es nochmal zu sagen: Um das nutzen zu können, muss man den Remote-Zugang zum CIP-Pool über den CIP Account Konfigurator aktivieren.

Ist das Repository eingebunden, kann man mit einem Rechtklick auf ein Verzeichnis genau dieses runterladen (checkout), markieren (tag) usw. Um eine Datei hochzuladen, muß man sie im Navigator mit rechts anklicken und dann auf commit gehen. Es geht ein Fenster auf, wo man den Kommentar reinschreiben kann. Easy!

 

4. X-Forward (Programme vom CIP-Pool verwenden, bsp. Eclipse)

Jedes Programm, das unter Linux auf einer grafischen Benutzeroberfläche läuft, braucht einen sogenannten X-Server. Dieser X-Server hat noch dazu einen WindowManager wie zum Beispel den KWin von KDE. KDE, was im CIP-Pool verwendet wird, liefert auch einige Programme, gerade für KDE,mit (wie zum Beispiel Konqueror oder Karchiver). Alle diese Programme sind durch die Vorgaben des Betriebssystems so programmiert, daß ihr Programmablauf und ihre Oberfläche (sozusagen ihr Model/Controller und View) voneinander getrennt laufen. Die Rechner im CIP-Pool der Theresienstrasse sind zum Beispiel reine X-Terminals. Sie haben keine Festplatte und booten über das Netz ein sehr kleines Linux was „nur“ den X-Server lädt. Die eigentliche Programme, die man dann ausführt, laufen auf einem anderen Rechner.

Genau dieses Prinzip kann man sich zu Nutzen machen, wenn man zu Hause kein Eclipse (oder sowas) installieren will! Dazu braucht man zu Hause einen X-Server für Windows. Ich empfehle hier cygwin, weil es Open Source und frei ist. Es gibt auch andere (so wie X-Win32 oder andere X-Server von Tucows) aber die sind nicht gratis…

Nun ja, also man lädt die setup.exe von cygwin runter und führt sie aus. Nach Eingabe eines eventuellen Proxies und der Auswahl eines Mirrors reicht es zum Grundsystem (was automatisch ausgewählt ist) noch das xorg-x11-base Paket auszuwählen. Dieses wählt automatisch die noch weiter benötigten Pakete aus. Wer will, kann noch einen SSH-Client (wie das openssh Paket) installieren. Braucht man allerdings nicht, wenn man PuTTY oder einen anderen SSH-Client für Windows hat!

Dann klickt man auf weiter und wartet, bis alles installiert ist. Als bei mir einmal die Installation nicht funktioniert hat, hat eine Wiederinstallation ausgereicht und es hat funktioniert. Nun startet man zuerst den X-Server indem man das Programm „Cygwin“ auf dem Desktop (oder „Cygwin bash shell“ in Start->Programme->Cygwin) doppelklickt. In dieser shell führt man

 

X&

 

aus und es sollte ein leeres Fenster erschreinen. Ist dem nicht so, stimmt was nicht mit der Cygwin Installation.

Nun muß man PuTTY noch so einstellen, daß es einen X-Tunnel öffnet. Dies macht man, in dem man PuTTY öffnet, die gespeicherte CIP-Pool-Session lädt und dann unter Connection -> SSH -> Tunnels ein Häckchen bei „Enable X11 forwarding“ macht. Bevor man jetzt auf open klickt, sollte man jetzt nochmal zu Sessions gehen und diese Session unter dem alten Namen speichern…

Um nochmal darauf hinzuweisen: Die RBG verbietet Resourcenintensive Jobs auf den Remote-Maschinen! Ich gehe davon aus, dass sozusagen jedes X-Programm ein resourcenintensives ist. Aus diesem Grund sollte man, wenn man im CIP-Pool ist, sich zu einem weiteren Rechner weiterverbinden. Die vorhandenen Rechner sieht man in der Auflistung der RBG. Wenn man sich auf sie weiterverbindet, darf man nicht vergessen, das X-forwarding zu aktivieren:

 

pinto@minsk:~ $ ssh -X prag
 Password:
 Have a lot of fun...
 Last login:
 london: 16:19:48 2.9.2004
 Last login on prag:
pinto@prag:~ $_

 

Es ist wichtig, dass das X bei -X groß ist, den ein kleines X deaktiviert das x-forwarding, was ja genau dem Gegenteil entspricht, was wir erreichen wollen.

Möchte man ein Programm im Hintergrund ausführen, also nach der Eingabe des Namens nicht nichtstuend vor dem Prompt sitzen, sollte man einfach ein & nach dem Namen eingeben. Das funktioniert auch mit den Programmen, die man selbst geschrieben hat. Das würde auch mit dem KDE funktionieren, allerdings verursacht das VIEL Traffic und ist SEHR langsam. Also bitte nicht ausprobieren…

 

5. Kommunikation (write)

Möchte man mit seinen Teammitgliedern, die im CIP-Pool sitzen in Kontakt treten, gibt es mehrere Möglichkeiten. Zum einen kann man sich ja via e-Mail verständigen, was aber IMHO nicht so gut funktioniert, da man dazu ein meist größeres Programm geladen haben muß, außerdem ist dieses nicht so schnell wie ein Chat. Dann kann man noch ICQ, MSN, AIM oder sonstige Instant Messengers benutzen (zum Beispiel mit dem bei KDE mitgelieferten und im CIP-Pool installierten Kopete). Aber der CIP-Pool hat ein Tool installiert, mit dem es auch funktioniert. Allerdings ist es nicht so komfortabel wie die anderen IMs.

Es heißt write. Erstens muß man wissen, auf welchem Rechner die Person sitzt, die man ansprechen will. Früher konnte man das mit finger herausfinden, dieser Dienst wurde aber mittlerweile wegen der hohen Fehleranfälligkeit abgestellt. Nach Alternativen wird gesucht. Aber den Rechnernamen kann man zum Beispiel auch via e-Mail weitergeben. Zu diesem Rechner muß man sich dann verbinden (SSH) und schreibt dann:

 

write <username>

 

Hat man das gemacht, geht bei demjenigen ein Fenster auf. Alles was man von nun an eingibt, erscheint bei dem anderen in dem Fenster. Wenn dieser antworten will, muß dieser ein Terminal öffnen (klick auf xterm in der Leiste unten in KDE) und kann dann auch mit dem obigen Befehl antworten. Dies erscheint allerdings nicht in einem Fenster (außer man hat einen X-Tunnel) sondern einfach in der Konsole, was ziemlich verwirrend sein kann…

 

6. Sonstiges (Öffnungszeiten, Ansprechpartner)

Also generell sind bei allen Fragen die mit Computern und Programm im CIP-Pool sind die RBG, die auch via e-Mail (rbg@ifi.lmu.de) erreichbar ist. Falls ihr speziell zu den hier angesprochnen Themen Fragen habt, solltet ihr am besten in das Forum für die Informatik-Studenten der LMU (http://www.die-informatiker.net/, Forum: RBG und CIP-Pool).

 

Schreibe einen Kommentar