安全服务器:使用EnGarde Secure Linux软件包构建
贡献者:Eckie Silapaswang和Guardian Digital的William Keys
介绍
虽然EnGarde Secure Linux不包括“开箱即用”的开发环境,但是通过Guardian数字安全网络提供了设置一个的所有工具。 本文档的目的是为您提供软件开发人员的指示,以建立自己的软件包构建环境。 在构建环境之后,我们将引导您构建一个面向流行的面向对象编程语言Ruby的软件包。
建立你的环境
你需要什么
- 一台机器做你的开发。 不建议在生产机器上执行此操作。 这台机器应该有点强大,或者你应该有很大的耐心。 本机应该安装最新版本的EnGarde Secure Linux社区。
- 提示如何构建RPM的。 那里有很多HOWTO。
一旦您拥有上述所有内容,您可以以root身份登录,转换到sysadm_r,并禁用SELinux:
[root@engarde ~]# newrole -r sysadm_r
Authenticating root.
Password:
[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)
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安装所需软件包的另一种方法是通过EnGarde WebTool:
Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be installed:
autoconf automake binutils gcc gcc-c++ glibc-devel kernel-headers
libstdc++-devel make patch rpm-build rpm-devel
0 upgraded, 12 newly installed, 0 removed and 6 not upgraded.
Need to get 48.3MB of archives.
After unpacking 154MB of additional disk space will be used.
...
Committing changes...
Preparing... ########################################### [100%]
1:binutils ########################################### [100%]
12:rpm-build ########################################### [100%]
Done.
此时,您已经安装了大部分的核心开发包。 当您构建与其他软件包链接的软件包时,您绝对必须安装其他软件包。 您可以通过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
Reading Package Lists... Done
Building Dependency Tree... Done
Need to get 4324kB of source archives.
Get:1 gdsn://updates.guardiandigital.com rapier/core ruby 1.8.4-1 (srpm) [4324kB]
Fetched 4324kB in 5s (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
Executing(%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
...
Wrote: /usr/src/engarde/SRPMS/ruby-1.8.4-1.src.rpm
Wrote: /usr/src/engarde/RPMS/i686/ruby-1.8.4-1.i686.rpm
Wrote: /usr/src/engarde/RPMS/i686/ruby-libs-1.8.4-1.i686.rpm
Wrote: /usr/src/engarde/RPMS/i686/ruby-devel-1.8.4-1.i686.rpm
Wrote: /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' saved [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/*
这应该足以构建源代码。 你应该做的所有努力工作的最后一件事情就是把自己放在一起,放在这个包里 - 去规格文件的末尾添加一下:
[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
...
Wrote: /usr/src/engarde/SRPMS/ruby-1.8.6-2.src.rpm
Wrote: /usr/src/engarde/RPMS/i686/ruby-1.8.6-2.i686.rpm
Wrote: /usr/src/engarde/RPMS/i686/ruby-libs-1.8.6-2.i686.rpm
Wrote: /usr/src/engarde/RPMS/i686/ruby-devel-1.8.6-2.i686.rpm
Wrote: /usr/src/engarde/RPMS/i686/ruby-docs-1.8.6-2.i686.rpm
...
做得好! 您刚刚为最新版本的Ruby构建了更新的软件包!