Paketbau · 4 min read · Feb 07, 2026
Sichere Server: Paketbau mit EnGarde Secure Linux
Sichere Server: Paketbau mit EnGarde Secure Linux
Mitwirkende: Eckie Silapaswang und William Keys von Guardian Digital
Einführung
Obwohl EnGarde Secure Linux keine Entwicklungsumgebung “out of the box” enthält, sind alle Werkzeuge, um eine solche einzurichten, über das Guardian Digital Secure Network verfügbar. Ziel dieses Dokuments ist es, Ihnen, dem Softwareentwickler, die Anweisungen zur Verfügung zu stellen, um eine eigene Paketbauumgebung einzurichten. Nachdem Sie die Umgebung eingerichtet haben, werden wir Sie durch den Prozess des Bauens eines Pakets für die beliebte objektorientierte Programmiersprache Ruby führen.
Einrichtung Ihrer Umgebung
Was Sie benötigen:
- Eine Maschine, auf der Sie Ihre Entwicklung durchführen. Es wird nicht empfohlen, dies auf einer Produktionsmaschine zu tun. Diese Maschine sollte einigermaßen leistungsfähig sein, oder Sie sollten viel Geduld haben. Diese Maschine sollte die neueste Version von EnGarde Secure Linux Community installiert haben.
- Hinweise, wie man RPMs erstellt. Es gibt viele HOWTOs da draußen.
Sobald Sie alles oben Genannte haben, können Sie sich als root anmelden, zu sysadm_r wechseln und SELinux deaktivieren:
[root@engarde ~]# newrole -r sysadm_r
Authentifizierung von root.
Passwort:[root@engarde ~]# setenforce 0Als nächstes müssen Sie die folgenden Pakete installieren:
[root@engarde ~]# apt-get update
Get:1 gdsn://updates.guardiandigital.com rapier release
Fetched 478B in 0s (1794B/s)
Get:1 gdsn://updates.guardiandigital.com rapier/core pkglist
Get:2 gdsn://updates.guardiandigital.com rapier/core release
Fetched 149kB in 0s (176kB/s)
Reading Package Lists... Done
Building Dependency Tree... Done[root@engarde ~]# apt-get install rpm-build rpm-devel autoconf automake gcc gcc-c++ make patch binutils glibc-devel kernel-headers libstdc++-devel
Reading Package Lists... Done
Building Dependency Tree... Done
Die folgenden NEUEN Pakete werden installiert:
autoconf automake binutils gcc gcc-c++ glibc-devel kernel-headers
libstdc++-devel make patch rpm-build rpm-devel
0 aktualisiert, 12 neu installiert, 0 entfernt und 6 nicht aktualisiert.
Muss 48.3MB an Archiven herunterladen.
Nach dem Entpacken werden 154MB zusätzlichen Speicherplatz benötigt.
...
Änderungen werden übernommen...
Vorbereitung... ########################################### [100%]
1:binutils ########################################### [100%]
12:rpm-build ########################################### [100%]
Fertig.Eine andere Möglichkeit, die benötigten Pakete zu installieren, ist über das EnGarde WebTool:

Guardian Digital Secure Network: Paketverwaltungsoberfläche
An diesem Punkt haben Sie die meisten der Kernentwicklungs-Pakete installiert. Wenn Sie Pakete erstellen, die gegen andere Pakete verlinken, müssen Sie höchstwahrscheinlich auch andere -devel-Pakete installieren. Sie können die Pakete über WebTool oder die Befehlszeile mit apt-get installieren.
[root@engarde ~]# echo "rpm-src gdsn://updates.guardiandigital.com/GDSNROOT rapier core" >> /etc/apt/sources.listFühren Sie dann apt-get update aus:
[root@engarde ~]# apt-get update[root@engarde ~]# apt-get source ruby
Reading Package Lists... Done
Building Dependency Tree... Done
Muss 4324kB an Quellarchiven herunterladen.
Get:1 gdsn://updates.guardiandigital.com rapier/core ruby 1.8.4-1 (srpm) [4324kB]
Fetched 4324kB in 5s (861kB/s)
1:ruby ########################################### [100%]An diesem Punkt sind die Paketquellen in /usr/src/engarde/SOURCES installiert, und die Spec-Datei befindet sich in /usr/src/engarde/SPECS:
...
Gruppe: Entwicklung/Sprachen
Erfordert: %{name}-libs = %{version}-%{release}
BuildRequires: readline readline-devel ncurses ncurses-devel gdbm
gdbm-devel
BuildRequires: glibc-devel autoconf gcc unzip
BuildRequires: groff bison openssl-devel zlib-devel
BuildRequires: db4-devel libtermcap-devel
BuildRoot: %{_tmppath}/%{name}-%{version}-root
...Installieren Sie die oben genannten erforderlichen Pakete mit apt-get:
[root@engarde ~]# apt-get install readline readline-devel ncurses ncurses-devel gdbm gdbm-devel glibc-devel autoconf gcc unzip groff bison openssl-devel zlib-devel db4-devel libtermcap-develVon hier aus sollten Sie die Architektur Ihrer Umgebung überprüfen. Gehen Sie zum Verzeichnis /usr/include und notieren Sie sich die symbolischen Links ‘asm’:
[root@xen8 include]# cd /usr/include [root@xen8 include]# rm asm
[root@xen8 include]# ln -s ../src/linux/include/asm-i386/ asm Um das Paket zu bauen, verwenden Sie rpmbuild (dieser Schritt kann eine Weile dauern):
[root@engarde SPECS]# rpmbuild -ba ruby.spec
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.69447
+ umask 022
+ cd /usr/src/engarde/BUILD
+ cd /usr/src/engarde/BUILD
+ rm -rf ruby-1.8.4
+ /bin/mkdir -p ruby-1.8.4
+ cd ruby-1.8.4
+ /usr/bin/gzip -dc /usr/src/engarde/SOURCES/ruby-1.8.4.tar.gz
...
Geschrieben: /usr/src/engarde/SRPMS/ruby-1.8.4-1.src.rpm
Geschrieben: /usr/src/engarde/RPMS/i686/ruby-1.8.4-1.i686.rpm
Geschrieben: /usr/src/engarde/RPMS/i686/ruby-libs-1.8.4-1.i686.rpm
Geschrieben: /usr/src/engarde/RPMS/i686/ruby-devel-1.8.4-1.i686.rpm
Geschrieben: /usr/src/engarde/RPMS/i686/ruby-docs-1.8.4-1.i686.rpm
... Natürlich möchten wir das neueste mögliche Paket für Ruby erstellen. Zum Zeitpunkt dieses Artikels ist die neueste Version von Ruby 1.8.6.
[root@xen8 SOURCES]# wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6.tar.gz
--10:28:00-- ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6.tar.gz
...
100%[==========================================================>]
4,589,394 346.30K/s ETA 00:00
10:28:17 (308.40 KB/s) - `ruby-1.8.6.tar.gz' gespeichert [4589394]Wechseln Sie in das Verzeichnis der Spec-Datei und bearbeiten Sie die ruby.spec-Datei mit Ihrem bevorzugten Texteditor.
Release: 1
zu
Release: 2Dann ändern wir die Ruby-Version von 1.8.4 auf 1.8.6:
%doc %{name}-%{version}/ToDo
%doc %{name}-%{version}/doc/NEWS
%doc tmp-ruby-docs/ruby/*
zu diesem:
%doc %{name}-%{version}/ToDo
%doc %{name}-%{version}/doc/NEWS-1.8.0
%doc tmp-ruby-docs/ruby/*Das sollte ausreichen, um die Quelle zu bauen. Eine letzte Sache, die Sie für Ihre harte Arbeit tun sollten, ist, sich selbst für das Zusammenstellen dieses Pakets zu danken - gehen Sie ans Ende der Spec-Datei und fügen Sie sich hinzu:
[root@engarde SPECS]# rpmbuild -ba ruby.spec
...
+ umask 022
+ cd /usr/src/engarde/BUILD
+ cd /usr/src/engarde/BUILD
+ rm -rf ruby-1.8.6
+ /bin/mkdir -p ruby-1.8.6
+ cd ruby-1.8.6
+ /usr/bin/gzip -dc /usr/src/engarde/SOURCES/ruby-1.8.6.tar.gz
...
Geschrieben: /usr/src/engarde/SRPMS/ruby-1.8.6-2.src.rpm
Geschrieben: /usr/src/engarde/RPMS/i686/ruby-1.8.6-2.i686.rpm
Geschrieben: /usr/src/engarde/RPMS/i686/ruby-libs-1.8.6-2.i686.rpm
Geschrieben: /usr/src/engarde/RPMS/i686/ruby-devel-1.8.6-2.i686.rpm
Geschrieben: /usr/src/engarde/RPMS/i686/ruby-docs-1.8.6-2.i686.rpm
...Großartige Arbeit! Sie haben gerade ein aktualisiertes Paket für die neueste Version von Ruby erstellt!
Referenzen
- Softwareverpackung mit RPM, Teile 1-3 - http://www-128.ibm.com/developerworks/library/l-rpm1/
- http://www-128.ibm.com/developerworks/library/l-rpm2
- http://www-128.ibm.com/developerworks/linux/library/l-rpm3.html
- Maximum RPM - http://www.rpm.org/max-rpm/
- Ruby Programmiersprache - http://www.ruby-lang.org/
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.