2.5. 安装任意工件
与 UNIX 类似的系统使用文件系统层次结构标准(FHS)指定适合特定文件的目录。
从 RPM 软件包安装的文件按照 FHS 放置在其中。例如,可执行文件应进入一个位于系统 $PATH
变量中的目录。
在本文档的上下文中,Arbitrary Artifact(任意工件) 代表从 RPM 安装到系统的项。对于 RPM 和系统,它可以是脚本、从软件包的源代码编译的二进制代码、预编译二进制文件或任何其他文件。
这部分论述了将 Arbitrary Artifacts 放置到系统的两个常用方法:
2.5.1. 使用 install 命令
在构建自动化工具(如 GNU make )进行构建自动化工具时,打包程序通常使用 install
命令;例如,打包程序不需要额外的开销。
install
命令由 coreutils 向系统提供,后者将工件放置在文件系统中具有指定权限集的文件系统中。
以下流程使用之前作为此安装方法创建的任意工件的 bello
文件。
步骤
运行
install
命令,将bello
文件放入/usr/bin
目录中,权限为可执行脚本:$ sudo install -m 0755 bello /usr/bin/bello
现在,
stllo
位于$PATH
变量中列出的目录中。从任何目录中执行
bello
,而不指定其完整路径:$ cd ~ $ bello Hello World
2.5.2. 使用 make install 命令
使用 make install
命令是自动安装构建软件到系统的方法。在这种情况下,您需要指定如何在由开发人员编写的 Makefile
中向系统安装任意工件。
此流程演示了如何将构建工件安装到系统中所选位置。
步骤
将
install
部分添加到Makefile
中:Makefile
cello: gcc -g -o cello cello.c clean: rm cello install: mkdir -p $(DESTDIR)/usr/bin install -m 0755 cello $(DESTDIR)/usr/bin/cello
请注意,
cello:
,clean:
, andinstall:
下的行需要以一个 tab 空间开头。注意$(DESTDIR) 变量是一个 GNU make 内置变量,通常用于将安装指定到与根目录不同的目录中。
现在,您只能使用
Makefile
来构建软件,也可以将其安装到目标系统。构建并安装
cello.c
程序:$ make gcc -g -o cello cello.c $ sudo make install install -m 0755 cello /usr/bin/cello
因此,
cello
现在位于$PATH
变量中列出的目录中。从任何目录中执行
cello
,而不指定其完整路径:$ cd ~ $ cello Hello World