为什么 /usr/bin/rename.ul 有扩展名?

为什么 /usr/bin/rename.ul 有扩展名?

rename.ul我在我的 Ubuntu 机器上发现了一个命令。它来自util-linux包。

这对我来说很奇怪,因为我很少看到带扩展名的可执行文件。此外,由于文件是经过编译的,因此这似乎没有必要。

这其中有什么历史或技术原因吗?

我也很困惑,因为我找不到与此扩展名相关的文件格式。

答案1

rename该扩展是为了避免与 Debian 上可用的大量命令发生冲突。这个改变于 2007 年制定,以响应Debian 错误 #439647:

/usr/bin/rename 由替代系统管理(默认使用 Perl 版本)。 util-linux 2.13~rc3-8 在那里安装自己的二进制文件,而不是将其注册为替代方案。

作为回应,util-linux rename被重命名为rename.ul.

即便如此,rename.ul语法与 Perl 变体有很大不同,默认情况下它不会添加到替代系统中(请参阅Debian 错误 #439935)。

答案2

正如评论者所猜测的那样,这可能是Debian 替代系统在行动中。

如果一个发行版有多个包含同名文件的包,则包的创建者需要知道这一点,并且需要有一种机制供管理员选择他们想要使用其中的一个。因此,所有冲突的文件都会被重命名(通常带有后缀,但这可以在包元数据中指定),并且原始文件名将成为指向/etc/alternatives/<original filename>.反过来,这将是另一个符号链接,指向现在重命名的文件之一。

系统管理员可以使用该update-alternatives工具来选择原始名称将指向文件的哪个版本。仍然可以使用新名称访问其他版本。

update-alternatives工具可以处理“系列”事物,因此当您同时安装了传统和 OpenBSD netcat 并使用sudo update-alternatives --config nc一种或另一种方式切换默认值时,相应的手册页名称也将被切换。

一个常见的例子是/usr/bin/editor。在 Debian 风格的系统上,这是一个符号链接,其他程序可以使用它来获取“该系统上的默认文本编辑器,无论它是什么”。最小安装后,它可能默认为nano,因此editor example.txt将打开 中的文本文件nano,并man editor显示 的手册页nano

但是,如果您安装的编辑器在替代系统中具有更高的优先级,例如joe,那么它会自动成为新的默认值,因此现在editor example.txt将使用它joe,并且man editor现在还将显示joe的手册页。您还可以用来sudo update-alternatives --config editor选择要作为默认编辑器的已安装编辑器,一旦您以这种方式做出选择,自动优先级将不会覆盖它。

相关内容