Mkfs 错误未定义符号:ext2fs_numeric_progress_ops

Mkfs 错误未定义符号:ext2fs_numeric_progress_ops

我正在 Hyper-V 下运行 Oracle Linux 6.4。我必须添加一个磁盘。所以我把它添加到Hyper-V中,Linux运行时fdisk -l就可以看到它。所以我做了一个fdisk /dev/sdb然后我创建了一个扩展分区,从1开始,让其他参数默认。

然后我想运行amkfs.ext3 /dev/sdb1或ext4(因为我不记得区别了,而且我认为选择一个或另一个没有问题)。

mkfs.ext3mk2efsmkfs -t ext3 /dev/sdb1输出此错误:

 error symbol lookup : undefined symbol: ext2fs_numeric_progress_ops

我用谷歌搜索了一下,根本没有答案。我以前从未发生过这种情况。

任何帮助将不胜感激。

更新1:这是输出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

答案1

问题似乎是e2fslibs(部分e2fsprogs ) 被打破。查看 /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 衍生系统。

相关内容