OpenSSH 只依赖于该软件包的加密库(libcrypto),而带有 HTTPS 支持的 Apache 则依赖于该软件包的加密库和 SSL/TLS 库(libssl)。因此,如果你不打算使用 HTTPS 的话,可以只安装加密库(no-ssl no-tls);更多介绍可以查看 README 文件的”OVERVIEW”部分。由于本文将安装一个支持 HTTPS 的 Apache 服务器,所以这两部分库都安装了。

如果你想了解更多信息,可以读一读《OpenSSL-0.9.8g 安装与配置指南》。

依赖于OpenSSL的包都对OpenSSL的版本很敏感,所以即使将来只把OpenSSL进行了很小的版本升级,也建议你将所有依赖于OpenSSL的包重新编译一遍。

R=/root/openssl-0.9.8g/ && mkdir $R/{lib,root} &&
tar -xf openssl-0.9.8g.tar.gz && cd openssl-0.9.8g &&
sed -r -i 's:/bin/(cat|cp|mkdir|mv|rm):\1:g' crypto/threads/*.sh demos/ssltest-ecc/*.sh test/* util/*.sh util/pl/*.pl &&
./Configure  linux-elf  --prefix=/usr --openssldir=/etc no-zlib no-zlib-dynamic no-threads shared no-asm no-sse2 no-hw no-gmp no-rfc3779 no-krb5  \
no-md2 no-md4 no-mdc2  no-rc2 no-rc5 no-idea no-camellia  no-ec no-ecdsa no-ecdh  no-store  \
-DSSL_FORBID_ENULL -DDEVRANDOM='"/dev/urandom"' `echo $CFLAGS` &&
find . -name "Makefile*" -exec sed -r -i -e"s|^(SHARED_)?LDFLAGS=|& $LDFLAGS |" {} \; &&
make depend && make && make test &&
make install_sw && make install_sw INSTALL_PREFIX=$R &&
rm ~/.rnd {,$R}/etc/misc/ &&
cp $SRC/openssl.cnf   /etc/ && cp   /usr/lib/lib{crypto,ssl}.so.0.9.8   /lib/ &&
cp $SRC/openssl.cnf $R/etc/ && cp $R/usr/lib/lib{crypto,ssl}.so.0.9.8 $R/lib/ &&
cd $SRC && rm */ &&
echo '40-openssl' >> $SRC/build.log && sync &&OpenSSH

详细的安装信息可以从 configure INSTALL README.privsep 文件中获取,测试相关的信息可以从 regress/README.regress 文件中获取。TEST_SSH_QUIET=yes表示抑制测试成功的输出信息(仅输出失败信息),将TEST_SSH_TRACE设为”yes”可以输出详细且罗嗦的测试信息。TEST_SSH_PORT将用于测试的TCP监听端口改为非22以避免可能的端口冲突。

如果 $PATH 中不包含”scp”,那么 multiplex scp 测试将会失败,因此这里在测试前先建立一个符号链接。[提示]测试套件要求 /bin 目录下至少有两个”l”打头的文件,否则 sftp-badcmds 等测试会失败,诡异的要求!

更多有关OpenSSH的知识可以阅读《OpenSSH 安装指南》,以及一系列的《OpenSSH 中文手册》。

R=/root/openssh-4.7p1/ && mkdir {,$R}/share/empty $R/bin $R/var/log &&
tar -xf openssh-4.7p1.tar.gz && cd openssh-4.7p1 &&
sed -i 's:/bin/ls:/usr/bin/ls:g' regress/*.sh &&
sed -i 's:/bin/passwd:passwd:g' openbsd-compat/bsd-cray.c &&
sed -i 's:/bin/false:false:g' configure{.ac,} &&
chown 0:0 /share/empty && chmod 1000 /share/empty &&
./configure --prefix=/usr --sysconfdir=/etc/ssh --sbindir=/usr/bin --enable-largefile --disable-etc-default-login --disable-lastlog --disable-utmp --disable-utmpx --disable-wtmp --disable-wtmpx --enable-libutil --disable-pututline --disable-pututxline --without-rpath --without-Werror --without-solaris-contracts --without-osfsia --with-zlib=/lib --with-zlib-version-check --without-skey --without-tcp-wrappers --without-libedit --without-audit --with-ssl-dir=/lib --with-openssl-header-check --without-ssl-engine --without-pam --with-random=/dev/urandom --without-rand-helper --without-prngd-port --without-prngd-socket --with-entropy-timeout=5000 --with-privsep-user=sshd --with-privsep-path=/share/empty --without-sectok --without-opensc --without-selinux --without-kerberos5 --without-xauth --with-mantype=man --with-md5-passwords --without-shadow --with-ipaddr-display --with-default-path=/bin:/usr/bin --with-superuser-path=/bin:/usr/bin:/sbin:/usr/sbin --without-4in6 --without-bsd-auth --with-pid-dir=/var/run --without-lastlog &&
make && ln -sf `pwd`/scp /usr/bin/ && touch /bin/ldummy{tjhftgs,zdeufsd} &&
make tests TEST_SSH_QUIET=yes TEST_SSH_PORT=967 &&
rm /usr/bin/scp /bin/ldummy{tjhftgs,zdeufsd} &&
make install && make install DESTDIR=$R &&
rm ~/.ssh {,$R}/etc/ssh/ssh* &&
ssh-keygen -b 4096 -t rsa -N "" -f /etc/ssh/ssh_host_rsa_key &&
chmod 000 /etc/ssh/ssh_host_rsa_key && cp /etc/ssh/ssh_host_rsa_key* $R/etc/ssh/ &&
cp $SRC/sshd_config   /etc/ssh/ && mv   /usr/{libexec/sftp-server,bin/sshd}   /bin/ &&
cp $SRC/sshd_config $R/etc/ssh/ && mv $R/usr/{libexec/sftp-server,bin/sshd} $R/bin/ &&
touch {,$R}/var/log/sshd.log &&
cd $SRC && rm */ &&
echo '41-openssh' >> $SRC/build.log && sync &&PostgreSQL

configure脚本的主要任务是生成 src/Makefile.global 文件,阅读它可以得到不少信息。更多安装信息可以查看《PostgreSQL 8.2.3 中文文档》,这里就不多罗嗦了。该文档位于PostgreSQL 中文之家。此外,本文还安装了非常有用的加密模块。要了解如何添加模块,可以阅读 contrib/README 来选择你想要的模块,然后进入相应的子目录阅读 README 文件。

此外,contrib/start-scripts 目录下有非常棒的启动脚本示范。由于对咱中国人来说,只需要utf8与gbk的编码转换即可,为了”减负”,这里删除了许多在initdb时默认创建的转换规则,仅保留了utf8与gbk之间的转换规则。此外,加载库的搜索路径也被调整了。[TODO]测试-fprefetch-loop-arrays的效果。

R=/root/postgresql-8.3.0/ && mkdir $R/dev/shm/pg_socket {,$R}/{bin,{etc,lib,var/log}/postgresql} {,$R}/share/postgresql/{timezone,timezonesets} &&
tar -xf postgresql-8.3.0.tar.bz2 && cd postgresql-8.3.0 &&
sed -i 's:/bin/pwd:pwd:g' configure{.in,} &&
LDFLAGS_SL="$LDFLAGS" \
./configure --prefix=/usr --sbindir=/usr/bin --enable-integer-datetimes --disable-nls --enable-shared --disable-rpath --enable-spinlocks --disable-debug --disable-profiling --disable-dtrace --disable-cassert --disable-thread-safety --disable-thread-safety-force --enable-largefile --without-docdir --with-pgport=5432 --without-tcl --without-perl --without-python --without-gssapi --without-krb5 --without-pam --without-ldap --without-bonjour --without-openssl --with-readline --without-ossp-uuid --without-libxml --without-libxslt --with-zlib &&
make && chown -R pgsql . && su -c'make check' -s/bin/bash pgsql &&
make install && make install DESTDIR=$R &&
sed -i -e'/gbk/!d' -e's|$libdir/utf8_and_gbk|utf8_and_gbk.so|' {,$R}/usr/share/postgresql/conversion_create.sql &&
make distclean &&
LDFLAGS_SL="$LDFLAGS" \
./configure --prefix=/usr --sbindir=/usr/bin --enable-integer-datetimes --disable-nls --enable-shared --disable-rpath --enable-spinlocks --disable-debug --disable-profiling --disable-dtrace --disable-cassert --disable-thread-safety --disable-thread-safety-force --enable-largefile --without-docdir --with-pgport=5432 --without-tcl --without-perl --without-python --without-gssapi --without-krb5 --without-pam --without-ldap --without-bonjour --with-openssl --without-readline --without-ossp-uuid --without-libxml --without-libxslt --without-zlib &&
cd contrib/pgcrypto && make && make install && make install DESTDIR=$R && cd ../../ &&
sed -i 's|$libdir/pgcrypto|pgcrypto.so|' {,$R}/usr/share/postgresql/contrib/pgcrypto.sql &&
cp   /usr/bin/postgres   /bin/ && cp   /usr/lib/libpq.so.5   /lib/ && cp   /usr/lib/postgresql/{utf8_and_gbk,pgcrypto}.so   /lib/postgresql/ &&
cp $R/usr/bin/postgres $R/bin/ && cp $R/usr/lib/libpq.so.5 $R/lib/ && cp $R/usr/lib/postgresql/{utf8_and_gbk,pgcrypto}.so $R/lib/postgresql/ &&
cp   /usr/share/postgresql/timezone/UTC   /share/postgresql/timezone/ && echo 'UTC 0' >   /share/postgresql/timezonesets/Default &&
cp $R/usr/share/postgresql/timezone/UTC $R/share/postgresql/timezone/ && echo 'UTC 0' > $R/share/postgresql/timezonesets/Default &&
mkdir -m 700 /data/tmp && chown pgsql /data/tmp && sync &&
su -c'initdb -Atrust -D/data/tmp -EUTF-8 --locale=C -Upgsql &&
pg_ctl start -p/bin/postgres -w -D/data/tmp &&
make -C contrib/pgcrypto installcheck &&
pg_ctl stop -D/data/tmp -msmart' -s/bin/bash pgsql &&
cp $SRC/postgresql.conf   /etc/postgresql/ &&
cp $SRC/postgresql.conf $R/etc/postgresql/ &&
echo '' | tee {,$R}/etc/postgresql/pg_ident.conf &&
echo 'local all all md5
hostnossl all all 127.0.0.1/32 md5' | tee {,$R}/etc/postgresql/pg_hba.conf &&
cd $SRC && rm */ &&
echo '42-postgresql' >> $SRC/build.log && sync &&Apache

详细的安装信息可以查看《Apache 2.2 中文手册》,这里就不详细解说了。


相关内容

    暂无相关文章