Linux 如果不在同一目录中,则无法运行配置文件
我无法运行手动tar.gz包安装的配置文件。例如,解压缩文件后,我运行Linux 如果不在同一目录中,则无法运行配置文件,linux,installation,autotools,configure,autoconf,Linux,Installation,Autotools,Configure,Autoconf,我无法运行手动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 wheth
$ 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,但这只是一个示例包,我想对任何包手动执行此操作
从源代码构建没有可靠的fire通用方法,即使您将范围限制为仅基于Autotools的包(显然Vim不是)。这就是为什么软件打包、包存储库和包管理器变得如此广泛的原因之一
作为一个执行了大量包构建的人,我向您保证,当我遇到一个项目时,我可以通过相当于一个简单的配置来打包,这是一种难得的乐趣;制作进行安装
。当我遇到一个,它使我的一天。剩下的时间,我必须在每个包的基础上找出任意数量的构建细节,例如
- 正在使用哪个配置/生成系统(如果有)
- Autotools/CMake/Python设置工具等
- 这会影响所需的构建/安装命令,以及构建可以/应该使用的工作目录等详细信息
- 目标计算机需要或适合哪些配置选项,以及如何向生成系统表达这些选项
- 可以是
脚本的选项、配置
的参数、生成
的手动调整、交互式问卷的答案生成文件
- 可以是
- 需要什么依赖项,在什么版本,如果我还没有依赖项,如何获取依赖项
- 有时,如何清理安装后,例如,
- 删除我不想安装的文件
- 移动到错误位置的文件(尽管使用了最佳的生成配置)
- 修复文件权限或所有权的步骤
- 有时,还需要执行其他安装任务,例如
- 添加shell配置文件
- 创建符号链接
- 使用系统的服务控制子系统注册服务
- 安装动态链接器配置文件
所有这些至少也同样适用于手动构建。如果您不依赖其他人来完成这项工作(即使用其他人构建的包),那么您需要准备好自己完成您构建的每个项目所需的所有这些工作。没有办法从这个起点将其自动化。您不应该使用
sudo
构建。仅在需要时将其用于安装
。您应该执行/configure&&make&&sudomake安装。我不相信自动工具允许在树上建房。您必须从configure
所在的目录运行它。(可能较新的自动工具不同)。为什么不先将cd
转到dir?因此,在子流程中,执行cd
。否?@cli2如果您不知道包含configure
脚本的目录,则无法完成此任务。您的问题需要了解此目录,无论这意味着进行假设还是使用通配符。另外,正如jww所解释的,在makeinstall
过程中,您应该只需要sudo
。@jww,Automake在默认情况下绝对提供源代码外构建,但它不是免费的:如果他们不小心,项目维护人员可以编写源代码外构建的Makefile.am文件。另外,如果作为项目维护者,您使用Autoconf而不使用Automake,那么您自己就可以获得任何源代码外的构建支持。