安全服务器:使用EnGarde安全Linux的包构建

安全服务器:使用EnGarde安全Linux的包构建 虽然EnGarde安全Linux不包括 开发环境

安全服务器:使用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

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.

安装所需软件包的另一种方法是通过EnGarde WebTool:

GDSN包管理
Guardian数字安全网络:软件包管理界面

此时,您已经安装了大部分的核心开发包。 当您构建与其他软件包链接的软件包时,您绝对必须安装其他软件包。 您可以通过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构建了更新的软件包!

参考文献