有没有规范的方法来获取您安装的 e2fsprogs 版本?

有没有规范的方法来获取您安装的 e2fsprogs 版本?

Linuxtopia 的内核配置书建议如下:

要确定系统上的 e2fsprogs 版本,请运行以下命令:
$ tune2fs

不过,这似乎有点时髦。

e2fsprogs 是否有规范的方法来检查版本,或者是否已经达到最佳状态?

答案1

tune2fs是少数几个打印其版本并在无事可做时退出的 e2fsprogs 程序之一(其他的是dumpe2fsresize2fs),并且它已经成为 e2fsprogs 的一部分很长一段时间了(可能从一开始)。因此,它是确定 e2fsprogs 安装版本的可靠方法。

据我所知,其文档中没有关于如何确定 e2fsprogs 安装版本的“官方”描述。

答案2

这是常见的方式,一个潜在的问题是二进制文件已经存在/sbin,但并非所有用户都能够运行它们。

我检查了几个可能会使用(部分)的项目e2fsprogs,例如gparted- 充其量他们实际上只关心 的存在libuuid,并且没有任何 autoconf 检测e2fsprogs或其版本。

libext2fs库导出了 function ext2fs_get_library_version(),因此要稳健地执行此操作:

/* gcc -lext2fs -o gete2ver gete2ver.c */
#include <stdio.h>
#include <ext2fs/ext2fs.h>

int main(int argc, char *argv[])
{
    const char *e2ver, *e2date;
    int ver;

    ver=ext2fs_get_library_version(&e2ver,&e2date);
    printf("version=%04i %s %s\n",ver,e2ver,e2date);
    return 0;
}

其他选项:

  1. e2fsprogs附带一组库,因此您可以使用pkg-config,例如

    pkg-config --modversion ext2fs

    pkg-config --modversion e2p

    (但是,某些发行版默认情况下可能没有安装足够的“开发人员”材料)

  2. 翻译后的消息目录包含元数据在空的 "" msgid 中:

    LANG=fr_FR gettext e2fsprogs ""

    (但是,不能保证会安装任何特定语言)

答案3

这看起来确实有点时髦。如果您不喜欢记住使用tune2fs,您可以检查e2fsprogs您安装的软件包。

如果您从源代码安装它,您可能可以很容易地检查源代码。 (压缩包名称或新闻/更改日志文件中的版本号)。

如果您是从发行包安装的,则有一些不错的命令可以实现此目的。这完全取决于您的发行版的设置方式:

# Debian / Ubuntu
dpkg -l e2fsprogs

# alternatively
sudo which mkfs.ext4
dpkg -S /sbin/mkfs.ext4

# Fedora
rpm -q e2fsprogs

# alternatively
which mkfs.ext4
rpm -q --whatprovides /usr/sbin/mkfs.ext4

# ...

相关内容