[华山论剑][ Solaris 经典问题之 Package #1] [难度指数:1]

发表于:2007-05-26来源:作者:点击数: 标签:
[color=blue:dde7b7c598]来点简单的,大家松口气吧。[/color:dde7b7c598] [size=18:dde7b7c598][color=darkred:dde7b7c598][华山论剑][Solaris经典问题之Package#1][难度指数:1][/color:dde7b7c598][/size:dde7b7c598] 难度指数:1( MI N)-5(MAX) [b:dd

[color=blue:dde7b7c598]来点简单的, 大家松口气吧。[/color:dde7b7c598]


[size=18:dde7b7c598][color=darkred:dde7b7c598][华山论剑][ Solaris 经典问题之 Package #1] [难度指数:1][/color:dde7b7c598][/size:dde7b7c598]

难度指数: 1(MIN)- 5(MAX)

[b:dde7b7c598][Qestion][/b:dde7b7c598] 你是 Sun 的 FE, 一个客户来电话说误删了 /usr/lib 下的一个文件 libc.so.1,
客户现场只有这一台机器并且没有联网。 你怎样才能帮他恢复呢?



[size=18:dde7b7c598][u:dde7b7c598][color=green:dde7b7c598]其他问题[/color:dde7b7c598][/u:dde7b7c598][/size:dde7b7c598]

[华山论剑][ Solaris 经典问题之 Disk Partition #1] [难度指数:1]
[url]http://bbs.chinaunix.net/forum/6/20040726/374005.html[/url]

[华山论剑][ Solaris 经典问题之 Disksuite #1] [难度指数:2] 
[url]http://bbs.chinaunix.net/forum/viewtopic.php?t=370242&start=0[/url]

 cqwlyh 回复于:2004-07-28 10:34:36
# cd /usr/lib
# ls -l libc.so*
lrwxrwxrwx   1 root     root          11 Jun 24 14:33 libc.so -> ./libc.so.1
-rwxr-xr-x   1 root     bin       867112 Feb 11 10:13 libc.so.1

这下就简单了,重新做一个连接就是了

 lightspeed 回复于:2004-07-28 10:42:28
注意, 被删的是 libc.so.1

 cqwlyh 回复于:2004-07-28 10:52:23
1.boot cdrom -s
2.找到光盘中相应的文件,拷贝到/usr/lib下
3.重新做一个连接。

 chim 回复于:2004-07-28 10:58:45
查了下google, 找到这个。。。


Admins,

Many thanks to all of you: Ken Germann, Rodrigo Gesswein, Rob McCauley,
Simon Convey, The great Spirit, Rob Lyle, Henrik Mortensen, Kevin
Stafford, Jay Lessert, Rick Kelly, Brett Lymn, Mark Bergman.

Almost everything seems to depend on libc library.

Solutions:

1. Boot the server from CD and then copy necessary libraries from CD.

2. Check and set the LD_LIBARY_PATH environment variable.

3. Use the /usr/sbin/static/cp - statically linked cp command.

4. Execute the following command : /usr/5bin/cat
/usr/lib/libc.so.1.backup > /usr/lib/libc.so.1
I used this one to solve my problem. It worked great!
     
5. Boot from the network, mount /usr, and fix it.

6. Ship the box back home and fix it.  :-) 

7. Two tips :

        # catting a file with no cat:
        $ (while read foo; do echo "$foo"; done;) < /etc/vfstab

        # copying a file with no cp:
        $ (while read foo; do echo "$foo"; done;) < /etc/vfstab >
/etc/vfstab.bak

8. Another two: 
*
        while ( read var )
        do
                echo $var > /lib/libc.so.1
        done < /usr/lib/libc.so.1

*
        tar cf - /usr/lib/libc.so.1 | ( cd /lib ; tar xf - )

Thanks a lot and Have a great night !

Piotr

Original message:

> Admins,

> I have a problem with my SS20 running SunOS 4.1. Someone (I think)
> removed the /usr/lib/libc.so.1 library from the system and I'm unable to
> run any command.

> I have got an error:
> ld.so: libc.so.1: not found

> Unfortunately this machine is located in another part of the World, so I
> do not have direct aclearcase/" target="_blank" >ccess to it. However, I have a person who could
> "remotely" run my commands.

> Is there any chance to copy this library (I have a backup copy in
> /usr/lib on that system) using shell commands like echo ???

> I would be very appreciated for any suggestions.
>


如果我遇到这个问题, 偶会mount 系统安装CD,直接copy libc.so.1。。

 lightspeed 回复于:2004-07-28 11:01:26
此题的目的是看你如何找, 细节呢

 chim 回复于:2004-07-28 11:09:10
[quote:041ffb79d2="lightspeed"]此题的目的是看你如何找, 细节呢[/quote:041ffb79d2]

lrwxrwxrwx   1 root     root          11 Sep 17  2001 libc.so -> ./libc.so.1
-rwxr-xr-x   1 root     bin      1136720 Sep 15  2001 libc.so.1

用户删的是libc.so.1,  上面的连接应该还存在。

不明白你的细节指什么 :em14:

 lightspeed 回复于:2004-07-28 11:40:25
[quote:858d09f8ed]不明白你的细节指什么[/quote:858d09f8ed]

我那时回 cqwlyh 的,当时还没看到你的帖。

不过你们的回答有点偏离我出题的本意。 你如何知道 libc.so.1 在 cdrom 的哪里?
find ?

 chim 回复于:2004-07-28 11:55:14
这个确实有点难,  我以前试过在CD 上找 /usr/lib 路径... 那个路径名确实比较怪!  

不想找的话不如使用boot cdrom -S 启动系统,  mount 系统/usr 所在分区到/mnt, 再cp /usr/lib/libc.so.1 .

 lightspeed 回复于:2004-07-28 12:01:58
好吧,  请到时再看我的有关 package 的第二帖, 就清楚我想说什么了。

 chim 回复于:2004-07-28 12:06:26
[quote:3164dc763c="lightspeed"]好吧,  请到时再看我的有关 package 的第二帖, 就清楚我想说什么了。[/quote:3164dc763c]


你出的问题真的都很启发人!  期待ing ....

 bear 回复于:2004-07-28 13:41:27
# grep libc.so.1 /var/sadm/install/contents
/usr/lib/libc.so.1 f none 0755 root bin 1157900 9512
1059515869 SUNWcsl
从这个包中恢复,不过如果是补丁修补过的就有点麻烦了,要找和这个文件相关的补丁,我也没有好的办法。

 chim 回复于:2004-07-28 14:40:51
看了楼上的回答, 我明白了楼主想说的. ..

估计这就是做网管的人和做SUN FE的人分别!

 lookthis 回复于:2004-07-28 15:55:17
[quote:5e01ab6c7f="bear"]# grep libc.so.1 /var/sadm/install/contents
/usr/lib/libc.so.1 f none 0755 root bin 1157900 9512
1059515869 SUNWcsl
从这个包中恢复,不过如果是补丁修补过的就有点麻烦了,要找和这个文件相关的补丁,我?.........[/quote:5e01ab6c7f]


这算是正确吧!

 南非蜘蛛 回复于:2004-07-28 16:44:14
我插一句
先找出这个文件所属的包
# grep /usr/lib/libc.so.1 /var/sadm/install/contents
/usr/lib/libc.so.1 f none 0755 root bin 866400 2238 1061603407 SUNWcsl

然后放入光盘,查找这个文件 /cdrom/cdrom0/s0/Solaris_8/Product/*/pkgmap
然后安装

这是288上说的

/var/sadm/install/contents文件
/var/sadm/install/contents文件是一个完整的记录了所有软件包安装到本地系统磁盘的。他附注的每个软件包中的软件,并且可以查看产品安装时的记录。

pkgadd命令在添加新软件包的时候会自动升级这个文件

pkgrm命令利用contents文件来找出软件包文件的位置。当包被删除时,pkgrm命令也会自动升级contents文件。

识别一个命令的位置
使用grep命令去搜索/var/sadm/install/contents文件,用来查找特殊的文件和他所在的目录。比如,检查被安装到系统的命令showrev。
# grep showrev /var/sadm/install/contents

在Solaris操作环境光盘上搜索命令信息
与搜索本地系统磁盘的contents文件不同,光盘上的命令信息是在pkgmap文件中的
# grep showrev /cdrom/cdrom0/s0/Solaris_8/Product/*/pkgmap

 iricyan 回复于:2004-07-28 17:43:43
我想到一个办法,痛扁肇事者。

 wohoo 回复于:2004-07-28 20:59:48
学习中。问题确实比较古怪

 寒江獨釣 回复于:2004-07-28 21:52:22
有些事情,要忙上一阵子了,光速兄这几天就辛苦你多受些累。等我忙完了,再来陪你一起,何如?
吾日三省吾身,为人谋而不忠乎?与朋友交而信乎?传不习乎?

 melonm 回复于:2004-07-29 02:28:53
也可以用以下方法寻找安装包:
pkgchk -l -p /usr/lib/libc.so.1

Pathname: /usr/lib/libc.so.1
Type: regular file
Expected mode: 0755
Expected owner: root
Expected group: bin
Expected file size (bytes): 866400
Expected sum(1) of contents: 2238
Expected last modification: Aug 22 21:50:07 2003
Referenced by the following packages:
        SUNWcsl
Current status: installed

 天俊 回复于:2004-07-29 11:01:19
搬个位子听听,偶不会,呵呵

 sonorous 回复于:2004-07-29 11:13:46
[quote:2185555626="melonm"]也可以用以下方法寻找安装包:
pkgchk -l -p /usr/lib/libc.so.1

Pathname: /usr/lib/libc.so.1
Type: regular file
Expected mode: 0755
Expected owner: root
Expected group: bin
Expected file size (b..........[/quote:2185555626]


呵呵,我想到的也是这个方法。

 bear 回复于:2004-07-29 11:32:20
还是蜘蛛写的全面,服务到家啊。

 andrewleading_he 回复于:2004-07-29 16:50:37
收藏了...
看样子要努力了,大家等等我...哈哈

原文转自:http://www.ltesting.net