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 0

Als 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:

GDSN Paketverwaltung

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.list

Fü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-devel

Von 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: 2

Dann ä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

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.