【问题标题】:Compiler error - msgfmt command not found编译器错误 - 未找到 msgfmt 命令
【发布时间】:2012-03-19 01:03:08
【问题描述】:

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

  1. 下载最新的 Git 版本
  2. 解压并放在服务器上
  3. 配置和创建 Makefile -> ./configure --prefix=$HOME/dev/git/src --without-tcltk
  4. 构建包 -> make 然后make install
  5. 更新 PATH .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 包有关。

知道如何在共享主机上修复该错误吗?

【问题讨论】:

  • 快速破解:尝试“make -k”或“make -i”来跳过编译,可能你会得到 Git,但没有本地化和/或文档。
  • 你说得对,msgfmt 对于运行 Git 并不重要。 “make -i”工作了,谢谢。
  • 对于 OSX,您可以在这里找到答案 stackoverflow.com/a/32821791/1257959

标签: git compiler-errors gettext shared-hosting msgfmt


【解决方案1】:

我有同样的问题。感谢您发现它与 gettext 有关的工作,一个简单的apt-get install gettext 为我修复了它。

【讨论】:

  • 这应该是可以接受的答案 ;)
  • 这似乎是最好的答案,但是,在 cygwin 上,安装 gettext 并没有帮助。可能是版本问题?
  • 这不是共享主机的正确答案,您没有 sudo 访问权限。
  • @Lucas on cygwin 你需要 gettext-devel 来获取 msgfmt(见 this helpful answer
  • 当从源安装/在没有 root 访问权限的系统上安装时,在gettext-tools 子目录下的gettext 源根目录下运行./configure && make && make install
【解决方案2】:

在使用 Xcode(使用 Makefile)构建 Git 时,我必须在 Makefile 中定义 NO_GETTEXT = YesPlease 来解决此问题。

【讨论】:

  • 首选这个,因为我无法安装 gettext,而且 -i (忽略错误)只是愚蠢的! make NO_GETTEXT=1 成功了。
【解决方案3】:

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

【讨论】:

  • 问题不在于 Cygwin
  • gettext-devel 也是 centos 6 的包
【解决方案4】:

在 Mac Os 上,这对我有用:

brew install gettext
brew link gettext --force

【讨论】:

    【解决方案5】:
    make -i
    make -i install
    

    .. 完美解决了这个问题。此外,如果有人在使用 http/https 助手时遇到问题,请在配置期间不要忘记添加以下内容

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

    【讨论】:

    • 需要注意的是,“-i”是“--ignore-errors”的缩写,因此任何其他错误也会被忽略,并且可能会因为许多与gettext相关的错误而被忽略。因此,如果没有其他方法,-i 应该是最后的手段。
    • @Boris 是的,这是一种错误的解决方法,但并不是每个人都是黑客。您显然需要 gettext lib 才能消除错误。
    【解决方案6】:

    在 cygwin 上,您还需要安装 gettext-devel 包。仅靠 gettext 包是不足以解决这个问题的。

    【讨论】:

      【解决方案7】:

      您可以像安装 git 一样安装 gettext。通过下载、提取、构建并将其安装到主文件夹中的给定位置:

      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
      

      将前缀设置为您想要的安装位置。

      【讨论】:

        【解决方案8】:

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

        port install gettext
        

        【讨论】:

          【解决方案9】:

          在 Debian 10 中对我来说缺少包 gettext。解决如下:

          $ sudo apt install gettext

          然后make 突击队工作正常。

          【讨论】:

            【解决方案10】:

            尝试将 -i 添加到您的 make 命令中。

            > make -i ...

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2015-06-06
              • 2014-09-30
              • 1970-01-01
              • 1970-01-01
              • 2015-05-27
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多