LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: l_s

e2fsprogs 文件不小心 被emerge -C 了还有没有补救的方法

[复制链接]
发表于 2009-10-8 08:42:29 | 显示全部楼层
Post by 亞利艾爾;2034048
沒有看到ldd能列出庫依賴的庫呀?相反到是lddtree做了這個事情……

  1. $ lddtree.sh /usr/bin/wget
  2. wget => /usr/bin/wget (interpreter => /lib/ld-linux.so.2)
  3.     libdl.so.2 => /lib/libdl.so.2
  4.     librt.so.1 => /lib/librt.so.1
  5.         libpthread.so.0 => /lib/libpthread.so.0
  6.     libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8
  7.     libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8
  8.     libc.so.6 => /lib/libc.so.6
  9. $
  10. $ ldd /usr/bin/wget
  11. [color=Red]    linux-gate.so.1 =>  (0xffffe000)[/color]
  12.     libdl.so.2 => /lib/libdl.so.2 (0xb7f31000)
  13.     librt.so.1 => /lib/librt.so.1 (0xb7f28000)
  14.     libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8 (0xb7ee6000)
  15.     libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0xb7d9d000)
  16.     libc.so.6 => /lib/libc.so.6 (0xb7c60000)
  17.     /lib/ld-linux.so.2 (0xb7f41000)
  18.     libpthread.so.0 => /lib/libpthread.so.0 (0xb7c48000)
复制代码

请注意,除去 红色内核提供部分 依赖库个数没有区别。
您自己在自己系统上试试,把结果贴出来比对下好不好。
不要过分相信资料,人总有机会犯错,比如前面偶一直先入为主的认为没有程序依赖 e2fsprogs。
回复 支持 反对

使用道具 举报

发表于 2009-10-8 08:51:24 | 显示全部楼层
不明白,lz用的是gentoo的livecd吗? 怎么不用quickpkg? 话说我当初python没了都可用其复活。
回复 支持 反对

使用道具 举报

发表于 2009-10-8 10:21:46 | 显示全部楼层
用livecd=信春哥,原地满血复活

其实,直接chroot过去,就能做好多事的,自己编译wget还不行的话确认你确实指定prefix了?你是不是装到/usr/locale里面去了,而不是/usr下面?不行就做链接到/usr/bin里面
回复 支持 反对

使用道具 举报

发表于 2009-10-8 12:31:56 | 显示全部楼层
Post by 聚焦深空;2034100
  1. $ lddtree.sh /usr/bin/wget
  2. wget => /usr/bin/wget (interpreter => /lib/ld-linux.so.2)
  3.     libdl.so.2 => /lib/libdl.so.2
  4.     librt.so.1 => /lib/librt.so.1
  5.         libpthread.so.0 => /lib/libpthread.so.0
  6.     libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8
  7.     libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8
  8.     libc.so.6 => /lib/libc.so.6
  9. $
  10. $ ldd /usr/bin/wget
  11. [color=red]   linux-gate.so.1 =>  (0xffffe000)[/color]
  12.     libdl.so.2 => /lib/libdl.so.2 (0xb7f31000)
  13.     librt.so.1 => /lib/librt.so.1 (0xb7f28000)
  14.     libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8 (0xb7ee6000)
  15.     libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0xb7d9d000)
  16.     libc.so.6 => /lib/libc.so.6 (0xb7c60000)
  17.     /lib/ld-linux.so.2 (0xb7f41000)
  18.     libpthread.so.0 => /lib/libpthread.so.0 (0xb7c48000)
复制代码


请注意,除去 红色内核提供部分 依赖库个数没有区别。
您自己在自己系统上试试,把结果贴出来比对下好不好。
不要过分相信资料,人总有机会犯错,比如前面偶一直先入为主的认为没有程序依赖 e2fsprogs。


我的錯,很不好意思。是應該去實驗一下。
lddtree: libssl libcrypto libdl libz librt libpthread libc
ldd: linux-gate libssl libcrypto librt libc libdl libz pthread ld-linux

確實是基本一樣。不過這個問題在于確實也沒有libcom_err,但是沒有這個庫確實不可運行。不知道會不會是dlopen的……
回复 支持 反对

使用道具 举报

发表于 2009-10-8 12:33:38 | 显示全部楼层
Post by l_s;2034094
手动安装的。。。 全部是手动安装的。

就./configure make make install

wget 加了一个去掉ssl 的选项。
你wget還是用portage的吧,把wget的安裝包放到/usr/portage/distfiles里。
回复 支持 反对

使用道具 举报

发表于 2009-10-8 13:38:46 | 显示全部楼层
Post by 亞利艾爾;2034150
確實是基本一樣。不過這個問題在于確實也沒有libcom_err,但是沒有這個庫確實不可運行。不知道會不會是dlopen的……

您应该相信工具的,那些依赖关系是直接通过 ELF 文件头得到的。
如果 wget 有链接到 libcom_err,会列出的。
至于 dlopen,您可以这么验证 strings /usr/bin/wget | grep libcom_err,至少偶这里没有。
至少偶这里,把 /lib/libcom_err.so* 可执行权限去掉 或 挪到其它地方,wget 仍正常工作。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-8 14:24:43 | 显示全部楼层
Post by cliffordli;2034102
不明白,lz用的是gentoo的livecd吗? 怎么不用quickpkg? 话说我当初python没了都可用其复活。


你得告诉,打包。打些文件撒。。。嘿嘿(是不是有点过分了)。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-8 14:31:07 | 显示全部楼层
Post by 亞利艾爾;2034151
你wget還是用portage的吧,把wget的安裝包放到/usr/portage/distfiles里。

我也放了的。。可是emerge -1 还是要在网上去下。。所以只有手动了撒。
回复 支持 反对

使用道具 举报

发表于 2009-10-8 15:58:25 | 显示全部楼层
Post by l_s;2034172
你得告诉,打包。打些文件撒。。。嘿嘿(是不是有点过分了)。。


是过分了点, 我前面都说得清清楚了.

Post by cliffordli;2033726

具体就是建一个临时目录..., 然后执行

# quickpkg e2fsprogs

这样在/usr/portage/packages/sys-fs/ 下会有一个 e2fsprogs的tbz2压缩文件, 把它解压到你的gentoo根目录就行了.

最后,  就是无论是哪个装了gentoo的兄弟, 执行quickpkg后打的包都可以挽救lz.


用gentoo的livecd打个包自救吧

# quickpkg e2fsprogs wget ...

少谁加谁,然后就用tar原地满血复活

把livecd那个/usr/portage/packages/下面的那个tbz2解压到时你原来装gentoo的根目录/, 比如用livecd按目录加载你原的的gentoo到/mnt/gentoo, 只要把那个tbz2这样解压就行了。

  1. # tar jvxf  XXXX.tbz2 -C /mnt/gentoo/
复制代码


最后,引用man quickpkg,让你明白原理。

QUICKPKG(1)                         Portage                        QUICKPKG(1)

NAME
       quickpkg - creates portage packages

SYNOPSIS
       quickpkg <list of pkgs>

DESCRIPTION
       quickpkg  can  be  utilized  to quickly create a package for portage by
       utilizing the files already on your filesystem.  This package then  can
       be  emerged  on any system.  To review syntax for emerging binary pack‐
       ages, review emerge(1).  The upside of this process is that  you  don't
       have to wait for the package to unpack, configure, compile, and install
       before you can have the package ready to go.  The downside is that  the
       package  will  contain  the files that exist on your filesystem even if
       they have modified since they were first installed.
回复 支持 反对

使用道具 举报

发表于 2009-10-8 17:17:34 | 显示全部楼层
我突然覺得很對不起樓主。樓主稍微等等。我剛把grub搞好,一會去Gentoo下給你做下e2fsprogs和wget的tbz2包。你回頭下載下去之後emerge e2fsprogs-x.x.x.tbz2這樣安裝一下就好。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表