Dynamic-Linking

Mkfs 錯誤未定義符號:ext2fs_numeric_progress_ops

  • April 24, 2014

我在 Hyper-V 下執行 Oracle Linux 6.4。我必須添加一個磁碟。所以我在Hyper-V中添加了它,Linux在我執行時看到它fdisk -l並且我可以看到它。所以我做了一個fdisk /dev/sdb然後我創建了一個擴展分區,從 1 開始並讓其他參數作為預設值。

然後我想執行amkfs.ext3 /dev/sdb1或ext4(因為我不記得區別,我認為選擇一個或另一個沒有問題)。

但是mkfs.ext3or mk2efsormkfs -t ext3 /dev/sdb1輸出這個錯誤:

error symbol lookup : undefined symbol: ext2fs_numeric_progress_ops

我google了一下,完全沒有答案。它以前從未發生在我身上。

任何幫助將不勝感激。

UPDATE1:這是輸出ldd /sbin/mkfs.ext3

linux-vdso.so.1 =>  (0x00007fff907fd000)
libext2fs.so.2 => /opt/appassure/lib64/libext2fs.so.2 (0x00007f7c126fc000)
libcom_err.so.2 => /lib64/libcom_err.so.2 (0x0000003290800000)
libblkid.so.1 => /lib64/libblkid.so.1 (0x0000003290c00000)
libuuid.so.1 => /lib64/libuuid.so.1 (0x0000003291800000)
libe2p.so.2 => /lib64/libe2p.so.2 (0x0000003291000000)
libc.so.6 => /lib64/libc.so.6 (0x0000003368e00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003369200000)
/lib64/ld-linux-x86-64.so.2 (0x0000003368600000)`

當我執行時,e2fsck /dev/sdb1這是輸出:

Error : ext2fs library is outdated !
       e2fsck 1.43-WIP (20-Jun-2013)
       Using library EXT2FS version 1.42.6, 21-Sept-2012

問題似乎是e2fslibse2fsprogs的一部分 )被破壞了。查看 /sbin/mkfs.ext3 的連結器輸出給出以下資訊:

ldd /sbin/mkfs.ext3

linux-vdso.so.1 =>  (0x00007fff907fd000)
libext2fs.so.2 => /opt/appassure/lib64/libext2fs.so.2 (0x00007f7c126fc000)
libcom_err.so.2 => /lib64/libcom_err.so.2 (0x0000003290800000)
libblkid.so.1 => /lib64/libblkid.so.1 (0x0000003290c00000)
libuuid.so.1 => /lib64/libuuid.so.1 (0x0000003291800000)
libe2p.so.2 => /lib64/libe2p.so.2 (0x0000003291000000)
libc.so.6 => /lib64/libc.so.6 (0x0000003368e00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003369200000)
/lib64/ld-linux-x86-64.so.2 (0x0000003368600000)`

libext2fs.so.2 => /opt/appassure/lib64/libext2fs.so.2 (0x00007f7c126fc000)條線顯然是錯誤的。作為比較,這是我的系統返回的內容。

   linux-vdso.so.1 =>  (0x00007ffff2a00000)
   libext2fs.so.2 => /lib/x86_64-linux-gnu/libext2fs.so.2 (0x00007f4060158000)
   libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007f405ff50000)
   libblkid.so.1 => /lib/x86_64-linux-gnu/libblkid.so.1 (0x00007f405fd28000)
   libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f405fb20000)
   libe2p.so.2 => /lib/x86_64-linux-gnu/libe2p.so.2 (0x00007f405f918000)
   libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f405f588000)
   libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f405f368000)
   /lib64/ld-linux-x86-64.so.2 (0x00007f40603d0000)

根據海報,

我使用他們提供的 install.sh 安裝了 Dell AppAssure(備份軟體)。

在我的 Debian 系統上e2fslibs提供libext2fs.so.2,它也是 Priority: required。當我嘗試刪除時,e2fslibs我得到:

警告:以下基本軟體包將被刪除。除非您確切知道自己在做什麼,否則不應這樣做!

所以問題是為什麼某些備份軟體要在 RHEL 派生系統上安裝重要的軟體。無論如何,這顯然是問題所在。

建議:閱讀文件和/或詢問 Dell AppAssure 的供應商這裡發生了什麼。如果這是由備份軟體安裝的,它可能會破壞該軟體,因此刪除它或(重新)安裝系統可能不是一個好主意e2fslibs

也有可能係統e2fslibs仍然安裝並且連結器忽略它。檢查例如

rpm -ql | grep e2fs

和/或文件位置/lib64/libext2fs.so.2

可能有更好的方法來做到這一點。我不使用 RH 派生系統。

引用自:https://unix.stackexchange.com/questions/125937