- 论坛徽章:
- 0
|
我安装的时候遇到的主要问题是make test时出现[bdb-yes]error的问题,应该是bdb的库文件没有找到的问题,详见后文,希望大家把自己的经验都贡献出来!再次感谢marion和yjnet,本文就是在他们的基础上修改而成的。
需要安装的程序有:
openssl0.98e和cyrus-sasl-2.0.22 、BerkeleyDB
其中openssl0.98e和cyrus-sasl-2.0.22是为了支持ssl/tls和sasl
BerkeleyDB是后端数据库
一、安装openssl0.98e
1.1 下载相关软件包至/usr/local/src目录
http://www.openssl.org/source/openssl-0.9.8e.tar.gz
1.2 安装openssl
#cd /usr/local/src
#tar zxvf openssl-0.9.8e.tar.gz
#cd openssl-0.9.8e
#./config shared zlib
#make
#make test
#make install
mv /usr/bin/openssl /usr/bin/openssl.OFF
mv /usr/include/openssl /usr/include/openssl.OFF
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
1.3 配置库文件搜索路径
#echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
#ldconfig -v
1.4 查看openssl的版本号,以验正是否安装正确
#openssl version -a
OpenSSL 0.9.8e 17 Apr 2007
built on: Sat Mar 24 21:24:41 CST 2007
platform: linux-elf
options: bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) idea(int) blowfish(idx)
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DSHA1_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM
OPENSSLDIR: "/usr/local/ssl"
二、安装cyrus-sasl-2.0.22
2.1 下载cyrus-sasl-2.1.22到/usr/local/src
http://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.22.tar.gz
2.2 编译安装
#tar zxvf cyrus-sasl-2.1.22.tar.gz
#cd cyrus-sasl-2.1.22
# ./configure --prefix=/usr/local/sasl2 --enable-login --with-openssl=/usr/local/ssl
#make
#make install
2.3配置库文件搜索路径
#echo "/usr/local/sasl2/lib" >> /etc/ld.so.conf
#echo "/usr/local/sasl2/lib/sasl2" >> /etc/ld.so.conf
#ldconfig -v
2.4 把Redhat9.0原有的sasl库文件改名或删除,并将相关符号链接指向新安装SASL的库文件
#cd /usr/lib
# mv libsasl2.a libsasl2.a.OFF
# mv libsasl2.la libsasl2.la.OFF
# mv libsasl2.so libsasl2.so.OFF
# mv libsasl2.so.2.0.10 libsasl2.so.2.0.10.OFF
# mv lIbsasl2.so.2 libsasl2.so.2.OFF
# ln -s /usr/local/sasl2/lib/* /usr/lib
# ln -s /usr/local/sasl2/lib/sasl2 /usr/lib/sasl2
#ln -s /usr/local/sasl2/lib/libsasl2.so.2.0.22 /usr/lib/libsasl2.so.2
#ln -s /usr/local/sasl2/lib/libsasl2.so /usr/lib/libsasl2.so
2.5 创建运行时需要的目录并调试启动
#mkdir -pv /var/state/saslauthd
# ./saslauthd -a pam shadow -d
saslauthd[3533] :main : num_procs : 5
saslauthd[3533] :main : mech_option: NULL
saslauthd[3533] :main : run_path : /var/state/saslauthd
saslauthd[3533] :main : auth_mech : pam
saslauthd[3533] :ipc_init : using accept lock file: /var/state/saslauthd/mux.accept
saslauthd[3533] :detach_tty : master pid is: 0
saslauthd[3533] :ipc_init : listening on socket: /var/state/saslauthd/mux
saslauthd[3533] :main : using process model
saslauthd[3534] :get_accept_lock : acquired accept lock
saslauthd[3533] :have_baby : forked child: 3534
saslauthd[3533] :have_baby : forked child: 3535
saslauthd[3533] :have_baby : forked child: 3536
saslauthd[3533] :have_baby : forked child: 3537
2.6 启动并测试验正
#/usr/local/sasl2/sbin/saslauthd -a pam shadow
#/usr/local/sasl2/sbin/testsaslauthd -u root -p root的密码
0: OK "Success."
三、安装BerkeleyDB
3.1 下载相关软件至/usr/local/src 注意BerkeleyDB.4.7有问题,编译时会产生段错误,我们使用BerkeleyDB.4.6.21
安装步骤
1、由于openldap需要Berkeley DB来存放数据,所以需先安装BerkeleyDB.4.6.21,可到它的网站下载,网址:http://www.oracle.com/technology/software/products/berkeley-db/db/index.html
# tar -zxvf db-4.6.21.tar.gz
解完压后,会生成一个db-4.6.21目录,进行该目录下的build_unix目录。执行以下命令进行配置安装。
#env CC=gcc CCC=g++ ../dist/configure 注:对于gcc或g++编译器要加上env CC=gcc CCC=g++
# make
# make install
也是按linux源码安装的三步曲完成,没有什么好说的了。该软件默认是安装在/usr/local/BerkeleyDB.4.6目录下。安装完成后,要把/usr/local/BerkeleyDB.4.6/lib的库路径加到/etc/ld.so.conf文件内,添加完成后执行一次 ldconfig,使用配置文件生效。这样编译openldap时才能找到相应的库文件。这样资料库就安装完成了,接下来可以安装openldap了。
ld.so.conf是什么东西?它就是系统动态链接库的配置文件。此文件内,存放着可被LINUX共享的动态链接库所在目录的名字(系统目录/lib, /usr/lib除外),各个目录名间以空白字符(空格,换行等)或冒号或逗号分隔。一般的LINUX发行版中,此文件均含一个共享目录 /usr/X11R6/lib,为X window窗口系统的动态链接库所在的目录。 ldconfig是它的管理命令,具体操作方法可查询man手册。
如果有问题的话就将/usr/local/BerkeleyDB.4.6/lib/下的库文件拷贝到/usr/lib下
四、安装openldap 安装的是openldap-2.4.10
1)env CPPFLAGS="-I/usr/local/BerkeleyDB.4.6/include -I/usr/local/sasl2/include" LDFLAGS="-L/usr/local/BerkeleyDB.4.6/lib -L/usr/local/sasl2/lib -L/usr/local/sasl2/lib/sasl2" ./configure --prefix=/usr/local/openldap --sysconfdir=/etc/openldap --enable-bdb
--prefix=/usr/local/openldap将安装后的程序放到/usr/local/openldap路径下,方便删除或管理
--sysconfdir=/etc/openldap是将程序的配置都放到/etc/openldap路径下
2)make depend
3)make
4)make test
注意,在这一步的时候,如果有问题,出现[bdn-yes]error的时候可能是没有将BerkeleyDB的库文件拷到/usr/lib路径下,要将/usr/local/BerkeleyDB.4.6/lib/下的库文件拷贝到/usr/lib下
这个问题浪费了我很长时间。
5)make install
6)初始化BaseDN
配置slapd.conf,配置BaseDN的值,
放入user.ldif
执行:ldapadd -D "cn=root,dc=daaone,dc=com" -w111111 -x -f user.ldif
/****************************************************
dn: dc=daaone,dc=com
objectClass: dcObject
objectClass: organization
o: Personal Test
dc: daaone
# Magager DN is root
dn: cn=root,dc=daaone,dc=com
objectClass: organizationalRole
cn: root
****************************************************/
7)添加数据:
ldapadd -D "cn=root,dc=daaone,dc=com" -w111111 -x -f nnew.ldif
ldapsearch
注: 如果没有-b选项制定查询的基点,则查询的是ldap.conf里面定义的BASE项为其查询基点
./ldapsearch -h 192.168.1.11-D "cn=root,dc=daaone,dc=com" -w 111111 -x -b "dc=daaone,dc=com" objectclass=person cn
./ldapsearch -h 192.168.1.11-D test -w 222222 -x -b "dc=daaone,dc=com" objectclass=person cn
不需绑定的查询:
./ldapsearch -h192.168.1.11-x -b "dc=daaone,dc=com" objectclass=person cn
9)ldappasswd
./ldappasswd -D"cn=root,dc=daaone,dc=com" -w111111 -x -s222222 "cn=test,cn=users,dc=daaone,dc=com"
另:安装失败的时候,可以使用make veryclean 和make uninstall进行删除安装,具体参见各个程序的configure文件 |
|