보안 서버 · 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을 사용하는 것입니다:

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에 대한 업데이트된 패키지를 방금 빌드했습니다!
참고 문헌
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.