Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

2.5. 安装任意工件

与 UNIX 类似的系统使用文件系统层次结构标准(FHS)指定适合特定文件的目录。

从 RPM 软件包安装的文件按照 FHS 放置在其中。例如,可执行文件应进入一个位于系统 $PATH 变量中的目录。

在本文档的上下文中,Arbitrary Artifact(任意工件) 代表从 RPM 安装到系统的项。对于 RPM 和系统,它可以是脚本、从软件包的源代码编译的二进制代码、预编译二进制文件或任何其他文件。

这部分论述了将 Arbitrary Artifacts 放置到系统的两个常用方法:

2.5.1. 使用 install 命令

在构建自动化工具(如 GNU make )进行构建自动化工具时,打包程序通常使用 install 命令;例如,打包程序不需要额外的开销。

install 命令由 coreutils 向系统提供,后者将工件放置在文件系统中具有指定权限集的文件系统中。

以下流程使用之前作为此安装方法创建的任意工件的 bello 文件。

步骤

  1. 运行 install 命令,将 bello 文件放入 /usr/bin 目录中,权限为可执行脚本:

    $ sudo install -m 0755 bello /usr/bin/bello

    现在,stllo 位于 $PATH 变量中列出的目录中。

  2. 从任何目录中执行 bello,而不指定其完整路径:

    $ cd ~
    
    $ bello
    Hello World

2.5.2. 使用 make install 命令

使用 make install 命令是自动安装构建软件到系统的方法。在这种情况下,您需要指定如何在由开发人员编写的 Makefile 中向系统安装任意工件。

此流程演示了如何将构建工件安装到系统中所选位置。

步骤

  1. 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:, and install: 下的行需要以一个 tab 空间开头。

    注意

    $(DESTDIR) 变量是一个 GNU make 内置变量,通常用于将安装指定到与根目录不同的目录中。

    现在,您只能使用 Makefile 来构建软件,也可以将其安装到目标系统。

  2. 构建并安装 cello.c 程序:

    $ make
    gcc -g -o cello cello.c
    
    $ sudo make install
    install -m 0755 cello /usr/bin/cello

    因此,cello 现在位于 $PATH 变量中列出的目录中。

  3. 从任何目录中执行 cello,而不指定其完整路径:

    $ cd ~
    
    $ cello
    Hello World