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 0

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

Gestión de Paquetes GDSN

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

Luego 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-devel

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

Luego 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

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.