Серверы · 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:

Защищенная сеть 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!
Ссылки
- Упаковка программного обеспечения с RPM, Части 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
- Максимум RPM - http://www.rpm.org/max-rpm/
- Язык программирования Ruby - http://www.ruby-lang.org/
Get new posts in your inbox
No spam. Unsubscribe anytime.