Was ich so treibe...

Uli's IT-Blog - Konzeption, Entwicklung, Betrieb

GPG: Signaturen

GPG/PGP-Signatur von Quelltext-Dateien prüfen

Quelltextdateien werden oftmals mit GPG/PGP-Signaturen bereitgestellt, über die die Integrität der Dateien geprüft werrden kann. Hier zeige ich exemplarisch, wie dies für Subversion und Nginx gemacht wird.

JMX auf Localhost

JMX so aktivieren, dass der Zugriff nur via Localhost möglich ist

Im Java-Umfeld gibt es die JMX-Schnittstelle, die u.a. für’s Monitoringittels JCONSOLE verwendet werden kann. Für meine eigenen Java-Prozesse ist das schnell erledigt: Einfach den Java-Prozess starten, dann jconsole (ohne Zusatzargument). Es wird eine Liste mit allen meinem Java-Prozessen angezeigt und ich kann einfach den gewünschten auswählen. Danach bekomme ich eine Anzeige ähnlich dieser:

Dummerweise werden Webanwendungen manchmal mit anderen Benutzern gestartet, die noch dazu recht abgeschottet sind. Da scheitert der vorige Wert für mich – die betreffenden Tomcats erscheinen dann einfach nicht in der Liste. Das ist der Punkt, an dem man gerne die Remote-Schnittstelle über das setzen diverser Java-Properties freischaltet. Dumm dabei: Nun kann netzwerkweit auf die JMX-Schnittstelle zugegriffen werden – sofern man sie nicht zusätzlich abblockt, was auch wieder Aufwand bedeutet.

Ziel: Wir wollen die JMX-Schnittstelle so in Betrieb nehmen, dass nur von “localhost” aus auf sie zugegriffen werden kann!

Dovecot-2.2 - DEB-Paket erzeugen

Ubuntu-Pakete aktualisieren – Dovecot

Heute soll eine neue Version von Dovecot erzeugt werden. Grob geht’s so:

  • Quellen der Standardversion von Ubuntu runterladen und kompilieren
  • Aktualisieren auf die gewünschte neue Version (2.2.rc2)
  • Neue Version kompilieren

Mal sehen, ob’s klappt wie vorgesehen!

Octopress-Aktualisierung 1/2 - Grundtests

Aktualisierung meiner Octopress-Installation (½)

Vor grob 5 Monaten habe ich Octopress erstmalig aufgesetzt und seitdem die Finger von den Aktualisierungen gelassen. Dadurch funktionieren in “meiner” Installation nun gewisse Dinge nicht ganz so gut wir im Original. Beispielsweise soll die Verlinkung von Blog-Posts im Original über einen Methodenaufruf funktionieren, bei meiner Variante muß ich mir den Link mühsam zusammenklauben.

Erstmal möchte ich testen, ob die aktualisierte Version überhaupt funktioniert. Diese Tests mache ich mit “master” und “source-2.1”.

Neuer Kernel für Ubuntu-12.04

Kommt ein Kernel geflogen … Hardware Enablement Stack für Ubuntu-12.04

Eben hab’ ich mir die Zeit genommen und die Ankündigung für Ubuntu-12.04.2 ein wenig näher angeschaut. Offenbar gibt’s im Zuge des LTS Enablement Stacks einen neuen Kernel (3.5 statt 3.2). Dieser soll die Verwendung von neueren Geräten ermöglichen.

Eigentlich bin ich mit dem Alt-Kernel recht zufrieden. Alle meine Rechner laufen – sogar der Problemfall eines AMD-basierten Samsung-Notebooks. Bei diesem mußte ich allerdings den Grafiktreiber selbst kompilieren, der bei 12.04 ausgelieferte Treiber unterstützt die verbaute Radeon-Karte nicht.

Patchverwaltung mit Quilt

Ubuntu-Pakete aktualisieren – Patchverwaltung mit Quilt

Heute hatte ich die Idee, eine neue Version von NGINX zu erzeugen. Grob sollte es nach diesem Muster klappen:

Paket aktualisieren
1
2
3
4
5
6
7
8
9
10
11
# Quellen zum Ubuntu-Paket runterladen
apt-get source nginx
# Aktuelle Nginx-Quellen runterladen
wget -c http://nginx.org/download/nginx-1.2.7.tar.gz
# Paket aktualisieren
cd nginx-1.1.19
uupdate -u ../nginx-1.2.7.tar.gz
cd ..
# Paket neu erzeugen
cd nginx-1.2.7
dpkg-buildpackage

Danach sollten die neuen Paketdateien bereit zur Installation sein.

Fatales Problem

Leider klappt’s nicht, es gibt fatale Fehlermeldungen:

Fatale Fehler bei der Paketerzeugung
1
2
3
4
5
6
7
8
9
10
11
12
uli@ubuntu-120464:/build/nginx/nginx-1.2.7$ dpkg-buildpackage
dpkg-buildpackage: export CFLAGS from dpkg-buildflags (origin: vendor): -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security
dpkg-buildpackage: export CPPFLAGS from dpkg-buildflags (origin: vendor): -D_FORTIFY_SOURCE=2
...
 dpkg-source -b nginx-1.2.7
dpkg-source: Information: Quellformat »3.0 (quilt)« wird verwendet
dpkg-source: Information: nginx wird unter Benutzung des existierenden ./nginx_1.2.7.orig.tar.gz gebaut
patching file src/http/modules/perl/Makefile.PL
Hunk #2 FAILED at 14.
1 out of 2 hunks FAILED -- saving rejects to file src/http/modules/perl/Makefile.PL.rej
dpkg-source: Fehler: Fehler-Exitstatus von LC_ALL=C patch -t -F 0 -N -p1 -u -V never -g0 -E -b -B .pc/perl-use-dpkg-buildflags.patch/ < nginx-1.2.7.orig.OjasVr/debian/patches/perl-use-dpkg-buildflags.patch war 1
dpkg-buildpackage: Fehler: Fehler-Exitstatus von dpkg-source -b nginx-1.2.7 war 2

Korrektur

In der Fehlermeldung erkennt man den Hinweis auf das Werkzeug QUILT. Dieses verwaltet die Anpassungsdateien (patches) und kann auch zur Korrektur der fehlerhaften Anpassungen verwendet werden.

Hier der Korrekturablauf:

Patch aktualisieren
1
2
3
4
5
6
7
export QUILT_PATCHES=debian/patches
quilt push -f # ... eigentlich hätte ich hier einen Fehler erwartet,
#  stattdessen erscheint eine Meldung mit "succeeded with fuzz..."
#  Glück gehabt!
quilt refresh
quilt pop -a
dpkg-buildpackage

Nun läuft die Erzeugung durch, DEB-Dateien werden erstellt.

Notizen

Diverse Befehle

  • sudo apt-get install devscripts
  • sudo apt-get build-dep nginx

Protokoll

Protokoll: Fehler und Korrektur
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
uli@ubuntu1204:/build/nginx/nginx-1.2.7$ dpkg-buildpackage
dpkg-buildpackage: export CFLAGS from dpkg-buildflags (origin: vendor): -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security
dpkg-buildpackage: export CPPFLAGS from dpkg-buildflags (origin: vendor): -D_FORTIFY_SOURCE=2
dpkg-buildpackage: export CXXFLAGS from dpkg-buildflags (origin: vendor): -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security
dpkg-buildpackage: export FFLAGS from dpkg-buildflags (origin: vendor): -g -O2
dpkg-buildpackage: export LDFLAGS from dpkg-buildflags (origin: vendor): -Wl,-Bsymbolic-functions -Wl,-z,relro
dpkg-buildpackage: source package nginx
dpkg-buildpackage: source version 1.2.7-0dp01~precise1
dpkg-buildpackage: source changed by Uli Heller <uli.heller@daemons-point.com>
dpkg-buildpackage: host architecture i386
 dpkg-source --before-build nginx-1.2.7
 fakeroot debian/rules clean
dh_testdir
dh_testroot
rm -f build-stamp
rm -f config.sub config.guess
dh_clean
rm -rf /build/nginx/nginx-1.2.7/debian/modules/naxsi
rm -rf /build/nginx/nginx-1.2.7/debian/build-*
 dpkg-source -b nginx-1.2.7
dpkg-source: info: using source format `3.0 (quilt)'
dpkg-source: info: building nginx using existing ./nginx_1.2.7.orig.tar.gz
patching file src/http/modules/perl/Makefile.PL
Hunk #2 FAILED at 14.
1 out of 2 hunks FAILED -- saving rejects to file src/http/modules/perl/Makefile.PL.rej
dpkg-source: error: LC_ALL=C patch -t -F 0 -N -p1 -u -V never -g0 -E -b -B .pc/perl-use-dpkg-buildflags.patch/ < nginx-1.2.7.orig.G94ZuW/debian/patches/perl-use-dpkg-buildflags.patch gave error exit status 1
dpkg-buildpackage: error: dpkg-source -b nginx-1.2.7 gave error exit status 2
uli@ubuntu1204:/build/nginx/nginx-1.2.7$ export QUILT_PATCHES=debian/patches
uli@ubuntu1204:/build/nginx/nginx-1.2.7$ quilt push -f
Applying patch perl-use-dpkg-buildflags.patch
patching file src/http/modules/perl/Makefile.PL
Hunk #2 succeeded at 14 with fuzz 1.

Now at patch perl-use-dpkg-buildflags.patch
uli@ubuntu1204:/build/nginx/nginx-1.2.7$ quilt refresh
Refreshed patch perl-use-dpkg-buildflags.patch
uli@ubuntu1204:/build/nginx/nginx-1.2.7$ quilt pop -a
Removing patch perl-use-dpkg-buildflags.patch
Restoring src/http/modules/perl/Makefile.PL

No patches applied

Rails-2.3.17

Rails-Update für Redmine-1.2

Leider ist schon wieder eine Sicherheitslücke in Rails entdeckt worden.

Analog zur Aktualisierung auf 2.3.15 erfolgt nun die auf 2.3.17:

  • Gems runterladen und auf Redmine-Rechner kopieren
  • Betriebssystem aktualisieren
  • Gems einspielen
  • Alte Gems löschen

Gems herunterladen und zum Redmine-Server übertragen

Der Redmine-Server hat keinen Zugang zum Internet. Deshalb müssen die Gems auf einem anderen Rechner heruntergeladen und zum Redmine-Server übertragen werden.

(get-2.3.17.sh) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/sh
VERSION=2.3.17

fetch() {
  (
  GN="$1-$2.gem"
  if [ ! -s "${GN}" ]; then
    gem fetch "$1" -v "$2"
  fi
  )
}

for i in actionmailer actionpack activerecord activeresource activesupport rails; do
  fetch "${i}" "${VERSION}"
done
fetch rack 1.1.3

Die Dateien werden danach mit SCP auf den Redmine-Server übertragen.

Basissystem aktualisieren

Basissystem aktualisieren
1
2
3
apt-get update
apt-get upgrade
apt-get dist-upgrade

Gems einspielen

Gems einspielen
1
gem install rails-2.3.17.gem

Alte Gems deininstallieren

(uninstall-2.3.15.sh) download
1
2
3
4
5
6
7
8
9
10
#!/bin/sh
VERSION=2.3.15

gem uninstall rails -v "${VERSION}"
gem uninstall actionmailer -v "${VERSION}"
gem uninstall actionpack -v "${VERSION}"
gem uninstall activerecord -v "${VERSION}"
gem uninstall activeresource -v "${VERSION}"
gem uninstall activesupport -v "${VERSION}"
#gem uninstall rack -v 1.1.1