보안 서버 · 3 min read · Feb 07, 2026

보안 서버: EnGarde Secure Linux로 패키지 빌드하기

보안 서버: EnGarde Secure Linux로 패키지 빌드하기

기여자: Guardian Digital의 Eckie Silapaswang 및 William Keys

소개

비록 EnGarde Secure Linux가 “즉시 사용할 수 있는“ 개발 환경을 포함하고 있지는 않지만, 개발 환경을 설정하는 데 필요한 모든 도구는 Guardian Digital Secure Network를 통해 사용할 수 있습니다. 이 문서의 목적은 소프트웨어 개발자인 여러분에게 패키지 빌드 환경을 설정하는 방법을 제공하는 것입니다. 환경을 구축한 후, 인기 있는 객체 지향 프로그래밍 언어인 Ruby의 패키지를 빌드하는 방법을 안내하겠습니다.

환경 설정

필요한 것:

  • 개발을 할 기계. 프로덕션 기계에서 이 작업을 수행하는 것은 권장되지 않습니다. 이 기계는 다소 강력해야 하며, 인내심이 많이 필요할 수 있습니다. 이 기계에는 최신 버전의 EnGarde Secure Linux Community가 설치되어 있어야 합니다.
  • RPM 빌드 방법에 대한 힌트. 많은 HOWTO가 있습니다.

위의 모든 것을 갖추면 root로 로그인하고 sysadm_r로 전환한 후 SELinux를 비활성화해야 합니다:

[root@engarde ~]# newrole -r sysadm_r  
루트 인증 중입니다.   
비밀번호:
[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 Secure Network: 패키지 관리 인터페이스

이 시점에서 대부분의 핵심 개발 패키지가 설치되었습니다. 다른 패키지에 링크되는 패키지를 빌드할 때는 다른 -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]   
5초 만에 4324kB를 가져왔습니다 (861kB/s)   
1:ruby ########################################### [100%]

이 시점에서 패키지 소스는 /usr/src/engarde/SOURCES에 설치되고, spec 파일은 /usr/src/engarde/SPECS에 있습니다:

...   
Group: Development/Languages   
Requires: %{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]

spec 파일 디렉토리로 이동하고 좋아하는 텍스트 편집기로 ruby.spec 파일을 편집합니다.

Release: 1   
to   
Release: 2

그런 다음 Ruby 버전을 1.8.4에서 1.8.6으로 변경합니다:

%doc %{name}-%{version}/ToDo   
%doc %{name}-%{version}/doc/NEWS   
%doc tmp-ruby-docs/ruby/*   
to this:   
%doc %{name}-%{version}/ToDo   
%doc %{name}-%{version}/doc/NEWS-1.8.0   
%doc tmp-ruby-docs/ruby/*

이것으로 소스를 빌드하기에 충분합니다. 여러분의 수고에 대한 마지막 작업은 이 패키지를 만드는 데 기여한 자신에게 크레딧을 주는 것입니다 - spec 파일의 끝으로 가서 자신을 추가하세요:

[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

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.