Desenvolvimento · 4 min read · Feb 07, 2026
Servidores Seguros: Construção de Pacotes com EnGarde Secure Linux
Servidores Seguros: Construção de Pacotes com EnGarde Secure Linux
Contribuidores: Eckie Silapaswang e William Keys da Guardian Digital
Introdução
Embora EnGarde Secure Linux não inclua um ambiente de desenvolvimento “pronto para uso”, todas as ferramentas para configurar um estão disponíveis através da Rede Segura da Guardian Digital. O objetivo deste documento é fornecer a você, o desenvolvedor de software, as instruções para configurar um ambiente de construção de pacotes próprio. Após construir o ambiente, iremos guiá-lo na construção de um pacote para a popular linguagem de programação orientada a objetos, Ruby.
Configurando Seu Ambiente
O que você precisará:
- Uma máquina para realizar seu desenvolvimento. Não é recomendado fazer isso em uma máquina de produção. Esta máquina deve ser um pouco poderosa, ou você deve ter muita paciência. Esta máquina deve ter a versão mais recente do EnGarde Secure Linux Community instalada.
- Dicas sobre como construir RPM’s. Existem muitos HOWTO’s disponíveis.
Uma vez que você tenha tudo isso, você pode fazer login como root, mudar para sysadm_r e desabilitar o SELinux:
[root@engarde ~]# newrole -r sysadm_r
Autenticando root.
Senha:[root@engarde ~]# setenforce 0Em seguida, você deve instalar os seguintes pacotes:
[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... Feito
Building Dependency Tree... Feito[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... Feito
Building Dependency Tree... Feito
Os seguintes NOVOS pacotes serão instalados:
autoconf automake binutils gcc gcc-c++ glibc-devel kernel-headers
libstdc++-devel make patch rpm-build rpm-devel
0 atualizado, 12 recém-instalados, 0 removidos e 6 não atualizados.
Necessário baixar 48.3MB de arquivos.
Após descompactar, 154MB de espaço em disco adicional serão usados.
...
Comitando mudanças...
Preparando... ########################################### [100%]
1:binutils ########################################### [100%]
12:rpm-build ########################################### [100%]
Feito.A outra maneira de instalar os pacotes necessários é através da EnGarde WebTool:

Rede Segura da Guardian Digital: Interface de Gerenciamento de Pacotes
Neste ponto, você tem a maioria dos pacotes de desenvolvimento essenciais instalados. À medida que você constrói pacotes que se vinculam a outros pacotes, você definitivamente terá que instalar outros pacotes -devel. Você pode instalar os pacotes via WebTool ou pela linha de comando usando apt-get.
[root@engarde ~]# echo "rpm-src gdsn://updates.guardiandigital.com/GDSNROOT rapier core" >> /etc/apt/sources.listEm seguida, execute apt-get update:
[root@engarde ~]# apt-get update[root@engarde ~]# apt-get source ruby
Reading Package Lists... Feito
Building Dependency Tree... Feito
Necessário baixar 4324kB de arquivos fonte.
Get:1 gdsn://updates.guardiandigital.com rapier/core ruby 1.8.4-1 (srpm) [4324kB]
Fetched 4324kB in 5s (861kB/s)
1:ruby ########################################### [100%]Neste ponto, os fontes do pacote estão instalados em /usr/src/engarde/SOURCES, e o arquivo spec está em /usr/src/engarde/SPECS:
...
Grupo: Desenvolvimento/Linguagens
Requer: %{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
...Instale os pacotes necessários mostrados acima 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-develA partir daqui, você deve verificar a arquitetura do seu ambiente. Vá para o diretório /usr/include e observe os links 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 o pacote, use rpmbuild (esta etapa pode demorar um pouco):
[root@engarde SPECS]# rpmbuild -ba ruby.spec
Executando(%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
...
Escreveu: /usr/src/engarde/SRPMS/ruby-1.8.4-1.src.rpm
Escreveu: /usr/src/engarde/RPMS/i686/ruby-1.8.4-1.i686.rpm
Escreveu: /usr/src/engarde/RPMS/i686/ruby-libs-1.8.4-1.i686.rpm
Escreveu: /usr/src/engarde/RPMS/i686/ruby-devel-1.8.4-1.i686.rpm
Escreveu: /usr/src/engarde/RPMS/i686/ruby-docs-1.8.4-1.i686.rpm
... Claro, gostaríamos de construir o pacote mais recente possível para Ruby. No momento deste artigo, a versão mais recente do 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' salvo [4589394]Mude para o diretório do arquivo spec e edite o arquivo ruby.spec com seu editor de texto favorito.
Release: 1
para
Release: 2Em seguida, mudamos a versão do Ruby de 1.8.4 para 1.8.6:
%doc %{name}-%{version}/ToDo
%doc %{name}-%{version}/doc/NEWS
%doc tmp-ruby-docs/ruby/*
para isso:
%doc %{name}-%{version}/ToDo
%doc %{name}-%{version}/doc/NEWS-1.8.0
%doc tmp-ruby-docs/ruby/*Isso deve ser suficiente para construir a fonte. Uma última coisa que você deve fazer por todo o seu trabalho duro é se creditar por montar este pacote - vá até o final do arquivo spec e adicione seu nome:
[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
...
Escreveu: /usr/src/engarde/SRPMS/ruby-1.8.6-2.src.rpm
Escreveu: /usr/src/engarde/RPMS/i686/ruby-1.8.6-2.i686.rpm
Escreveu: /usr/src/engarde/RPMS/i686/ruby-libs-1.8.6-2.i686.rpm
Escreveu: /usr/src/engarde/RPMS/i686/ruby-devel-1.8.6-2.i686.rpm
Escreveu: /usr/src/engarde/RPMS/i686/ruby-docs-1.8.6-2.i686.rpm
...Ótimo trabalho! Você acabou de construir um pacote atualizado para a versão mais recente do Ruby!
Referências
- Empacotando software com 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
- Maximum RPM - http://www.rpm.org/max-rpm/
- Linguagem de Programação Ruby - http://www.ruby-lang.org/
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.