我想less
用最新的修复程序进行编译。
我这样做:
git clone https://github.com/gwsw/less
cd less/
autoheader
autoconf
./configure
make
但是make
这样说:
make: *** No rule to make target 'funcs.h', needed by 'main.o'. Stop.
没有 Makefile 规则可以创建funcs.h
那么,如何less
从源代码编译呢?
正如Thomas Dickey 的回答中所解释的,git 存储库需要先进行准备,然后才能用于构建,并且无法使用提供的文件重新创建一个必需的文件。
要减少构建,请下载其最新版本的 tarball并构建:
但是请注意,版本 530 有一些烦人的错误已在 git 存储库中修复。(这可能是 Debian 软件包没有更新的原因。)
或者,您可以更新 Debian 软件包:
这将产生一个
less_530-0.1_yourarch.deb
(yourarch
可能是amd64
),您可以使用sudo dpkg -i
. 正如JdeBP 指出的那样,这将确保应用 Debian 补丁,并使用适当的configure
选项;它还将为您提供使用软件包而不是手动安装的好处。对于
gbp
像我这样的粉丝,以下配方使用了一个 git 存储库,这使得任何更改都更加明显:(在这两种情况下,严格来说,您应该使用
dch -n
anddch -v
,或者至少将“非维护者上传”添加到更改日志中,但以复制粘贴的方式更难做到这一点。)"Makefile.in"是"configure"的输入,它生成"Makefile"。您无需在 make 命令中指定“Makefile”。所以这应该更好地工作:
(尽管您可能在该目录中留下了应该在重新运行配置之前删除的文件)。
从 git 运行,您缺少诸如configure之类的分发文件。如果您安装了合适版本的 autoconf,则必须首先运行来准备构建
但是,git 树也省略了“defines.h.in”——需要更多准备:git 中的文件似乎都与所需的模板不匹配。您可能可以重用发布 tar-ball 中的相应文件,尽管这不可靠(与任何其他源文件一样,它会更改)。由于文档未提及此步骤,因此向开发人员报告错误可能会有所帮助。
修改后的问题询问
funcs.h
,可以使用Makefile.aut
(“Makefile for authoring less”中的规则创建,根据文件顶部的评论)。但是截至 2018/09/17,仍然没有创建规则defines.h.in
(使用 grep 来回答这些问题)。这是我刚刚在 Ubuntu 18.04 上成功使用的方法:
git clone https://github.com/gwsw/less.git
cd less
autoreconf -i
#autoconf
如果你还没有安装包make -f Makefile.aut dist
这将创建一个
release/less-550
包含less-550.tar.gz
和的目录less-550.zip
。它还尝试为less-550.tar.gz
. 那挂在我的系统上,所以我gpg --detach-sign ...
从另一个窗口中终止了该进程。您也可以直接终止该make
进程。less-550.tar.gz
是一个标准的可构建源 tarball,您可以像往常一样安装它:tar xf less-550.tar.gz
cd less-550
./configure --prefix=
一些目录 其他选项make
make install
最有趣的选项
./configure
可能是:运行
./configure --help
以获取完整的选项列表。这个序列可以完成这项工作,但我不确定它是否正确: