尽管 msgfmt 是通过包管理器安装的,但未找到 msgfmt

1 ubuntu apt package-management

我在运行 Armbian 的 ARM 开发板上从源代码构建 Git 时遇到问题。Armbian 是 Ubuntu Bionic 的衍生产品。Git 在make test配方上失败了。

make[1]: Leaving directory '/home/build/git-2.21.0/templates'
mkdir -p po/build/locale/pt_PT/LC_MESSAGES/ && msgfmt --check --statistics -o po/build/locale/pt_PT/LC_MESSAGES/git.mo po/pt_PT.po
/bin/sh: 1: msgfmt: not found
Makefile:2533: recipe for target 'po/build/locale/pt_PT/LC_MESSAGES/git.mo' failed
make: *** [po/build/locale/pt_PT/LC_MESSAGES/git.mo] Error 127
Run Code Online (Sandbox Code Playgroud)

但:

$ apt-cache search msgfmt
libdist-zilla-plugin-localemsgfmt-perl - Dist::Zilla plugin to compile PO files with Locale::Msgfmt
liblocale-msgfmt-perl - pure Perl reimplementation of msgfmt
Run Code Online (Sandbox Code Playgroud)

和:

$ apt-cache policy liblocale-msgfmt-perl
liblocale-msgfmt-perl:
  Installed: 0.15-1
  Candidate: 0.15-1
Run Code Online (Sandbox Code Playgroud)

然而:

$ command -v msgfmt
$
Run Code Online (Sandbox Code Playgroud)

hash -r并没有明确问题。我的其他机器上不存在这个问题,包括 Ubuntu 和 Fedora 机器。

有什么问题以及如何解决它?

Ste*_*itt 10

$ apt-file search bin/msgfmt\ngettext: /usr/bin/msgfmt\n$ sudo apt install gettext\n
Run Code Online (Sandbox Code Playgroud)\n\n

msgfmt是其一部分gettext。

\n\n
dpkg -L liblocale-msgfmt-perl\n
Run Code Online (Sandbox Code Playgroud)\n\n

将告诉你,liblocale-msgfmt-perl\xe2\x80\x99t 不提供msgfmt(这确实使其描述具有误导性)。

\n\n
apt-cache search msgfmt\n
Run Code Online (Sandbox Code Playgroud)\n\n

找不到\xe2\x80\x99,gettext因为gettext包\xe2\x80\x99s 描述没有\xe2\x80\x99t 提到它:

\n\n
Description: GNU Internationalization utilities\n Interesting for authors or maintainers of other packages or programs\n which they want to see internationalized.\n
Run Code Online (Sandbox Code Playgroud)\n