我想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
从源码编译呢?
答案1
正如中所解释的托马斯·迪基的回答,git 存储库需要先进行准备才能用于构建,并且无法使用提供的文件重新创建一个所需的文件。
要减少构建,请下载其最新版本的 tarball并构建:
wget http://greenwoodsoftware.com/less/less-530.tar.gz
tar xf less-530.tar.gz
cd less-530
./configure && make
但请注意,版本 530 有一些烦人的错误这些都固定在 git 存储库中。 (这可能就是 Debian 软件包尚未更新的原因。)
或者,您可以更新 Debian 软件包:
sudo apt build-dep less
sudo apt install devscripts
apt source less
cd less-487
uscan
cd ..
tar xf less_530.orig.tar.gz
cd less-530
cp -a ../less-487/debian .
dch -v 530-0.1 "New upstream release."
dch -r ignored
debuild -uc -uc
这将产生一个less_530-0.1_yourarch.deb
(其中yourarch
可能是amd64
),您可以使用安装它sudo dpkg -i
。作为杰德BP 指出,这将确保应用 Debian 补丁,并configure
使用适当的选项;它还将为您带来使用包而不是手动安装的好处。
对于gbp
像我这样的粉丝,以下配方使用 git 存储库,这使得任何更改都更加明显:
sudo apt build-dep less
sudo apt install devscripts git-buildpackage
gbp import-dsc --pristine-tar apt://less/sid
cd less
gbp import-orig --pristine-tar --uscan
dch -v 530-0.1 "New upstream release."
dch -r ignored
gbp buildpackage -us -uc --git-ignore-new
(在这两种情况下,严格来说您应该使用dch -n
and dch -v
,或者至少将“非维护者上传。”添加到变更日志中,但这很难以可复制粘贴的方式做到。)
答案2
“Makefile.in”是一个输入“配置”,这会生成“生成文件”。您无需在 make 命令中指定“Makefile”。所以这应该效果更好:
./configure
make
(尽管您可能在该目录中留下了文件,在重新运行配置之前应将其删除)。
从 git 运行,你错过了分配文件如配置。如果您安装了合适版本的 autoconf,则必须首先运行来准备构建
autoconf
然而,git 树也省略了“defines.h.in”——需要更多准备:git 中的所有文件似乎都不匹配所需的模板。你可能能够重用发布 tar 包中的相应文件,尽管这是不可靠的(与任何其他源文件一样,它会发生变化)。由于文档没有提及此步骤,因此向开发人员报告错误可能会有所帮助。
修改后的问题询问的是funcs.h
,可以使用以下规则创建Makefile.aut
(“减少创作的 Makefile”,根据文件顶部的注释)。但截至2018年9月17日,仍无规则可制定defines.h.in
(使用 grep 来回答这些问题)。
答案3
这是我刚刚在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
可能是:
--with-regex=LIB select regular expression library
(LIB is one of
auto,none,gnu,pcre,pcre2,posix,
regcmp,re_comp,regcomp,regcomp-local) [auto]
--with-editor=PROGRAM use PROGRAM as the default editor [vi]
运行./configure --help
以获得完整的选项列表。
答案4
这个序列可以完成这项工作,但我不确定它是否正确:
git clone https://github.com/gwsw/less
cd less/
autoheader
autoconf
./configure
make -f Makefile.aut funcs.h
make
make -f Makefile.aut less.nro
make -f Makefile.aut lesskey.nro
make -f Makefile.aut lessecho.nro
make install