编译午夜指挥官

编译午夜指挥官

我需要帮助来编译午夜指挥官,以便我可以进行一些更改(出于教育目的)。 甚至创建 make 文件。

从 git 下载最新版本后。我尝试执行 ./autogen.sh 。结果是:

maint/autopoint: 418: cannot open /usr/share/gettext/archive.tar.gz: No such file
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors
cvs checkout: cannot find module `archive' - ignored
find: `archive': No such file or directory
find: `archive': No such file or directory
find: `archive': No such file or directory
autopoint: *** infrastructure files for version 0.14.3 not found; this is autopoint from GNU gettext-tools 0.17
autopoint: *** Stop.

我已经安装了 gettext,文件夹/usr/share/gettext确实存在。但是没有archive.tar.gz。我不知道这个档案应该包含什么,也不知道在哪里可以找到它。

你能帮我吗?

答案1

在 ubuntu 中编译源代码最简单的方法是使用 apt-get source,如下所示:

sudo apt-get build-dep mc
sudo apt-get -b source mc

将“midnightcommander”替换为软件包的真实名称。我现在使用的是 Windows 计算机,因此无法检查软件包的名称,但它可能是“mc”。

此命令将为您下载并构建源代码以及您需要的任何依赖项。之后,您只需更改源代码并从项目的根目录调用 make 即可重建。

答案2

运行locate "archive.tar.gz"以查看它是否存在于您的系统中。

它不存在任何地方

您的 gettext 安装有问题。请重新安装。如果您最初使用 Synaptic 或 apt-get 安装,请运行以下命令:

sudo apt-get install --reinstall gettext

如果你编译了它,你就会知道该怎么做:

cd ~/src/gettext
sudo make uninstall
./configure --prefix=/usr && make && sudo make install

它存在于/usr/local/share/gettext

我刚刚在谷歌上搜索了“gettext no archive.tar.gz”,结果找到了一个旧的自动指向错误它期望 gettext 安装到/usr,但从来没安装到/usr/local。果然,autogen.sh 调用 /usr/bin/autopoint,并且:

# - gettext_dir     directory where the sources are stored.
prefix="/usr"
datarootdir="${prefix}/share"
gettext_dir="${datarootdir}/gettext"

如果你的 gettext 安装到了 /usr/local,你有几个选择。(1)你可以更改前缀,但任何对自动指向的 Ubuntu 更新都会破坏它。(2)我宁愿删除 gettext 并将其重新安装到 /usr。(3)当然,最简单的方法可能只是创建一个符号链接:

ln -s /usr/local/share/gettext /usr/share/gettext

它存在于别的地方。

越来越奇怪了。它到底出现在哪里了?

答案3

在 maverick 中,gettext 包不再包含 archive.tar.gz。一些解决方案:

  • 从源代码编译 gettext
  • 更快更脏:下载清晰包并提取压缩包.tar.gz进入/usr/share/gettext

答案4

似乎/usr/share/gettext/archive.dir.tar.xzautopoint软件包(至少在 Ubuntu 20.04 上)。我在 bootstraping coreutils 时遇到了同样的错误,这个问题通过以下方法解决了:

sudo apt install autopoint

相关内容