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

Perl-Skript in Windows EXE umwandeln

4. März 2010

Voraussetzung ist eine Windows-Maschine – kann auch virtuell sein. Bei ist das ein XP gewesen.

Download und Installation von Strawberry Perl http://strawberryperl.com/, Datei http://strawberry-perl.googlecode.com/files/strawberry-perl-5.10.1.1.msi

In Start->Programme die CPAN-Shell öffnen

cpan> install Bundle::libwin32
cpan> install PAR::Packer

Tipp: Hier gab es einen Bug und einer der Tests meldet dass PAR::Filter::PodStrip nicht gefunden werden kann. Der Workaround dazu ist hier:

http://www.nntp.perl.org/group/perl.par/2009/12/msg4278.html

und besteht im Wesentlichen darin, ein Verzeichnis anzulegen und ein pm dorthin zu kopieren.)

Auf der Commandline geht's dann weiter:
c:>pp -o hello.exe hello.pl

Das war’s – es seit denn, in hello.pl sind irgendwelche nicht-Standard Module in use … doch das wäre dann eine andere Geschichte.

h1

iMac schläft nicht mehr – VMware war schuld!

4. Januar 2010

Schon seit längerem hat mein iMac Einschlafprobleme. Auf ausdrückliche Aufforderung (Einschaltknopf drücken oder auf der Konsole shutdown -s now eingeben) legt er sich zwar brav zur Ruhe doch die Zeiten in den Systemeinstellungen, nach denen der Computer in den Ruhezustand gehen sollte ignorierte er hartnäckig.

Die genaue Durchsicht der Prozessliste in der Aktivitätsanzeige förderte einige suspekte Prozesse zu Tage. Ich beendete einen nach dem anderen und auf einmal legte sich mein iMac brav schlafen. Ich hatte natürlich die Zeit auf 1 Minute gestellt – im Endeffekt dauert es aber so ca. 5 Minuten ab der letzten Eingabe, dass sich der Computer in den Ruhezustand begibt.

Letztendlich war es bei mir eine ganze Reihe an vmnet-Prozessen, die verhinderten, dass der energiesparende Ruhezustand erreicht wurde. Diese stammten von meiner VMware-Fusion Installation (Version 2.x). Da ich ohnedies auf die neue Version 3.0 aktualisieren wollte entfernte ich VMware Fusion 2.0 (mit dem Deinstallationsprogramm das bei dem Programmpaket (DMG) dabei ist.) Und siehe da, der Computer ging brav schlafen und auch nach der Installation der Version 3.0 ist das noch so. Heureka!

h1

Backups.backupdb löschen

31. Dezember 2009

Böse Geschichte: Ein sich aufgehängtes Backup mittels Time-Machine auf eine externe WD MyBook Studio Edition (1 TB) hinterliess ein nicht mehr zu löschendes Verzeichnis Backups.backupdb. Nach intensiver Suche in Büchern und Foren habe ich dann eine Lösung gefunden.

Die Lösung in Kurzform (für Leopard):

  1. Deaktivieren der ACLs (fsaclctl)
  2. Löschen des Verzeichnisses im Finder (nicht auf der Komandozeile)

Lösungsansätze für Snow-Leopard siehe Ende des Artikels.

Meine Odysee und Erkenntnisse


Flags

Quellen
Kommandozeile
    $ ls -lO datei01
    -rw-r--r--  1 ingolantschner  ingolantschner  uchg 0 31 Dez 13:00 datei01
    $ chflags nouchg datei01
    $ ls -lO datei01
    -rw-r--r--  1 ingolantschner  ingolantschner  - 0 31 Dez 13:00 datei01
    $ sudo chflags schg datei01
    $ sudo chflags noschg datei01
    $ ls -lO datei01
    -rw-r--r--  1 ingolantschner  ingolantschner  schg 0 31 Dez 13:00 datei01
    $ ls -lO datei01
    -rw-r--r--  1 ingolantschner  ingolantschner  - 0 31 Dez 13:00 datei01

Ergebnis: An den Flags lag es also nicht.


ACLs komplett entfernen

Quelle: http://discussions.apple.com/thread.jspa?threadID=1469957

    $ sudo chmod -R -N Backups.backupdb/
    chmod: Failed to clear ACL on file spinning-globe.scm: Operation not permitted

Sandbox

Schaut ganz nett aus das Tool – setzt die Rechte aber auch nicht um. Das sehen wir z.B.

hier:

    $ ls -le Installer\ Log\ File
    -rwxrwxrwx@ 3 lisi  staff  12922 23 Sep  2008 Installer Log File
     0: group:everyone deny write,delete,append,writeattr,writeextattr,chown

Ausserdem gibt es von Seiten Sandbox keine Rückmeldung, dass das Setzen der Berechtigungen fehlschlug. Ein zuverlässiges Werkzeug schaut anders aus.

Interessant: Dieses pauschale evereyone deny schaut nicht gut aus … ich habe einen Verdacht.

Reproduktion meines Verdachtes
    $ chmod +a "everyone deny write,delete,append,writeattr,writeextattr,chown" datei02
    $ ls -le datei02
    -rw-r--r--+ 1 ingolantschner  ingolantschner  0 31 Dez 14:01 datei02
     0: group:everyone deny write,delete,append,writeattr,writeextattr,chown
    $ rm datei02
    override rw-r--r--  ingolantschner/ingolantschner for datei02? y
    rm: datei02: Permission denied
    $ sudo rm datei02
    Password:
    $ ls -le datei02
    ls: datei02: No such file or directory

Seltsam: Eine so gesperrte Datei kann also sehr wohl noch mit sudo gelöscht werden. (Also an sich ist das nicht so verwunderlich und durchaus eine vernünftige Verhaltensweise des Betriebssystemes – nur im konkreten Fall wähnte ich mich schon einer Erklärung nahe, die jetzt aber nicht zutrifft.) Mein Verdacht, dass das „everyone deny …“ meine Löschversuche ursächlich unterbindet war also unbegründet.


ACLs ausschalten

Quelle: http://www.macosxhints.com/article.php?story=20080128003716101

    $ fsaclctl -p /Volumes/Filme/ -v
    fsaclctl version 1.2
    $ fsaclctl -p /Volumes/Filme/
    Access control lists are supported on /Volumes/Filme/.

    $ sudo fsaclctl -p /Volumes/Filme/ -d
    $ ls -le Installer\ Log\ File
    -rwxrwxrwx@ 3 lisi  staff  12922 23 Sep  2008 Installer Log File

Die ACLs werden nicht mehr angezeigt.

Erster Teilerfolg: Mit sudo rm <datei> lässt sich die Datei nun endlich entfernen.

    $ sudo rm Installer\ Log\ File
    $ ls -le Installer\ Log\ File
    ls: Installer Log File: No such file or directory
Symlink (Alias?) lässt sich nicht entfernen
    $ ls -le
    total 8
    lrwxr-xr-x  1 root  staff   28 30 Dez 17:57 CodeResources -> _CodeSignature/CodeResources
    drwxr-xr-x  5 lisi  staff  170 31 Dez 14:09 Frameworks
    iMac-Ingo:Contents ingolantschner$ sudo rm CodeResources
    Password:
    rm: CodeResources: Operation not permitted

Lösung: Im Finder ist dieser Link dann aber problemlos zu löschen. Und auch der gesamte Verzeichnisbaum Backups.backupdb lässt sich einfach in den Papierkorb werfen. Von dort ist es dann in zwei Schritten auch zu entfernen. (Ich musste den Papierkorb zwei mal entleeren, bis alles weg war.)

Hinweis

In Snow Leopard wird man das tool fsaclctl vergeblich suchen – es wird nicht mehr angeboten. Gerüchteweise kann man aber die Version vom Leopard auch in Snow-Leopard verwenden (man muss es sich halt auf den Schneeleo-Rechner von einer alten Installation kopieren.) Ein weiteres Gerücht besagt, dass man im Single User Mode (cmd + S bei Ertönen des Startgongs drücken) mit rm -rf alles ohne Rückfragen und Einschränkungen löschen könne. Nun ja, das auszuprobieren überlasse ich nun jemand anders – ich bitte um Kommentare :-)

h1

Umleiten in Ordner mittels .htaccess

3. November 2009

Um alle Anfragen, die in das Root-Directory eines Server verweisen in einen bestimmten Ordner umzuleiten, verwende ich diesen Teil in der .htaccess

RewriteEngine On
RewriteBase /
RewriteRule    "^([^/]*)$" "/de/$1" [L,R=301]

Hintergrund ist, dass ich eine Seite aufbaue, die zunächst vor allem deutsche Inhalte haben wird. Aber eine Erweiterung auf andere Sprachen will ich mir offen halten und daher die Inhalte von Anfang an getrennt in Ordnern (de, en, ..) ablegen. Geht nun ein Anfrage ein, die nicht in einen bestimten Sprachordner verweisst, wird sie automatisch in den deutschen Ordner verwiesen.

h1

NetApp Monitoring in neuem Blog

31. Oktober 2009

Zu dem Thema Monitoring von NetApp Speichergeräten schreibe ich ab sofort in einem eigenen Blog weiter …

blog.netapp-monitoring.info

h1

Garmin nüvi 550: „Too many gpx Files“

31. Juli 2009

Das Nüvi startet und meckert, dass es zu viele GPX-Dateien hat und man möge doch einige davon löschen. Doch in dem Ordner Garmin/gpx sind keine gpx-Dateien zu finden.

Die Ursache sind die zuvor via Mac-GUI (Finder) gelöschten Dateien, die sich im Papierkorb (Trash) befinden. Sichtbar werden sie wenn man sich auf der Commandline den Ordner /Volumes/.Trashes ansieht (ls -a /Volumes/GARMIN).

Lösung: Ausleeren des Papierkorbes, während das Garmin-Gerät angesteckt und eingehängt (mounted) ist.

Ein ähnliches Problem scheint es auch mit dem Recycle-Bin in Windows zu geben.

Siehe auch: http://garminoregon.wikispaces.com/Issues+Basic+Operations