编译器错误 - 找不到msgfmt命令。

103

我正在尝试从我的共享主机上更新Git。为此,我按照以下步骤进行:

  1. 下载最新的Git版本
  2. 解压并放置到服务器上
  3. 配置和创建Makefile -> ./configure --prefix=$HOME/dev/git/src --without-tcltk
  4. 构建软件包 -> make 然后 make install
  5. 更新路径 .bash_profile

我卡在第4步。当我运行make命令时,出现以下内容:

user@ssh1:~/dev/git/src$ make
SUBDIR gitweb
SUBDIR ../
make[2]: ? GIT-VERSION-FILE ? est ? jour.
GEN git-instaweb
SUBDIR perl
SUBDIR git_remote_helpers
SUBDIR templates
MSGFMT po/build/locale/is/LC_MESSAGES/git.mo
/bin/sh: msgfmt: command not found
make: *** [po/build/locale/is/LC_MESSAGES/git.mo] Erreur 127

编译器报出一个msgfmt command not found错误。

我在谷歌上搜索了一下,似乎与gettext包有关。

你有什么办法可以在共享主机上修复这个错误吗?


7
快速技巧:尝试使用"make -k"或者"make -i"跳过编译,也许你会得到Git,但是没有本地化和/或文档。 - Vi.
3
你说得对,msgfmt对Git的运行并不重要。 "make -i" 运行成功了,谢谢。 - John
1
对于OSX,您可以在此处找到答案:https://dev59.com/yWbWa4cB1Zd3GeqPSgnN#32821791 - cgl
11个回答

283

我遇到了同样的问题,感谢您发现它与gettext有关,并且通过简单的apt-get install gettext解决了我的问题。


9
这应该是被接受的答案 ;) - Dennis
1
这肯定看起来是最好的答案,但在cygwin上安装gettext没有帮助。也许那里存在版本问题? - Lucas
7
在共享托管中,这不是正确的答案,因为您没有sudo访���权限。 - Erik Kristensen
2
@Lucas 在 cygwin 上需要安装 gettext-devel 才能使用 msgfmt(可参考 这个有用的回答)。 - Boris
我该如何在Windows 10中安装它?我没有找到任何可靠的关于gettext在Windows上设置的指南。 - Anee Mes
显示剩余2条评论

19

在使用 Makefile 通过 Xcode 构建 Git 时,我不得不在 Makefile 中定义 NO_GETTEXT = YesPlease 以解决这个问题。


19
由于我无法安装gettext,并且-i(忽略错误)操作不可取,因此我更喜欢使用make NO_GETTEXT=1命令来解决这个问题。请注意,该命令的作用是忽略gettext相关的错误。 - adurdin

18

msgfmt包含在gettext-devel的cygwin软件包中。 安装该软件包(通过setup.exe或apt-cyg),错误应该会消失。


1
问题不在于Cygwin。 - Jonathan Wakely
gettext-devel也是CentOS 6的软件包。 - buckaroo1177125

8
在Mac Os上,这对我有效:

brew install gettext

brew link gettext --force

4
make -i
make -i install

..在这个问题上完美地工作。另外,如果有人在使用http/https助手时遇到麻烦,在配置过程中不要忘记添加以下内容。

./configure --with-curl --with-expat

6
需要注意的是,"-i" 是 "--ignore-errors" 的缩写,因此任何其他错误也将被忽略,可能会因为众多与 gettext 相关的错误而被忽略掉。因此,如果没有其他办法可行,"-i" 应该是最后的选择。 - Boris
@Boris 是的,这是一个错误的解决方法,但并非每个人都是黑客。显然,您需要gettext库才能消除错误。 - Vijay Kumar Kanta

4
在Cygwin上,您还需要安装gettext-devel软件包。仅安装gettext软件包无法解决此问题。

2
您可以像安装git一样安装gettext。通过下载、解压、构建并将其安装到您的home文件夹中指定的位置:
curl -O https://ftp.gnu.org/pub/gnu/gettext/gettext-0.20.1.tar.gz
tar xvf gettext-0.20.1.tar.gz
cd gettext-0.20.1/
./configure --prefix=/home/$HOME/opt
make
make install

将前缀设置为您想要安装的位置。最初的回答中提到了这一点。

2
在Debian 10中,我发现缺少了gettext包。可以通过以下方式解决:

$ sudo apt install gettext

然后make命令就可以正常工作了。


1

xgettextmsgfmt等工具属于GNU的gettext工具集。在macOS上,您可以使用MacPortport命令在您的系统上安装这些工具:

port install gettext

0

还有一种获取软件的选项:

ipkg install gettext

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接