Серверы · 3 min read · Feb 07, 2026

Безопасные серверы: сборка пакетов с EnGarde Secure Linux

Безопасные серверы: сборка пакетов с EnGarde Secure Linux

Участники: Эки Силапасванг и Уильям Кейс из Guardian Digital

Введение

Хотя EnGarde Secure Linux не включает в себя среду разработки “из коробки”, все инструменты для ее настройки доступны через Защищенную сеть Guardian Digital. Цель этого документа - предоставить вам, разработчику программного обеспечения, инструкции по настройке собственной среды сборки пакетов. После настройки среды мы проведем вас через процесс сборки пакета для популярного объектно-ориентированного языка программирования Ruby.

Настройка вашей среды

Что вам потребуется:

  • Машина для разработки. Не рекомендуется делать это на рабочей машине. Эта машина должна быть достаточно мощной, или у вас должно быть много терпения. На этой машине должна быть установлена последняя версия EnGarde Secure Linux Community.
  • Подсказки о том, как собирать RPM. Существует множество HOWTO.

После того как у вас есть все вышеперечисленное, вы можете войти как root, перейти в sysadm_r и отключить SELinux:

[root@engarde ~]# newrole -r sysadm_r  
Аутентификация root.   
Пароль:
[root@engarde ~]# setenforce 0

Затем вам необходимо установить следующие пакеты:

[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)   
Чтение списков пакетов... Готово   
Построение дерева зависимостей... Готово
[root@engarde ~]# apt-get install rpm-build rpm-devel autoconf automake gcc gcc-c++ make patch binutils glibc-devel kernel-headers libstdc++-devel   
  
Чтение списков пакетов... Готово   
Построение дерева зависимостей... Готово   
Следующие НОВЫЕ пакеты будут установлены:   
autoconf automake binutils gcc gcc-c++ glibc-devel kernel-headers   
libstdc++-devel make patch rpm-build rpm-devel   
0 обновлено, 12 новых установлено, 0 удалено и 6 не обновлено.   
Необходимо загрузить 48.3MB архивов.   
После распаковки будет использовано дополнительно 154MB дискового пространства.   
...   
Коммит изменений...   
Подготовка... ########################################### [100%]   
1:binutils ########################################### [100%]   
12:rpm-build ########################################### [100%]   
Готово.

Другой способ установки необходимых пакетов - через EnGarde WebTool:

Управление пакетами GDSN

Защищенная сеть Guardian Digital: интерфейс управления пакетами

На этом этапе у вас установлено большинство основных пакетов для разработки. Когда вы будете собирать пакеты, которые ссылаются на другие пакеты, вам, безусловно, придется установить другие пакеты -devel. Вы можете установить пакеты через WebTool или командную строку, используя apt-get.

[root@engarde ~]# echo "rpm-src gdsn://updates.guardiandigital.com/GDSNROOT rapier core" >> /etc/apt/sources.list

Затем выполните apt-get update:

[root@engarde ~]# apt-get update
[root@engarde ~]# apt-get source ruby   
Чтение списков пакетов... Готово   
Построение дерева зависимостей... Готово   
Необходимо загрузить 4324kB архивов исходного кода.   
Get:1 gdsn://updates.guardiandigital.com rapier/core ruby 1.8.4-1 (srpm) [4324kB]   
Загружено 4324kB за 5s (861kB/s)   
1:ruby ########################################### [100%]

На этом этапе исходные пакеты установлены в /usr/src/engarde/SOURCES, а файл спецификации находится в /usr/src/engarde/SPECS:

...   
Группа: Разработка/Языки   
Требуется: %{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   
...

Установите необходимые пакеты, показанные выше, с помощью 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

Отсюда вам следует проверить архитектуру вашей среды. Перейдите в директорию /usr/include и обратите внимание на символические ссылки ‘asm’:

[root@xen8 include]# cd /usr/include [root@xen8 include]# rm asm   
[root@xen8 include]# ln -s ../src/linux/include/asm-i386/ asm  

Чтобы собрать пакет, используйте rpmbuild (этот шаг может занять некоторое время):

[root@engarde SPECS]# rpmbuild -ba ruby.spec   
Выполнение(%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   
...   
Записано: /usr/src/engarde/SRPMS/ruby-1.8.4-1.src.rpm   
Записано: /usr/src/engarde/RPMS/i686/ruby-1.8.4-1.i686.rpm   
Записано: /usr/src/engarde/RPMS/i686/ruby-libs-1.8.4-1.i686.rpm   
Записано: /usr/src/engarde/RPMS/i686/ruby-devel-1.8.4-1.i686.rpm   
Записано: /usr/src/engarde/RPMS/i686/ruby-docs-1.8.4-1.i686.rpm   
...  

Конечно, мы хотели бы собрать самый последний пакет для Ruby. На момент написания этой статьи последняя версия 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' сохранен [4589394]

Перейдите в директорию файла спецификации и отредактируйте файл ruby.spec с помощью вашего любимого текстового редактора.

Release: 1   
на   
Release: 2

Затем мы изменяем версию Ruby с 1.8.4 на 1.8.6:

%doc %{name}-%{version}/ToDo   
%doc %{name}-%{version}/doc/NEWS   
%doc tmp-ruby-docs/ruby/*   
на это:   
%doc %{name}-%{version}/ToDo   
%doc %{name}-%{version}/doc/NEWS-1.8.0   
%doc tmp-ruby-docs/ruby/*

Этого должно быть достаточно для сборки исходного кода. Последнее, что вам следует сделать за всю вашу тяжелую работу, это указать себя как автора этого пакета - перейдите в конец файла спецификации и добавьте себя:

[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  
...   
Записано: /usr/src/engarde/SRPMS/ruby-1.8.6-2.src.rpm   
Записано: /usr/src/engarde/RPMS/i686/ruby-1.8.6-2.i686.rpm   
Записано: /usr/src/engarde/RPMS/i686/ruby-libs-1.8.6-2.i686.rpm   
Записано: /usr/src/engarde/RPMS/i686/ruby-devel-1.8.6-2.i686.rpm   
Записано: /usr/src/engarde/RPMS/i686/ruby-docs-1.8.6-2.i686.rpm   
...

Отличная работа! Вы только что собрали обновленный пакет для последней версии Ruby!

Ссылки

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.