如果不在同一目录中,则无法运行配置文件



我无法运行配置文件进行手动 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
...

我的问题是,如果我与源文件不在同一目录中,如何执行配置文件?

我知道我可以使用yumapt-get来安装 vim,但这只是一个示例包,我想为任何包手动执行此操作。谢谢。

我知道

我可以使用yumapt-get来安装 vim,但只是一个示例包,我想为任何包手动执行此操作。

没有万能的通用配方来构建源代码,即使您将范围限制为仅基于 Autotools 的软件包(显然 Vim 不是,确切地说(。 这就是软件打包、包存储库和包管理器变得如此普遍的原因之一。

作为一个做过很多包构建的人,我向你保证,当我遇到一个项目时,我可以通过相当于直接configure; make; make install打包,这是一种难得的快乐。 当我遇到一个时,它让我度过了一天。 其余时间,我必须在每个包的基础上找出任意数量的构建细节,例如

  • 正在使用哪个配置/构建系统(如果有(
    • Autotools/CMake/Python setuptools/etc.
    • 这会影响所需的构建/安装命令,以及诸如构建可以/应该使用什么工作目录等详细信息
  • 目标计算机需要或适合哪些配置选项,以及如何将它们表达到构建系统
    • 可以是configure脚本的选项,make的参数,Makefile的手动调整,交互式问卷的答案,...
  • 需要哪些依赖项,在什么版本上,以及如果我还没有它们,如何获取它们
  • 有时,如何清理安装后,例如,
    • 删除我不想安装的文件
    • 将转到错误位置的文件移动(尽管生成配置的最佳可用(
    • 修复文件权限或所有权
  • 有时,其他安装任务,例如
    • 添加外壳配置文件
    • 创建符号链接
    • 使用系统的服务控制子系统注册服务
    • 安装动态链接器配置文件

所有这些至少也适用于手动构建。 如果你不依赖别人来做这件事(通过使用别人构建的包(,那么你需要准备好自己做你构建的每个项目所需的尽可能多的事情。 没有办法从这个起点自动化它。

最新更新