Archive for the ‘Linux’ Category

h1

RSPerl in Ubuntu installieren

16. März 2010

Zusammenfassung

RSPerl erlaubt die Interaktion zwischen Perl und R. Mich hätte vor allem interessiert, R-Funktionen von Perl aus zu verwenden. Das geht irgendwie, dann aber doch auch nicht so super – kurz: Ich verwende es zur zur Zeit nicht, sondern erzeuge mit print FH eine Datei (ein R-Skript), dass ich dann direkt in R ausführe. Trotzdem im folgenden die Vorgangsweise …

Die Schritte

Die in Ubuntu Desktop 9.10 vorhandene R-Installation ist als shared-library kompiliert. Das ist schon einmal gut. Dann braucht man aber noch eine lib installieren:

$ sudo apt-get install libperl-dev

Ab dann lässt sich RSPerl wie dolumentiert installieren:

$ R CMD INSTALL  --configure-args='--with-in-perl' Desktop/RSPerl

(Voraussgesetzt man hat das tar zuvor auf dem Desktop ausgepackt).

http://www.omegahat.org/RSPerl/RFromPerl.html

Das heisst aber noch nicht, dass man R von Perl aus damit erreicht …

Nacharbeiten

$ ./hello_R.pl

Can’t load ‚/home/ubuntu/R/i486-pc-linux-gnu-library/2.9/RSPerl/perl/i486-linux-gnu-thread-multi/auto/R/R.so‘ for module R: libPerlConverter.so: cannot open shared object file: No such file or directory at /usr/lib/perl/5.10/DynaLoader.pm line 196.

at ./hello_R.pl line 7

Compilation failed in require at ./hello_R.pl line 7.

BEGIN failed–compilation aborted at ./hello_R.pl line 7.

Das lässt sich dann mit Umgebungsvariablen unterbinden:

$ export PERL_MODULES="`perl -s modules.pl -modules | sed s/modperl//`"

http://tolstoy.newcastle.edu.au/R/help/03b/7997.html

Letztendlich sollten diese mit export gesetzt sein:

PERL5LIB="/home/ubuntu/R/i486-pc-linux-gnu-library/2.9/RSPerl/perl"
PERL_MODULES="Gtk2 Locale::gettext Gnome2 Cairo LibAppArmor HTML::Parser Sub::Name Glib Compress::Bzip2 Pango UUID Net::DBus Term::ReadKey XML::Parser::Expat Text::CharWidth Text::Iconv IO PerlIO::scalar PerlIO::encoding PerlIO::via SDBM_File Data::Dumper Opcode Fcntl DB_File I18N::Langinfo POSIX IPC::SysV Sys::Syslog Sys::Hostname re Cwd GDBM_File threads ODBM_File attrs Compress::Raw::Zlib Time::HiRes Time::Piece Filter::Util::Call Hash::Util Math::BigInt::FastCalc MIME::Base64 NDBM_File Encode Digest::SHA Digest::MD5 Devel::PPPort Devel::DProf Devel::Peek List::Util File::Glob Storable Socket Unicode::Normalize Text::Soundex "
LD_LIBRARY_PATH="/home/ubuntu/R/i486-pc-linux-gnu-library/2.9/RSPerl/libs:/usr/lib/R/lib"

Doch auch mit diesen Tipps mag R sich nicht von Perl aus aufrufen lassen. Ich denke man muss da andere Wege beschreiten. Zum Beispiel R-Scripts über das system-Komando aufrufen …

$ R -f hello.r --slave; open Rplots.pdf

Unschön, aber es geht.

Wie es dann doch noch lief …

Ok, wenn man den Code der Module patched (da sind grauslige pod-Fehler drin) und auf die Verwendung des eigentlich empfohlenen use RReferences verzichtet, kann man R von Perl aus aufrufen. Sehr vertrauenserweckend ist das aber nicht – schade.

Hier noch das hello_R.pl:

#!/usr/bin/perl -w
use strict;
use warnings;
use lib '/home/ubuntu/R/i486-pc-linux-gnu-library/2.9/RSPerl/perl/i486-linux-gnu-thread-multi';
use R;
#use RReferences;
&R::initR('--silent');
my $x = R::sum((1,2,3));
print $x . "\n";
Advertisements
h1

USB-Stick auf Asus EEEPC mounten

16. Juni 2009

Um auf der Commandline einen USB-Stick auf einem Asus EeePC zu mounten:
$ sudo -s
# lsusb -l
# dmesg | grep -i „SCSI“
–> das Gerät mit „Attached scsi removable … ist die richtige „Platte“, in meinem Fall sdb
# mount -f vfat /dev/sdb /media

Fertich!

h1

Net::SSH::Perl installieren

21. April 2008

Im Gegensatz zu Net::SSH bietet das Modul Net::SSH::Perl eine voll in Perl integrierten SSH-Client, der in den Perl-Scripts verwenet werden kann. D.h. dieser ist von der installierten SSH-Version unabhängig, forked nicht bei jedem Aufruf was für Performance und Sicherheit sorgt.

Das große Problem an diesem Modul ist die Installation. Es gibt zahlreiche Abhängigkeiten und die Installation via CPAN scheiterte sowohl auf Mac OS X (10.5.2) als auch im Ubuntu Server 6.01 (LTS). Als Troublemaker hab ich die Module Math::Pari, Math::BigInt::GMP und Crypt::DSA geortet. Diese habe ich nun manuell installiert. Dazu die folgenden Schritte zunächst für Ubuntu und dann für OS X:

Installation von Net::SSH::Perl auf Ubuntu 6.01.1 Server

Falls man das nicht schon hinter sich hat müssen perl und cpan installiert werden:

# apt-get install perl

Dann geht’s los …

Math::Pari

$sudo -s
# apt-get update
# apt-get upgrade
# apt-get install gcc
#apt-get install g++

Dann hole man sich das Tar von der Pari-Homepage und packe es im CPAN-Build-Verzeichnis aus:

# cd ~/.cpan/build
# wget http://pari.math.u-bordeaux.fr/pub/pari/unix/pari-2.3.3.tar.gz
# tar -xzf pari-2.3.3.tar.gz

Nun kann man den Anweisungen aus dem INSTALL folgen:

b) ./Configure

c) make all, make bench

d) make install

e) cp misc/gprc.dft /etc/gprc

Tipp: Wenn man diese Fehlermeldung bekommt „C compiler does not work. PARI/GP requires an ANSI C compiler“ dann hat man vergessen den c++-Kompiler zu installieren. Siehe oben!

Math::BigInt::GMP

Damit dieses Modul installiert werden kann, muss man erst einmal eine GMP-Library im OS installieren:

# apt-get install libgmp3-dev

cpan> install Math::BigInt::GMP

Crypt::DSA

Crypt::DSA muss manuell (ohne CPAN) installiert werden, da make test sich aufhängt.

# wget http://search.cpan.org/CPAN/authors/id/B/BT/BTROTT/Crypt-DSA-0.14.tar.gz
# tar xzf Crypt-DSA-0.14.tar.gz
# cd Crypt-DSA-0.14
# perl Makefile.PL
# make
# make install

Nun kann man den Rest mit CPAN installieren:

cpan> install Net::SSH::Perl

Bei der Auswahl der Algorithmen würde ich noch DES3 hinzunehmen – NetApp z.B. unterstützt das out-of-the-box:

    [1] IDEA
[2] DES
[3] DES3
[4] Blowfish
[5] RC
Enter your choices, separated by spaces: [1] 1 3

Möchte man Tripple-DES ergänzen, nachdem man das Modul Net::SSH::Perl schon einmal nur mit IDEA installiert hat, so ruft man einfach in der cpan-Shell make Net::SSH::Perl auf.

Installation von Net::SSH::Perl auf Mac OS X

Zunächst ein Hinweis: Die Developer-Tools waren bei mir installiert (siehe http://developer.apple.com/tools/xcode/index.html ) – das muss so sein, schon alleine damit die später benötigte port-Software funktioniert.

Ansonsten versuchte ich sinngemäß zu verfahren wie beim Ubuntu-Server. Die Installation von Crypt::DSA mittels CPAN war kein Problem (OS X 10.5.2). Somit bleiben Math::Pari und GMP als „Sonderfälle“. Und da war nichts zu machen. Weder mittel CPAN noch durch den Weg „zu Fuß“ mittels Download, Auspacken und dann ./Configure und make. Somit änderte ich die Strategie komplett und installierte das ganze mittels darwin-ports. Falls noch nicht geschehen, ist die Darwinport-Software zunächst zu installieren. (Siehe http://darwinports.com/ bzw. http://guide.macports.org/)

Installation von Pari

ich habe zunächst einmal Pari installiert. Das Paket liegt hier (http://pari.darwinports.com/), muss aber nicht heruntergeladen werden. Das macht das Komando:

$ sudo port install pari

Installation von Convert::PEM und Net::SSH::Perl

http://p5-convert-pem.darwinports.com/

Da hat sich ein Problem ergeben: Nach einiger Zeit bleibt der Installationsprozess hängen, die CPUs laufen auf jeweils 100% und nichts geht mehr weiter. Auch viel Geduld ändert da nichts. Wenn man die Installation im Debugmodus startet, sieht man die Ursache des Problems:

$sudo port -d install p5-convert-pem

Wenn CPAN für diesen User noch nicht konfiguriert ist, frägt Darwinport nach dem Kontinent für Downloads. Und aus dieser Schleife findet er icht mehr heraus. Die Lösung ist also, cpan zuvor zu konfigurieren und sicher zustellen, dass diese Konfiguration dauerhaft gespeichert wurde. (Ich hab dazu sudo -s und dann als root cpan gestartet, Bundle::CPAN installiert, CPAN nochmal gestartet und die diversen Dialoge beantwortet wobei ich die Frage nach der Speicherung der Konfiguration entgeggen dem Default mit yes statt mit no beantwortet hatte.)

Nach diesem Heckmeck durfte ich dann endlich Convert::PEM und Net::SSH::Perl installieren; und zwar so:

$ sudo port install p5-net-ssh-perl

Nacharbeiten

Die Module werden so out of the Box nicht gefunden. Man kann deren Verzeichnisse (/opt/local/lib/perl5/5.8.8) aber mit lib im Perlscript hinzufügen.

Veränderungen an den Modulen

Wenn man diese mit port installierten Module allerdings editiert und die Veränderten in ein eigenes Verzeichnis kopieren, funktioniert das ganze nur noch teilweise. Net::SSH::Perl kommt damit zurecht. Math::Pari sträubt sich aber. Das führt dazu, dass in diesem Fall nur SSH1 Verbindungen mit Net::SSH::Perl möglich sind.

h1

NetApp-Simulator für Mac OS X

9. April 2008

Den NetApp-Simulator in Mac OS X verwenden

Im Zuge der Entwicklung von Nagios Plugins für NetApp Speichersysteme, benötigte ich den NetApp Simulator um diese Plugins entwicklen und testen zu können. Da ich hier zur Zeit keinen Linux-Rechner betreibe entschied ich mich auf meinem iMac einen virtuellen Linuxserver zu installieren und dann dort den Simulator laufen zu lassen.

Beim Download des Simulators war eine Anleitung von Paul Hargreaves beigepackt die eine Installation des Simulator auf Windows (als Gastbetriebssystem) und dann einem Ubuntu 6.01 Desktop in einer VM beschreibt. Diese Anleitung ist an sich nicht schlecht, passte aber nicht ganz auf meine Anforderungen:

1. Habe ich OS X und nicht Windows, daher verwende ich VMware Fusion

2. Möchte ich nicht einen Desktop (mit GUI, …) installieren, wenn ich eigentlich nur einen Server brauche. Obendrein hätte ich die die Server-VM fix und fertig vorbereitet gehabt.

Also entschied ich mich für folgendes: Max OS X 10.5, VMware Fusion 1.1.1 und Ubuntu Server 6.01 LTS, NetApp Release 7.2.4 (Simulator).

Überblick:

  1. Einrichten des Gastsystemes
  2. VMware einrichten
  3. Installation Linux Server in der VM
  4. Installation des Simulators

Gastsystem einrichten

Am Mac OS X ist nichts speziell zu tun ausser VMware Fusion zu installieren. Die aktuelle Version (s.o.) läuft gut auf Leopard – aber Vorsicht: Time Machine sichert erst ab der VMware-Fusion-Version 1.1.2 und wenn OS X 10.5.2  oder höher installiert wurde die VMs! Workaround: Gelegentlich ein ZIP von der VM machen – das wird dann gesichert. (Zippen natürlich nur, wenn die VM abgeschalten ist)

VMware einrichten

In meiner Umgebung gibt es einen DHCP-Server auf der Firewall, der für das interne LAN ca. 10 freie Adressen hat. Der springende Punkt war nun – im Gegensatz zur Dokumentation von Paul Hargreaves – die virtuellen Netzwerkkarten als bridged einzurichten. Nur so ist es möglich, dass von Seiten des Hostbetriebssystemes (also OS X) auf die IP und somit den Webserver des Simulator zugegriffen wird. Das ist z.B. nötig, um über die Weboberfläche des Simulators diesen zu konfigurieren.

Also richte ich zwei virtuelle Netzwerkkarten auf der VM ein (dazu muss das Gastbetriebssystem heruntergefahren werden) und beide werden über /etc/network/interfaces als DHCP-Clients konfiguriert. (Diese zweite Netzwerkkarte kann man sich auch sparen, dann bekommt man bei der Installation des Simulator eine Warnmeldung, dass der Simulator von diesem Server aus nicht zu nützen sei. Das mag sein, mir war das aber nicht wichtig, denn administrierbar war der Netapp-Simulator jedenfalls.)

Linux Server in der VM installieren

Ich hab eine schon früher vorbereitete Installation von Ubuntu Server verwendet. Auf Updates (apt-get upgrade) und VMware Tools habe ich verzichtet. Aber sehr wichtig: Es wird Perl benötigt, sonst kann man später keine Disken dem Simulator hinzufügen.

apt-get install perl

Dann kopiert man das Simulator-Tar auf die Linuxmaschine – mit z.B. scp. Wenn man dabei nicht noch den sshd am Linuxrechner installieren will (was mit apt-get install open-ssh-server möglich wäre) muss man am Mac den sshd aktivieren. Das läuft über die Systemeinstellungen -> Sharing -> „Entfernte Anmeldungen“ aktivieren.

Installation des Simulators

Siehe dem Simulator beigepackte Doku – hier nur ein paar Tipps:

./setup.sh

Im Folgenden sind die Default-Antworten ok. Lediglich die an sich unnötige Frage, ob man die Installation fortsetzen will muss natürlich mit yes statt no beantwortet werden.

Bei der Frage “ Which network interface schould the simulator use?“ habe ich dediziert eth2 angegeben.

Dann kann man wieder den defaults folgen.

Als Nächster Schritt ist der Simulator mit /sim/runsim.sh zu starten und einige Fragen zur Erstinstallation zu beantworten. Dabei schaltet der Simulator die NIC in den Promiscuity-Mode, was auch das Umschalten des Hostsystemadapters zur Folge hat, weswegen man von OS X um ein Adminpasswort gefragt wird. Das ist lt. NetApp Doku so gewollt und scheint mir auch einigermassen plausibel.

Etwas später kommt die Frage: „Please enter the IP adress for Network Interface ns0“. Hier wird dann eine vom DHCP-Server vorgschlagene Adresse als Default angegeben. Das ist ok, nur diese bitte aufschrieben, da wir sie gleich brauchen werden. Der Rest sollte klar sein, sobald man zur CIFS-Installation kommt kann man mit Ctrl+C abbrechen.

Zugriff auf die Weboberfläche vom Simulatir erfolgt dann über einen Webbrowser. Safari ist nicht mit dem Simulator kompatibel – ich habe Firefox verwendet:

http://<ip die der Sim über DHCP bekommen hat>

Dann Klick auf na_admin und root als User und das zuvor gesetzte Passwort eingeben. That’s it.

h1

Software RAID 1 für Ubuntu Server

9. September 2007

Spiegelung von Platten (RAID1) für Ubuntu Server

Einige Notizen, die beim Einrichten eines SW-RAIDs nützlich sein können. Alles auf Basis des Ubuntu Server 6.06 LTS. Die folgenden Schritte gehen davon aus, dass man die Installation eines Ubuntu-Servers auf eine einzelne Partition bereits beherrscht. Weiters gehe ich davon aus, dass man sich im Installationsprozess befindet, also die Ubuntu-Server CD eingelegt hat und das Setup begonnen hat. Relativ früh schon wird man in diesem Prozess mit der Frage der Partitionierung konfrontiert, und das ist der richtige Zeitpunkt, um die nun folgenden Notizen abzuarbeiten.

RAID1 erstmalig einrichten

  1. Man erstellt zunächst drei primäre Partitionen je Platte und definiere alle sechs zur Verwendung als RAID-Gerät.
  2. Nun spiegle man diese jeweils (sda1 mit sdb1, sda2 mit sdb2, etc) unter Zuhilfenahme des Menüpunktes Software RAID konfigurieren.
  3. Die somit erhaltenen Geräte RAID1 #0, RAID1 #1 und RAID1 #2 werden wie normale Partitionen dann als /, Swap und daten partitioniert und formatiert.

Bootloader

Sehr wichtig ist, dass der Bootloader Grub auf beiden Platten installiert wird! Auf der primären (sda) macht dies der Ubuntu-Installer. Auf der sekundären (sdb) muss das manuell geschehen.

# grub
grub> device (hd1) /dev/sdb
grub> root (hd1,0)
grub> setup (hd1)
grub> quit

Weiters ist die grub-config (menu.lst) durch einen Fallback-Eintrag zu ergänzen:

fallback=1

RAID1 Wartung

Einige Punkte, die im laufenden Betrieb nicht vergessen werden sollten.

Kernelupdates

Ein Kernelupdate schreibt die menu.lst um. Daher muss diese nach einem Kernelupdate sofort angepasst werden, da sonst das Fallbackentry nicht mehr stimmt.

Statusabfrage des RAID1

# mdadm --detail /dev/md0

Ausgabe State : active bedeutet ok
Ausgabe State : active,resyncing bedeutet Wiederherstellung läuft
Weiters gibt es in diesem Fall einen Rebuild Status : 2% complete

Wiederherstellen

Zunächst ist zu klären, ob die primäre oder sekundäre Platte ausgefallen ist:

cat /proc/mdstat

[_U] bedeutete die primäre ist weg.
Weiters zeigt mdadm –detail /dev/md0 in den letzten beiden Zeilen an, ob die sda oder die sdb ausgfallen ist.

Schritte zur Wiederherstellung

  1. Die neue Platte einbauen (bzw. die alte reaktivieren, wenn sie zB. nur nicht angesteckt war).
  2. Partitionen (wenn nötig) definieren (das entfällt, wenn die alte nur wieder anzustecken war)
  3. und zum RAID hinzufügen. Dazu die folgenden Komandos sinngemäss ausführen
     # mdadm /dev/md0 --add /dev/sdb1
     # mdadm /dev/md2 --add /dev/sdb3

Am Ende Grub neu konfigurieren und installieren – sehr wichtig, sonst bootet der Server beim nächsten Ausfall vielleicht nicht mehr.

Im konkreten Fall, waren die Partitionen natürlich noch vorhanden, da die Platte ja nur abgesteckt war. Realistisch wird wohl eine neue Platte verbaut werden, die dann zuvor partitioniert werden muss. Zur Erinnerung: Es werden zuerst die Partitionen auf der Festplatte eingerichtet und zur Verwendung als RAID-Geräte gekennzeichnet und dann werden diese zu einem RAID-Gerät zusammengefasst bzw. im konkreten Fall zu einem „degraded“ RAID hinzugefügt.

Links

http://wiki.kartbuilding.net/index.php/Base_Install_of_Debian_Sarge_with_RAID

Serverguide von Ubuntu

https://help.ubuntu.com/ubuntu/serverguide/C/index.html

Fallback-Einträge in Grub

http://www.gnu.org/software/grub/manual/grub.html#Booting-fallback-systems

h1

Installation von Ubuntu Linux auf FuSi RX100 S2

9. September 2007

Im folgenden fasse ich einige Notizen zusammen, die ich mir vor ca. einem Jahr bei der Installation des Prototypen für einen „Linux Small Business Servers“ gemacht habe.

Grundlegendes

Der Linux Small Business Server basiert auf der Serverversion von Ubuntu (dzt. 6.06 LTS). Auf dem Server wird kein GUI installiert, also kein X, kein Windowmanager und schon gar kein Desktop. Dies hat einerseits Performancegründe aber vor allem Stabilitäts- und Sicherheitsgründe. Vgl. z.B. Linux Magazin 01/06, S 70, „Wo immer möglich empfiehlt es sich folglich, auf das X11-System für administrative und sicherheitsrelevante Aufgaben zu verzichten.“
Doku für Grundlegendes: Serverguide von Ubuntu https://help.ubuntu.com/ubuntu/serverguide/C/index.html

Proxy setzen

Wenn man innerhalb einer größeren Organisation arbeitet, ist damit zu rechnen, dass man nicht direkt auf das Internet zugreifen darf sondern über einen Proxy raus muss. Das ist bei der Installation von Debian-Derivaten insofern von Bedeutung, als während der Installation Pakete über das Netz aktualisiert werden. Ist der Proxy nicht korrekt eingetragen, so steht die Installation für ca. 10 Minuten. Administratoren mit schwachen Nerven, glauben dann, das System sein abgestürzt.

Der Proxy für den Download kann seit Ubuntu 6.06 während des Setups eingetragen werden. Hierbei wird jedoch nicht die Umgebungsvariable HTTP_PROXY gesetzt, sondern ein Eintrag in der /etc/apt/apt.conf vorgenommen. Um den Proxyserver bei zukünftigen Verbindungen wieder auszulassen, ist die Zeile hinten abzuschneiden. Sie lisst sich dann noch so:

Acquire::http;

Partitionierung

Allgemeine Empfehlung

Partitionierungstabelle

prim.   /       8GB
 prim    /swap   4GB
 prim.   /daten  restl. Plattenplatz

Partitionierung FuSi RX100 S2

Die in diesen Geräten gelieferten FakeRAID-Controller (aka „Software RAID“) sind zu nix zu gebrauchen. Daher besser ein Linux Software RAID aufsetzen.

BIOS-Einstellungen einer RX100 S2 für diese Konfiguration

  • SATA, Ubuntu kommt mit den SATA-Platten gut zurecht
  • RAID-Controller (Onboard) deaktivieren
  • Large Disk Mode auf Other
  • HD-Boot Auto/…???

Manche Optionen im BIOS sind gut versteckt, man muss über das Bildschirmende weiter nach unten blättern, um sie zu sehen!

Konfig im OS für Linux SW-RAID (u.a. auf FuSi RX 100)

RAID 1 (Spiegelung): siehe Software RAID 1 für Ubuntu Server →https://lanti.wordpress.com/2007/09/09/software-raid-1-fur-ubuntu-server/

Best Practices nach dem ersten Reboot

Einige Empfehlungen, was nach dem ersten Reboot noch konfiguriert werden könnte.

1. Sources konfigurieren
Aktiviert bleiben: „updates“, „major bugfixes“ und „security“

# vi /etc/apt/sources.list
deb http://at.archive.ubuntu.com/ubuntu breezy main restricted
deb http://at.archive.ubuntu.com/ubuntu breezy-updates main restricted
deb http://security.ubuntu.com/ubuntu breezy-security main restricted

Hinweis: deaktiviert wird die CD-ROM als Source für Updates!
2. Systemupdate

# apt-get update && apt-get upgrade

3. SSH-Server installieren

# apt-get install openssh-server

4. Ctrl-Alt-Del deaktivieren
In einer gemischten Windows-/Linuxumgebung kommt man leicht durcheinander. Um zu verhindern, dass durch irrtümlichen Affengriff auf die Tastatur des Linux Servers dieser einen Neustart durchführt, ist die entsprechende Zeile in der /etc/inittab auszukommentieren:

...
# What to do when CTRL-ALT-DEL is pressed.
#ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
...

5. vi als Standardeditor:
Die folgende Zeile in die Datei /root/.bash_profile einfügen:

export VISUAL=vim

6. Zeitsynchronisation:
Im Verzeichnis /etc/cron.hourly ein Script zeitsync anlegen, mit folgendem Inhalt:

#!/bin/sh
/usr/sbin/ntpdate -s -u time.xxx.at ntp.ubuntulinux.org

Links

Download von http://releases.ubuntu.com/ubuntu-server/6.06/.