Desarrollo de software · 4 min read · Feb 07, 2026
Servidores Seguros: Construcción de Paquetes con EnGarde Secure Linux
Servidores Seguros: Construcción de Paquetes con EnGarde Secure Linux
Contribuidores: Eckie Silapaswang y William Keys de Guardian Digital
Introducción
Aunque EnGarde Secure Linux no incluye un entorno de desarrollo “listo para usar”, todas las herramientas para configurarlo están disponibles a través de la Red Segura de Guardian Digital. El propósito de este documento es proporcionarte, el desarrollador de software, las instrucciones para configurar tu propio entorno de construcción de paquetes. Después de construir el entorno, te guiaremos a través de la construcción de un paquete para el popular lenguaje de programación orientado a objetos, Ruby.
Configurando Tu Entorno
Lo que necesitarás:
- Una máquina para hacer tu desarrollo. No se recomienda hacer esto en una máquina de producción. Esta máquina debe ser algo potente, o deberías tener mucha paciencia. Esta máquina debe tener instalada la última versión de EnGarde Secure Linux Community.
- Pistas sobre cómo construir RPM’s. Hay muchos HOWTO’s disponibles.
Una vez que tengas todo lo anterior, puedes iniciar sesión como root, cambiar a sysadm_r y deshabilitar SELinux:
[root@engarde ~]# newrole -r sysadm_r
Autenticando root.
Contraseña:[root@engarde ~]# setenforce 0A continuación, debes instalar los siguientes paquetes:
[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
Los siguientes NUEVOS paquetes serán instalados:
autoconf automake binutils gcc gcc-c++ glibc-devel kernel-headers
libstdc++-devel make patch rpm-build rpm-devel
0 actualizados, 12 recién instalados, 0 eliminados y 6 no actualizados.
Necesita obtener 48.3MB de archivos.
Después de descomprimir, se utilizarán 154MB de espacio adicional en disco.
...
Confirmando cambios...
Preparando... ########################################### [100%]
1:binutils ########################################### [100%]
12:rpm-build ########################################### [100%]
Hecho.La otra forma de instalar los paquetes necesarios es a través de la EnGarde WebTool:

Red Segura de Guardian Digital: Interfaz de Gestión de Paquetes
En este punto, tienes la mayoría de los paquetes de desarrollo centrales instalados. A medida que construyas paquetes que se vinculan a otros paquetes, definitivamente tendrás que instalar otros paquetes -devel. Puedes instalar los paquetes a través de WebTool o de la línea de comandos usando apt-get.
[root@engarde ~]# echo "rpm-src gdsn://updates.guardiandigital.com/GDSNROOT rapier core" >> /etc/apt/sources.listLuego ejecuta apt-get update:
[root@engarde ~]# apt-get update[root@engarde ~]# apt-get source ruby
Reading Package Lists... Done
Building Dependency Tree... Done
Necesita obtener 4324kB de archivos fuente.
Get:1 gdsn://updates.guardiandigital.com rapier/core ruby 1.8.4-1 (srpm) [4324kB]
Fetched 4324kB in 5s (861kB/s)
1:ruby ########################################### [100%]En este punto, las fuentes del paquete están instaladas en /usr/src/engarde/SOURCES, y el archivo spec está en /usr/src/engarde/SPECS:
...
Grupo: Desarrollo/Lenguajes
Requiere: %{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
...Instala los paquetes requeridos que se muestran arriba usando 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-develDesde aquí, deberías verificar la arquitectura de tu entorno. Ve al directorio /usr/include y nota los enlaces simbólicos ‘asm’:
[root@xen8 include]# cd /usr/include [root@xen8 include]# rm asm
[root@xen8 include]# ln -s ../src/linux/include/asm-i386/ asm Para construir el paquete, usa rpmbuild (este paso puede tardar un tiempo):
[root@engarde SPECS]# rpmbuild -ba ruby.spec
Ejecutando(%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
...
Escrito: /usr/src/engarde/SRPMS/ruby-1.8.4-1.src.rpm
Escrito: /usr/src/engarde/RPMS/i686/ruby-1.8.4-1.i686.rpm
Escrito: /usr/src/engarde/RPMS/i686/ruby-libs-1.8.4-1.i686.rpm
Escrito: /usr/src/engarde/RPMS/i686/ruby-devel-1.8.4-1.i686.rpm
Escrito: /usr/src/engarde/RPMS/i686/ruby-docs-1.8.4-1.i686.rpm
... Por supuesto, nos gustaría construir el paquete más reciente posible para Ruby. En el momento de este artículo, la última versión de Ruby es 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' guardado [4589394]Cambia al directorio del archivo spec y edita el archivo ruby.spec con tu editor de texto favorito.
Release: 1
para
Release: 2Luego cambiamos la versión de Ruby de 1.8.4 a 1.8.6:
%doc %{name}-%{version}/ToDo
%doc %{name}-%{version}/doc/NEWS
%doc tmp-ruby-docs/ruby/*
para esto:
%doc %{name}-%{version}/ToDo
%doc %{name}-%{version}/doc/NEWS-1.8.0
%doc tmp-ruby-docs/ruby/*Esto debería ser suficiente para construir la fuente. Una última cosa que deberías hacer por todo tu arduo trabajo es darte crédito por armar este paquete: ve al final del archivo spec y agrégate:
[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
...
Escrito: /usr/src/engarde/SRPMS/ruby-1.8.6-2.src.rpm
Escrito: /usr/src/engarde/RPMS/i686/ruby-1.8.6-2.i686.rpm
Escrito: /usr/src/engarde/RPMS/i686/ruby-libs-1.8.6-2.i686.rpm
Escrito: /usr/src/engarde/RPMS/i686/ruby-devel-1.8.6-2.i686.rpm
Escrito: /usr/src/engarde/RPMS/i686/ruby-docs-1.8.6-2.i686.rpm
...¡Gran trabajo! ¡Has construido un paquete actualizado para la última versión de Ruby!
Referencias
- Empaquetando software con RPM, Partes 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 Máximo - http://www.rpm.org/max-rpm/
- Lenguaje de Programación Ruby - http://www.ruby-lang.org/
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.