sudo安装错误/usr/bin/ld: cannot find -lpam

centos 5.1版本为
[quote]# uname -a
Linux rztest 2.6.18-53.el5 #1 SMP Mon Nov 12 02:22:48 EST 2007 i686 i686 i386 GNU/Linux[/quote]

sudo编译包版本为sudo-1.7.2p6
报如下错误
[quote]#make install
...
gcc -c -I. -I. -O2 -D_GNU_SOURCE -D_PATH_SUDOERS=\"/etc/sudoers\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 ./closefrom.c
gcc -o sudo gram.o alias.o alloc.o defaults.o error.o list.o match.o toke.o redblack.o zero_bytes.o sudo_auth.o passwd.o audit.o check.o env.o getspwuid.o gettime.o goodpath.o fileops.o find_path.o interfaces.o lbuf.o logging.o parse.o pwutil.o set_perms.o sudo.o sudo_edit.o sudo_nss.o term.o tgetpass.o strlcpy.o strlcat.o closefrom.o -lpam -ldl -lcrypt
[color=red]/usr/bin/ld: cannot find -lpam[/color]
collect2: ld returned 1 exit status
make: *** [sudo] Error 1[/quote]

同时比较make正确时的日志:
[quote]gcc -c -I. -I. -O2 -D_GNU_SOURCE -D_PATH_SUDOERS=\"/etc/sudoers\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 ./closefrom.c
gcc -o sudo gram.o alias.o alloc.o defaults.o error.o list.o match.o toke.o redblack.o zero_bytes.o sudo_auth.o pam.o audit.o check.o env.o getspwuid.o gettime.o goodpath.o fileops.o find_path.o interfaces.o lbuf.o logging.o parse.o pwutil.o set_perms.o sudo.o sudo_edit.o sudo_nss.o term.o tgetpass.o strlcpy.o strlcat.o closefrom.o -lpam -ldl
gcc -c -I. -I. -O2 -D_GNU_SOURCE -D_PATH_SUDOERS=\"/etc/sudoers\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 ./visudo.c
gcc -o visudo gram.o alias.o alloc.o defaults.o error.o list.o match.o toke.o redblack.o zero_bytes.o visudo.o fileops.o gettime.o goodpath.o find_path.o pwutil.o strlcpy.o strlcat.o closefrom.o
/bin/sh ./libtool --mode=compile gcc -c -I. -I. -O2 -D_GNU_SOURCE -D_PATH_SUDOERS=\"/etc/sudoers\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 ./sudo_noexec.c
mkdir .libs
gcc -c -I. -I. -O2 -D_GNU_SOURCE -D_PATH_SUDOERS=\"/etc/sudoers\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 ./sudo_noexec.c -fPIC -DPIC -o .libs/sudo_noexec.o
/bin/sh ./libtool --mode=link gcc -o sudo_noexec.la sudo_noexec.lo -avoid-version -rpath /usr/local/libexec
gcc -shared .libs/sudo_noexec.o -Wl,-soname -Wl,sudo_noexec.so -o .libs/sudo_noexec.so
creating sudo_noexec.la
(cd .libs && rm -f sudo_noexec.la && ln -s ../sudo_noexec.la sudo_noexec.la)[/quote]

其中/usr/bin/ld: cannot find -lpam引起了我的注意,根据经验系统中很可能少包,网上搜索也没有很好的解决方法。
进一步比较两者之间的configure日志
[quote]checking for main in -ldl... yes
checking security/pam_appl.h usability... no
checking security/pam_appl.h presence... no
checking for security/pam_appl.h... no
checking pam/pam_appl.h usability... no
checking pam/pam_appl.h presence... no
checking for pam/pam_appl.h... no
checking for library containing crypt... -lcrypt
checking for getspnam... yes
checking for log file location... /var/log/sudo.log
checking for timestamp file location... /var/run/sudo
[color=red]configure: using the following authentication methods: passwd[/color]
configure: creating ./config.status
config.status: creating Makefile
config.status: creating sudo.man
config.status: creating visudo.man
config.status: creating sudoers.man
config.status: creating sudoers.ldap.man
config.status: creating sudo_usage.h
config.status: creating config.h
config.status: creating pathnames.h[/quote]
从以上可以看出利用 passwd验证,而make正确得系统采用pam认证。
[quote]checking for main in -ldl... yes
checking security/pam_appl.h usability... yes
checking security/pam_appl.h presence... yes
checking for security/pam_appl.h... yes
checking whether to use PAM session support... yes
checking for log file location... /var/log/sudo.log
checking for timestamp file location... /var/run/sudo
configure: using the following authentication methods: pam
configure: creating ./config.status
config.status: creating Makefile
config.status: creating sudo.man
config.status: creating visudo.man
config.status: creating sudoers.man
config.status: creating sudoers.ldap.man
config.status: creating sudo_usage.h
config.status: creating config.h
config.status: creating pathnames.h
[color=red]configure: You will need to customize sample.pam and install it as /etc/pam.d/sudo[/color][/quote]
到这里,可以比较明显的看出系统很可能缺少pam包,比较系统间的rpm包,可以明显看到,能正确安装的系统多出了pam-devel-0.99.6.2-3.26.el5。
[quote]# rpm -qa | grep pam
pam_smb-1.1.7-7.2.1
pam_passwdqc-1.0.2-1.2.2
pam-0.99.6.2-3.26.el5
spamassassin-3.1.9-1.el5
pam_ccreds-3-5
pam_pkcs11-0.5.3-23
[color=red]pam-devel-0.99.6.2-3.26.el5[/color]
pam_krb5-2.2.14-1[/quote]

[quote]# rpm -qa|grep pam
pam_smb-1.1.7-7.2.1
pam_krb5-2.2.14-1
pam_passwdqc-1.0.2-1.2.2
pam-0.99.6.2-3.26.el5
spamassassin-3.1.9-1.el5
pam_pkcs11-0.5.3-23
pam_ccreds-3-5[/quote]

安装pam-devel rpm包
[quote]# yum install pam-devel
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for pam-devel to pack into transaction set.
pam-devel-0.99.6.2-6.el5_ 100% |=========================| 60 kB 00:00
---> Package pam-devel.i386 0:0.99.6.2-6.el5_4.1 set to be updated
--> Running transaction check
--> Processing Dependency: pam = 0.99.6.2-6.el5_4.1 for package: pam-devel
--> Restarting Dependency Resolution with new changes.
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for pam to pack into transaction set.
pam-0.99.6.2-6.el5_4.1.i3 100% |=========================| 87 kB 00:01
---> Package pam.i386 0:0.99.6.2-6.el5_4.1 set to be updated
--> Running transaction check
--> Processing Dependency: audit-libs >= 1.6.5 for package: pam
--> Processing Dependency: glibc > 2.5-19 for package: pam
--> Restarting Dependency Resolution with new changes.
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for audit-libs to pack into transaction set.
audit-libs-1.7.13-2.el5.i 100% |=========================| 16 kB 00:01
---> Package audit-libs.i386 0:1.7.13-2.el5 set to be updated
---> Downloading header for glibc to pack into transaction set.
glibc-2.5-42.el5_4.3.i686 100% |=========================| 150 kB 00:09
---> Package glibc.i686 0:2.5-42.el5_4.3 set to be updated
--> Running transaction check
--> Processing Dependency: glibc = 2.5-18 for package: glibc-headers
--> Processing Dependency: audit-libs = 1.5.5-7.el5 for package: audit
--> Processing Dependency: audit-libs = 1.5.5-7.el5 for package: audit-libs-python
--> Processing Dependency: glibc-common = 2.5-42.el5_4.3 for package: glibc
--> Processing Dependency: glibc = 2.5-18 for package: glibc-devel
--> Restarting Dependency Resolution with new changes.
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for glibc-headers to pack into transaction set.
glibc-headers-2.5-42.el5_ 100% |=========================| 148 kB 00:04
---> Package glibc-headers.i386 0:2.5-42.el5_4.3 set to be updated
---> Downloading header for audit to pack into transaction set.
audit-1.7.13-2.el5.i386.r 100% |=========================| 21 kB 00:01
---> Package audit.i386 0:1.7.13-2.el5 set to be updated
---> Downloading header for glibc-devel to pack into transaction set.
glibc-devel-2.5-42.el5_4. 100% |=========================| 115 kB 00:01
---> Package glibc-devel.i386 0:2.5-42.el5_4.3 set to be updated
---> Downloading header for audit-libs-python to pack into transaction set.
audit-libs-python-1.7.13- 100% |=========================| 15 kB 00:00
---> Package audit-libs-python.i386 0:1.7.13-2.el5 set to be updated
---> Downloading header for glibc-common to pack into transaction set.
glibc-common-2.5-42.el5_4 100% |=========================| 729 kB 08:58
---> Package glibc-common.i386 0:2.5-42.el5_4.3 set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
pam-devel i386 0.99.6.2-6.el5_4.1 updates 187 k
Updating for dependencies:
audit i386 1.7.13-2.el5 base 379 k
audit-libs i386 1.7.13-2.el5 base 80 k
audit-libs-python i386 1.7.13-2.el5 base 78 k
glibc i686 2.5-42.el5_4.3 updates 5.2 M
glibc-common i386 2.5-42.el5_4.3 updates 16 M
glibc-devel i386 2.5-42.el5_4.3 updates 2.0 M
glibc-headers i386 2.5-42.el5_4.3 updates 601 k
pam i386 0.99.6.2-6.el5_4.1 updates 976 k

Transaction Summary
=============================================================================
Install 1 Package(s)
Update 8 Package(s)
Remove 0 Package(s)

Total download size: 26 M
Is this ok [y/N]: y
Downloading Packages:
(1/9): glibc-2.5-42.el5_4 100% |=========================| 5.2 MB 00:29
(2/9): glibc-headers-2.5- 100% |=========================| 601 kB 00:03
(3/9): audit-1.7.13-2.el5 100% |=========================| 379 kB 01:02
(4/9): glibc-devel-2.5-42 100% |=========================| 2.0 MB 00:11
(5/9): audit-libs-python- 100% |=========================| 78 kB 00:03
(6/9): glibc-common-2.5-4 100% |=========================| 16 MB 01:24
(7/9): audit-libs-1.7.13- 100% |=========================| 80 kB 00:03
(8/9): pam-devel-0.99.6.2 100% |=========================| 187 kB 00:02
(9/9): pam-0.99.6.2-6.el5 100% |=========================| 976 kB 00:04
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Updating : glibc-common ####################### [ 1/17]
Updating : glibc ####################### [ 2/17]
Updating : audit-libs ####################### [ 3/17]
Updating : pam [ 4/17]warning: /etc/pam.d/system-auth created as /etc/pam.d/system-auth.rpmnew
Updating : pam ####################### [ 4/17]
Updating : glibc-headers ####################### [ 5/17]
Updating : audit ####################### [ 6/17]
Updating : glibc-devel ####################### [ 7/17]
Updating : audit-libs-python ####################### [ 8/17]
Installing: pam-devel ####################### [ 9/17]
Cleanup : glibc ####################### [10/17]
Cleanup : glibc-headers ####################### [11/17]
Cleanup : audit ####################### [12/17]
Cleanup : glibc-devel ####################### [13/17]
Cleanup : audit-libs-python ####################### [14/17]
Cleanup : glibc-common ####################### [15/17]
Cleanup : audit-libs ####################### [16/17]
Cleanup : pam ####################### [17/17]

Installed: pam-devel.i386 0:0.99.6.2-6.el5_4.1
Dependency Updated: audit.i386 0:1.7.13-2.el5 audit-libs.i386 0:1.7.13-2.el5 audit-libs-python.i386 0:1.7.13-2.el5 glibc.i686 0:2.5-42.el5_4.3 glibc-common.i386 0:2.5-42.el5_4.3 glibc-devel.i386 0:2.5-42.el5_4.3 glibc-headers.i386 0:2.5-42.el5_4.3 pam.i386 0:0.99.6.2-6.el5_4.1
Complete![/quote]

附:
插入式验证模块(Pluggable Authentication Module,PAM)API 将公开一组功能,应用程序程序员可以使用这些功能来实现与安全性相关的功能,例如用户验证、数据加密、LDAP 等。
哪些操作系统支持 PAM?
PAM 最初是由 Sun Microsystems 于 1995 年开发的,并且以下操作系统版本(及更高版本)都提供支持:

* RedHat 5.0
* SUSE 6.2
* Debian 2.2
* Mandrake 5.2
* Caldera 1.3
* TurboLinux 3.6

详见[url]http://www.ibm.com/developerworks/cn/linux/l-pam/index.html[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值