我需要帮助来编译午夜指挥官,以便我可以进行一些更改(出于教育目的)。 甚至创建 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.xz
是autopoint
软件包(至少在 Ubuntu 20.04 上)。我在 bootstraping coreutils 时遇到了同样的错误,这个问题通过以下方法解决了:
sudo apt install autopoint