我无法运行配置文件进行手动 tar.gz 软件包安装。例如,解压缩文件后,我运行
$ sudo ./vim81/configure
[sudo] password for cli2:
./vim81/configure: line 6: cd: src: No such file or directory
但是,如果我在配置文件所在的目录中,我就可以运行配置文件。
$ ./configure
configure: loading cache auto/config.cache
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
...
我的问题是,如果我与源文件不在同一目录中,如何执行配置文件?
我知道我可以使用yum
或apt-get
来安装 vim,但这只是一个示例包,我想为任何包手动执行此操作。谢谢。
我可以使用
yum
或apt-get
来安装 vim,但只是一个示例包,我想为任何包手动执行此操作。
没有万能的通用配方来构建源代码,即使您将范围限制为仅基于 Autotools 的软件包(显然 Vim 不是,确切地说(。 这就是软件打包、包存储库和包管理器变得如此普遍的原因之一。
作为一个做过很多包构建的人,我向你保证,当我遇到一个项目时,我可以通过相当于直接configure; make; make install
打包,这是一种难得的快乐。 当我遇到一个时,它让我度过了一天。 其余时间,我必须在每个包的基础上找出任意数量的构建细节,例如
- 正在使用哪个配置/构建系统(如果有(
- Autotools/CMake/Python setuptools/etc.
- 这会影响所需的构建/安装命令,以及诸如构建可以/应该使用什么工作目录等详细信息
- 目标计算机需要或适合哪些配置选项,以及如何将它们表达到构建系统
- 可以是
configure
脚本的选项,make
的参数,Makefile
的手动调整,交互式问卷的答案,...
- 可以是
- 需要哪些依赖项,在什么版本上,以及如果我还没有它们,如何获取它们
- 有时,如何清理安装后,例如,
- 删除我不想安装的文件
- 将转到错误位置的文件移动(尽管生成配置的最佳可用(
- 修复文件权限或所有权
- 有时,其他安装任务,例如
- 添加外壳配置文件
- 创建符号链接
- 使用系统的服务控制子系统注册服务
- 安装动态链接器配置文件
所有这些至少也适用于手动构建。 如果你不依赖别人来做这件事(即通过使用别人构建的包(,那么你需要准备好自己做你构建的每个项目所需的尽可能多的事情。 没有办法从这个起点自动化它。