Node.js und npm unter Ubuntu 12.04 installieren

Ich betreue einige Systeme die mit Ubuntu 12.04 LTS laufen. Der Long Term Support hat einige Vorteile. Leider sind die Software Versionen in den Paketquellen nicht immer die aktuellsten. Beispielsweise ist in den offiziellen Paketquellen für Ubuntu 12.04 nur die Version v0.6.12 von Node.js verfügbar.

Damit man mit der aktuellsten Version von Node.js kann, verwendet man am besten das PPA von Chris Lea.

$ sudo apt-get install python-software-properties
$ sudo apt-add-repository ppa:chris-lea/node.js
$ sudo apt-get update

Installieren von Node.js

$ sudo apt-get install nodejs

Testen

$ node -v
v0.10.33

Npm sollte jetzt auch aktuell sein.

$ npm -v
1.4.28

Hinweis: Die Versionsnummer zeigt im Beispiel den Stand heute und kann morgen schon eine andere sein.

pcregrep gegen grep

Um mit reguläre Ausdrücken auf der Linux-Konsole zu suchen, verwendete ich meist das Programm grep. Zufällig bin ich jetzt auf pcregrep gestoßen. Das kleine Tool befindet sich in den Paketquellen von Ubuntu und kann wie folgt installiert werden.

$ sudo apt-get install pcregrep

Im direkten Vergleich zeigt sich, das pcregrep deutlich schneller bei der Verarbeitung von Perl Kompatiblen Ausdrücken ist als grep -E.

$ time grep -o -E ‚^[0-9.]+\s‘ access.log > /dev/null
real 0m1.526s
user 0m1.508s
sys 0m0.012s

im Vergleich zu ….

$ time pcregrep -o ‚^[0-9.]+(?=\s)‘ access.log > /dev/null
real 0m0.036s
user 0m0.032s
sys 0m0.000s

Die Grundlage des Vergleichs ist die Suche nach IP Adressen in einer ca. 7 MB großen access.log Datei eines Apache. Wenn man das Ergebnis mal hochrechnet auf eine GB große Datei, macht sich der Unterschied schon ganz schön bemerkbar.

Weitere Informationen zum Thema:
http://manpages.ubuntu.com/manpages/precise/man1/pcregrep.1.html
http://manpages.ubuntu.com/manpages/precise/man1/grep.1.html

Inhalt mehrerer Dateien in einer Datei Zusammenführen

Heute mal ein kleiner Schnipsel der sicherlich für den ein oder anderen hilfreich sein kann. Es geht um das Zusammenführen des Inhalts von zwei oder mehr Dateien. Hierfür kann z.B. der Befehl cat verwendet werden.

$ cat datei1.txt datei2.txt > datei12.txt

Selbstverständlich lässt sich der Befehl auch prima mit einem find oder ls kombinieren. Damit lassen sich dann auch ganze Order oder nur bestimmte Dateien in einem Verzeichnis zusammenführen.

Externe IP Adresse in der Konsole anzeigen

Heute mal eine kleine Gedankenstütze für das Anzeigen der Öffentlichen IP-Adresse in der Shell. Denn gerade wenn eine Maschine über ein Gateway oder Proxy mit dem Internet verbunden ist, finden sich in den bekannten Systemtools wie ifconfig keinerlei Informationen über externe Anschlüsse.

Aber wie am Desktop auch hilft hier eine der zahlreichen Webseiten die meine aktuelle IP-Adresse zurückgeben. Ein Beispiel könnte zum Beispiel so aussehen.

$ wget http://ipecho.net/plain -O – -q ; echo
178.254.11.33

Über Vorschläge weiterer Endpoints würde ich mich in den Kommentaren freuen.