bloginfo('name');

bloginfo('description');

Archives Posts

1&1: Update versaut - GNU Database compat-Bibliotheken für Perl 5.8.8 fehlen!

März 5th, 2008 by Blu:RayNe

So und wieder mal Ärger mit 1&1 aka. „der Schlund?, was mir als Namensgebung weiterhin besser gefällt. Dieses mal geht es darum dass die Jungs beim Perl-Update eine compat-Lib vergessen haben.

Hallo,

Es geht um die Domain http://www.example.com/. Darauf liegt unter http://www.example.com/cgi-bin/tabellen.cgi?liga=Mayer-Bezirksliga ein
CGI-Skript was mit Perl2EXE in ein ELF-Binary konvertiert wurde.

Da es eine Auftragsarbeit ist und das File im Binary-Format, haben wir keine Chance, es noch zu ändern. Die Domain ist in diesem Zustand nämlich seit 5 Jahren online.

Unter dem 1&1 Control Panel/Admin-Bereich spuckt das „Script? unter CGI-Ausgabe folgende Fehlermeldung aus:

     127 CGI returned nonzero status /kunden/homepages/22/d27514621/htdocs/cgi-bin/tabellen.cgi: error while loading shared libraries: libdb.so.2: cannot open shared object file: No such file or directory

Eine ähnliche Fehlermeldung erhalte ich, wenn ich das Skript auf einen lokalen Debian/Etch (R3) Server ziehe:

     ./tabellen.cgi: error while loading shared libraries: libgdbm.so.2: cannot open shared object file: No such file or directory

Die Bibliothekn mit ldd gecheckt, sagt mir weiterhin noch folgendes:

 $ ldd ./tabellen.cgi         linux-gate.so.1 =>  (0xffffe000)libnsl.so.1 => /lib/tls/libnsl.so.1 (0xb7fad000)

libdb.so.2 => /lib/libdb.so.2 (0xb7f9d000)

libgdbm.so.2 => /usr/lib/libgdbm.so.2 (0xb7f97000)

libdl.so.2 => /lib/tls/libdl.so.2 (0xb7f93000)

libm.so.6 => /lib/tls/libm.so.6 (0xb7f6e000)

libc.so.6 => /lib/tls/libc.so.6 (0xb7e3c000)

libcrypt.so.1 => /lib/tls/libcrypt.so.1 (0xb7e0e000)

/lib/ld-linux.so.2 (0xb7fd4000)

Lokal konnte ich das Problem schnell durch Installation der Pakete libgdbmg1 und libdb1-compat beheben, wie mir auch die Debian-Paketsuche zeigte.

Auch wenn sysinfo.cgi auf betroffenem Server ausspuckt, dass folgende Libs eingebunden wurden -lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt -ldl -lm -lpthread -lc -lcrypt so scheinen also noch ein paar legacy files zu fehlen! Sie haben also wohl bei Ihrem letzten Server Update vergessen, die das compat-Paket mit zu installieren!

Ich möchte Sie also bitten auf dem System alles was in Zusammenhang mit GDBM (GNU Database) und libdb1-compat steht noch mit auf den Server zu packen. Im Einzelnen sind das wohl die Pakete gdbm, libdb1-compat, libgdbmg1, libgdbm-dev(falls nötig?) und libgdbm*.

Möglicherweise lässt sich das Problem so schnell lösen. Bitte geben Sie bescheid, wenn alles wieder funktioniert. Der Kunde wartet.

Im Voraus vielen Dank!

MfG
.mg

Sogar schon am 6. Tag gab es eine Antwort:

Sehr geehrter Herr **********,

vielen Dank für Ihre Anfrage die ich gerne beantworte.

Nach eingehender Prüfung liegen mir nun weitere Informationen zu Ihrem
Anliegen vor.

Leider können wir die gewünschten Libaries nicht zur Verfügung stellen
da diese in die globale Serverkonfiguration eingebunden werden müssten
und das technische Komplikationen hervorruft.

Wir können Ihnen lediglich anbieten Sie bis zum 08.04.2008 auf einen
Ausweichserver um zuziehen auf dem noch die alte Betriebssystemumgebung
installiert ist. Nach diesem Datum wird jedoch auch dieser Server
umgestellt. Auch kann keine Garantie dafür übernommen werden das Ihr CGI
auf diesem Server läuft. Falls Sie einen Umzug auf einen solchen Server
wünschen geben Sie uns bitte hierzu eine kurze, entsprechende
Information.

Eine langfristige Lösung kann aber nur dadurch gewährleistet werden das
die Binaries in Etch kompatibler Form erstellt werden.

Bei weiteren Fragen stehen wir Ihnen gerne zur Verfügung.

Mit freundlichen Grüßen

**********

So, und nun böse Antwort #1:

Hallo,

Sagt mal, arbeiten bei euch Übersetzer, die ansichtlich „Tech-Babble? in „Noob-Slang? mit einer Informationsdichte übersetzen?

Also, Ihr gebt zu, das Ding nicht installieren zu wollen, stattdessen die Page aber auf einen Server auszulagern, auf dem Ihr spätesten am 8.4. wieder nur einen Teil der Software, die zum reibungslosen Betrieb notwendig wäre installiert? Toll! Leider keine wirkliche Lösung.

Übrigens: Da diese restlichen Server ja wohl noch auf Debian 3.1 laufen, nur die Info dass die Security-Maintainance von Debian am 04.05. endet. D.h. ihr seid damit auf den letzten Drücker dran, und überschreitet die SOLL-Zeit auch noch um 4 Tage!

Leider können wir die gewünschten Libaries nicht zur Verfügung stellen
da diese in die globale Serverkonfiguration eingebunden werden müssten
und das technische Komplikationen hervorruft.

Komplikationen ja, Konflikte möglich, aber eher unwahrscheinlich, da euer System wohl zum großen Teil über Debian und sein Paket-Management läuft! Auf jeden Fall gibt es aber bei euch jede Menge Bürokratie!

Die langfristige Lösung heißt im Übrigen libdb1-compat ;) Desweiteren heiße ich auch nicht Herr **********, aber arbeite für diesen Mann.

Mit kleinen Providern gibt es im Übrigen bei solchen Dingen meist keine großartigen Probleme, obwohl die im Gegensatz zu euch, nicht der ganzen Welt einen Stempel aufdrücken wollen, wie toll ihr Service/Support ist.

Und ich weiß eh, dass es auf diese E-Mail keine Antwort gibt. Aber trotzdem, ich weiß wie Scheiße euer Job ist :( wechselt doch zu domainfactory, bei denen soll es soweit ok sein (laut Kumpel).

MfG
.mg

Ich wartete auf die Antwort sechs Tage, hackte nochmal mit einer E-Mail „Na, gibt’s Neuigkeiten?? nach, erhielt am abend des siebenten Tages folgendes:

Sehr geehrter Herr Geiger,

hier noch ein Vorschlag:

Sie könnten die benötigten Libraries selbst in einem Verzeichnis ~/lib
auf Ihrem Webspace installieren und mit Hilfe der folgenden .htaccess
-Anweisung in Ihre cgi-Skripte einbinden:

SetEnv LD_LIBRARY_PATH  /homepages/22/d27514621/htdocs/lib

Bei weiteren Fragen stehen wir Ihnen gerne zur Verfügung.

Mit freundlichen Grüßen
************

So der letzte Versuch die Jungs zur Installation zu bewegen:

Hallo,

zwar ein guter Vorschlag, der aber daran krankt, das die Environment Variable nur unter Apache gültig ist. Fehlermeldungen sehe ich leider hingegen leider nur unter dem CGI-Ausgabe-Monitor . Somit dürfte die Installation der Libs schwierig bis (nahezu) unmöglich sein.

Können sie sich nicht einfach doch dazu bewegen auf dem Server die libgdbmg1, libgdbm-dev und libdb1-compat zu installieren? Das würde nicht nur mein Problem lösen, sondern auch Ihres ? nämlich jenes dass mit mir haben. Und das Ansehen des Supports würde wieder ein paar Punkte auf meiner Skala steigen ;)

Viele Grüße!

MfG
.mg

Naja, die Ausgabe kann man ja eigentlich umleiten. Bisher hab ich nicht viel in Perl gemacht, also erstmal noch nem Error-Logger gesucht. Und dann auf die Idee gekommen, doch einfach das Script via einem system-call aufzurufen und die Ausgabe mit 2>&1 1>log.txt umzuleiten.

Die Environment-Variable zu setzen hat nicht geklappt, aber die Lib hat er auch im Execution-Driectory akzeptiert. Fünf Minuten später gab es eine Erfolgsmeldung:

Hallo,

Es muss natürlich heißen /kunden/homepages/22/d27514621/htdocs/lib. Zudem habe ich die Ausgabe von STDERR und STDOUT einfach umgeleitet, um mir die Diagnose zu erleichtern. Und ich darf Ihnen mitteilen, dass somit wieder alles läuft.

Wengistens danke, dass ihr auch Debian benutzt, weswegen ich mir nicht die Libs von sonstwoher ziehen musste.

MfG
.mg

UPDATE: Use setrpath-Utiltity to change ELF search paths.

Filed under Administratives having No Comments »

Archives Posts

Commonly used Debian repositiories

Juli 4th, 2007 by Blu:RayNe

Ok, here some often needed debian repositiories for your /etc/apt/sources.list. This article will get updated when needed.

# Unoffical packages that harm debian licenses
deb http://ftp.debian-unofficial.org/debian etch main contrib non-free restricted

# Distribution Mirror server from 1&1
deb http://update.rootmaster.info/debian stable  main contrib non-free
deb http://update.rootmaster.info/debian-non-US stable/non-US main contrib non-free

# Distribution Mirror server from Strato
deb http://ftp.serverkompetenz.de/debian/ etch main contrib non-free

# Offical Debian
deb http://http.us.debian.org/debian stable main contrib non-free

# Debian security updates
deb http://security.debian.org/debian-security stable/updates main contrib non-free

# Up-to-date Apache, PHP and MySQL
# deb http://dotdeb.netmirror.org/ stable all
# deb-src http://dotdeb.netmirror.org/ stable all
deb http://packages.dotdeb.org etch all

# mplayer, ffmpeg and so on…
deb http://www.debian-multimedia.org etch main

# Mono
deb http://www.mindtouch.com/apt/ sarge main contrib non-free#

# Updates for viruses & spam filters
deb http://volatile.debian.net/debian-volatile sarge/volatile main contrib
deb http://people.debian.org/~dexter php5.1 sarge
deb-src http://people.debian.org/~dexter php5.1 sarge
deb http://www.os-works.com/debian testing main

# Backports - if you really need them!
# deb http://www.backports.org/debian/ sarge-backports main contrib non-free
 

Filed under Allgemein, Linux having No Comments »

Archives Posts

Backup remotely via Perl

Mai 29th, 2007 by Blu:RayNe

Ok, i guess you love that cheap servers only with FTP and HTTP, and minimal PHP4-Timeout and lame CGI and no real possibility but to do a good backup job. Well, Perl was once a dominant language and can do much for you.

The benefits of following backup solutions are as follows:

  • Backup is done via calling an URL
  • that invokes the mysqldump utility to backup your database to a local director, that is preferable outside the webroot
  • the data is then gzipped
  • old backups are automatically deleted
  • and then backed up via FTP to another server
  • and while a second server gets the backup it is more secure than having all on a single server

Put this in you cgi-bin folder and remotely call it via CURL or test it via the browser. Don’t forget tot set chmod 755 for the files! If you backup to a directory in the webroot don’t forget to protect that directory by e.g. setting a up an .htacess-file!

#!/usr/bin/perl -w

use CGI;
use POSIX qw(strftime);
use Time::Local;

$query    = new CGI();
$file     = $query->param(‘file’);
$filename = $query->param(‘filename’);

print "Content-Type: text/plain\n\n";
# print "Content-type: application/octet-stream\n";
# print "Content-Disposition: attachment; filename=".$filename."\n";
# print "Pragma: no-cache\n";
# print "bash ".$file;

sub backupMysql
{
    my ($host)     = $_[0];
    my ($username) = $_[1];
    my ($password) = $_[2];
    my ($database) = $_[3];
    my ($title) = $_[4];

    $time = time;
    $filename = $title."-".$database."-".strftime("%Y%m%d-%H%S", localtime($time));
    print "Backup of \"".$title."\" (".$database.")…";
    system "mysqldump -e –add-drop-table –add-locks –allow-keywords -h".$host." -u".$username." -p".$password." ".$database." > ../../backup/".$filename.".sql";
    # print "GZip ".$filename."…\n";
    system "gzip ../../backup/".$filename.".sql";
    # print "Unlink ".$filename.".sql…\n";
    unlink "../../backup/".$filename.".sql";
    print "done.\n";
}

# Delete previous backups
if (-d "../backup/") {
    $where = "../backup/";
    while (defined($next = <$where/*.sql.gz>)) {
        unlink($next);
    }
}

backupMysql("<em>host</em>", "<em>username</em>", "<em>password</em>", "<em>database</em>", "<em>mybackupname</em>");

 

Optional .htaccess-File:

<Files ~ ".*(sql|gz|tar)">
    Deny from all
</Files>
 

Then call the URL by cronjob:

#!/bin/sh

remoteAddress="<em>ftp://user@yourftp.com</em> -p <em>password</em>"
localAddress="<em>/home/Backup/mybackupname</em>"

timeThreshold=15
mirrordirOptions="-v –keep-files  –no-chown –no-chmod  –num-backups 30 –mtime-threshold $timeThreshold "

echo "Backup to $localAddress — `date +"%a, %C.%B %Y"`"
echo -n "[`date +%H:%M:%S`] Killing runnung instances of mirrordir…"

/usr/bin/killall -9 mirrordir &amp;2>1 > /dev/null
echo "done."

mkdir -p $localAddress/htdocs > /dev/null

echo  "[`date +%H:%M:%S`] Backup of relevant databases…"
curl http://www.yourdomain.com/cgi-bin/backup/mysql.cgi
echo "done."

echo -n "[`date +%H:%M:%S`] Backup of remote FTP…"
/usr/bin/mirrordir $mirrordirOptions $remoteAddress $localAddress/htdocs
echo "done."

echo "[`date +%H:%M:%S`] Finished."
 

If you don’t have mirrordir or curl install it via aptitude install mirrordir curl on your debian box.

Filed under Allgemein, Datenbanken, Linux having No Comments »

Archives Posts

How to install Java and FOP on your linux box

Mai 20th, 2007 by Blu:RayNe

Debian or other Linux-Distributions do not include Java by default, so you first have to install the JVM. This is done in Debian by downloading the JVM binary distriubtion  from sun and then building a DEB-Package with the tools form java-package that you install by dpkg -i.

But let’s do that step-by-step:

Installing JAVA on your Debian box

  1. You’ll need the JavaVM, so get it at http://java.sun.com/ and search for the latest version. The filename should be something like jdk-1_5_0-linux-i586.bin.
  2. If not yet done, install the tools from java-package as root-user:
    apt-get install java-package

  3. Then build a DEB-Package from the downloaded file. This can and should be done only as standard user (no root!)
    fakeroot make-jpkg <java-binary-package-name>.bin

  4. If everything goes fine, you should see something like
    The Debian package has been created in the currentdirectory. You can install the package as root (e.g.dpkg -i sun-j2sdk1.5_1.5.0+update00_i386.deb).
  5. Then just install the package by ther given command:
    dpkg -i <created-package-name>.deb

  6. Check if it works by typing java -version. Following should be seen as standard and root user:
    java version "1.5.0"Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)Java HotSpot(TM) Client VM (build 1.5.0-b64, mixed mode, sharing)

Installing Apache FOP on your Debian box

  1. Check if Java is installed and running.
  2. Get the latest binary from http://xmlgraphics.apache.org/fop/ . The file should be named something like fop-0.93-bin-jdk1.4.tar.gz.
  3. Extract the contents of the archive by tar -zxvf <fop-tarball>. This should results in a directory called fop-0.93.
  4. Move the directory to /usr/local/lib
    mv fop-0.93 /usr/local/lib
  5. Make a symlink for the directory without the version number
    ln -s /usr/local/lib/fop-0.93 /usr/local/lib/fop
  6. Make a symlink for the command line wrapper script in your /usr/bin
    ln -s /usr/local/lib/fop/fop /usr/bin/fop
  7. Edit /usr/bin/fop and put following at the beginning of the file (and below the header comment section!):
    export FOP_HOME=/usr/local/lib/fop

  8. Test the installation not only by typing fop -v, but instead by converting a fo file. This is necessary, because the command line wrapper is still very experimental:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">

    <fo:layout-master-set>
      <fo:simple-page-master master-name="A4">
      <fo:region-body /><
      </fo:simple-page-master>

    </fo:layout-master-set>

    <fo:page-sequence master-reference="A4">
      <fo:flow flow-name="xsl-region-body">
        <fo:block>Hello World!</fo:block>
      </fo:flow>
    </fo:page-sequence>
    </fo:root>

More help

You can get in-depth installation guides and instructions here:

Archives Posts

Hilfe! Postfächer sind weg!

Mai 15th, 2007 by Blu:RayNe

Und hier wieder ein lustiger Witz für alle Linux- und Unix-Nutzer (inkl. Mac OSX):

- „Du Markus, nur dass du bescheid weißt ab 20:00 sind die Postfächer vom Exchange-Server abgeschaltet?“

- „Hä?! Wieso das?! Server-Update?“

- „Nein, der Exchange-Server muss defragmentieren.“

Archives Posts

STASI 2.0 - Schäuble tyrannisiert den LinuxTag 2007

Mai 10th, 2007 by Blu:RayNe

Nach dieser News auf heise.de musste einfach gehandelt werden:

Betreff [LinuxTag 2007] Mit Schäuble auf dem Programm gehe ich nicht hin!
To orga@linuxtag.org
CC schwobe@linuxtag.org
CC projects@linuxtag.org



Hallo lieber Organisatoren und sonstige Beteiligte,

eigentlich hätte ich mich schon auf die Veranstaltung sehr gefreut, jedoch musste ich erahren dass Bundesinnenminister Schäuble die Schirmherrschaft an sich gerissen hat. Dieser Mensch verkörpert für mich alles was Linux nicht ist, und er ist ein eindeutiger Grund warum ich eben meine Bahntickets storniert habe.

Linux verkörpert für mich Kooperation, gegenseitige Hilfe und Freiheit. Dieser Mensch – nein ich hätte ich noch andere Worte für Ihn – ist das genaue Gegenteil von allem was Linux bedeutet. Unter Ihm sehe ich jemanden, der von Technik weniger Ahnung hat als mein Hund, jemanden der am liebsten seine eigene Privatarmee hätte und versucht mit seiner Politik das Volk zu kriminalisieren und der Mündigkeit zu berauben. Ich finde diese Aussagen kaum übertrieben, eher aber eine mögliche Zukunftsvision, wenn diese Mensch noch länger an der Macht bleibt.

Es ist eine Schande, dass gerade Ihr ihm ein öffentliches Sprachrohr für seine Politik gebt, und es zulässt dass er viele durch seine falschen Ansichten beeinflußt. Normalerweise haben Vertreter der Konzepte von OSS nicht viele Möglichkeiten über die Miss-Stände oder der Dissinformation über die Sicherheits-Politk entgegenzuwirken – und ihr gebt diesen Menschen gerade am LinuxTag ein Sprachrohr?! Bitte!

Andere sehen es genau so wie ich, und ich werde mit mein bestes tun, die News über seine Herrschaft am LinuxTag weiter zu verbreiten.

Deswegen ladet diesen Menschen bitte einfach aus! Wir brauchen Ihn nicht, und sicherlich wär mir ein oder mehrere Euro nicht zu Schade um die Veranstaltung mitzufinanzieren. Ich bin mir sicher es geht auch ohne diesen Unfried Schäuble!

MfG
.mg

Und es geht weiter – hier ein Interview mit dem Bundesdatenschutzbeauftragten, dem anscheinend auch nur noch Sarkasmus in Anbetracht der Ohnmacht gegenüber der freiwilligen Selbstzensur der Gesellschaft übrig bleibt.

Mein Tipp: einfach mal auf volksverdummende Populärmedien wie Rotations-Radiostationen und Privatfernsehen verzichten. Damit kann man sehr schön sehen, wie sich die Gesellschaft verändert.

Im Moment würde ich jedenfalls lieber in einem sauerstoff-leeren Raum ersticken, statt hier weiter auf Erden zu sein. Nein, Vampire und andere Unsterbliche gab es wirklich – sie haben sich nur wegen Frust an der Gesellschaft selbst umgebracht </Sarkasmus>

Filed under Allgemein, Linux, Security having 2 Comments »

Archives Posts

screen commands

April 25th, 2007 by Blu:RayNe

screen -ls - List running screens
screen -r  - List and reattach existing session
screen - Simply starte new screen

Ctrl-a " - Bring up list of active sessions
Ctrl-a c - Create new screen
Ctrl-a n - Next Screen
Ctrl-a S - Split screen
Ctrl-a Tab - Switch to split area (and choose or create new window)
Ctrl-a  k - Kill window
Ctrl-a : - Open Command line (use resize 18 to set row hieght to 18)
Ctrl-a ] - Empty buffer

Filed under Linux having No Comments »

Archives Posts

Cache SSH passwords

Januar 17th, 2007 by Blu:RayNe

You know the annoyence when SSH again and again asks you to enter the password?

Well, SSH does not allow caching of passwords. Caching would be nonsense since all the security of SSH would then be gone. But you can use RSA to create a private/public pair of keys and send the remote host the public key of your server.

First, we create the key pair:

ssh-keygen -t rsa

The last step of the key creation is the passphrase. Since the purpose of this is to not enter a password, hence being able to create batch jobs, just hit “Enter” twice, leaving them blank.

Then we’ll have to copy the public key to the remote host:

  1. First create directory for SSH if not existent
    ssh root@example.com "mkdir .ssh; chmod 600 .ssh"
  2. Then we have to copy the public key of our machine to the remote server

    scp ~/.ssh/id_rsa.pub root@example.com:~/.ssh/authorized_keys2

    (Ensure authorized_keys2 does not exist on remote host!)

Filed under Linux having 1 Comment »