Score
0
Watch 45 Star 58 Fork 136

openEuler / communityGoMulanPSL-2.0

Join us
Explore and code with more than 5 million developers,Free private repositories !:)
Sign up
Community governance is listed in the repository. spread retract

Clone or download
package-install.md 4.69 KB
Copy Edit Web IDE Raw Blame History

构建软件包

rpm-build本地构建

通过rpm-build本地构建软件包的基本过程如下:

  1. 从openEuler社区下载源码。
  2. 使用rpm-build进行本地构建。
  3. 获取并安装已构建的软件包。

rpm-build本地构建软件包的具体操作步骤如下:

  1. 配置repo源,具体请参考开发环境准备中的配置repo源内容。

  2. 使用rpm-build进行本地构建。

    1. 查找需要操作的源码。以openssl为例,请根据实际修改。

      $ dnf list | grep openssl

      查看打印信息中是否有包含openssl软件名的.src的文件,若有则继续下面的操作,若无则在社区上留言。

    2. 下载源码文件。

      $ yumdownloader --source openssl
    3. 安装openssl软件包。

      $ rpm -ivh openssl-1.1.1d-5.src.rpm 

      命令执行完成后,会在 $HOME 目录下生成rpmbuild目录。rpmbuild目录下有如下目录:

      • SOURCES:源代码目录,保存源码包(如 .tar 包)和所有 patch 补丁。
      • SPECS:Spec 文件目录,保存 RPM 包配置(.spec)文件。
    4. 切换目录到$HOME/rpmbuild/SPECS,然后执行rpmbuild命令构建软件包。注意rpmbuild并不需要root权限执行。我们强烈建议使用普通用户执行这一命令。

      $ cd ~/rpmbuild/SPECS
      $ rpmbuild -ba openssl.spec

      命令执行后,可能会有一些报错信息,且构建不同的软件包报错信息不同。请根据具体的报错信息进行解决。

      • 缺少依赖包报错信息。

        命令执行后,若有缺少依赖的软件包报错信息,则根据提示安装依赖软件包。 如下所示:

        error: Failed build dependencies:

        lksctp-tools-devel is needed by openssl-1:1.1.1d-5.aarch64

        $ sudo dnf install lksctp-tools-devel -y
      • 自检失败报错信息。

        有些软件包,如coreutils,augeas,diffutils,在rpmbuild命令执行后,有提示“FAIL test-localeconv (exit status: 134)”报错信息。该报错信息是由于Aarch64和x86_64在char类型上定义不一致导致的,请在Makefile文件中增加--fsigned-char编译选项以解决。

      解决了所有报错信息后再次执行rpmbuild -ba openssl.spec构建软件包。编译完成后,在rpmbuild目录会新增如下目录:

      • BUILD:构建目录,源码包被解压至此,并在该目录的子目录完成构建。
      • RPMS:标准 RPM 包目录,生成/保存二进制 RPM 包。
      • SRPMS:源代码 RPM 包目录,生成/保存源码 RPM 包(SRPM)。
    5. 查看构建结果。

      $ tree ~/rpmbuild/*RPMS

      命令执行后,打印信息如下:

      /home/user-A/rpmbuild/RPMS

      ├── aarch64

      │ ├── openssl-1.1.1d-5.aarch64.rpm

      │ ├── openssl-debuginfo-1.1.1d-5.aarch64.rpm

      │ ├── openssl-debugsource-1.1.1d-5.aarch64.rpm

      │ └── openssl-devel-1.1.1d-5.aarch64.rpm

      └── noarch

      └── openssl-help-1.1.1d-5.noarch.rpm

      /home/user-A/rpmbuild/SRPMS

      └── openssl-1.1.1d-5.src.rpm

      说明:
      若命令执行提示“tree: command not found”,请执行dnf install tree安装tree软件包。

  3. 安装构建后的软件包。

    1. 切换到已构建的软件包的目录,以openssl-devel-1.1.1d-5.aarch64.rpm软件包的安装为例。

      $ cd ~/rpmbuild/RPMS/aarch64
    2. 以 root 身份执行rpm -ivh命令安装软件包。

      $ sudo rpm -ivh openssl-devel-1.1.1d-5.aarch64.rpm

      命令执行后,若有提示缺少依赖的软件包,则根据提示安装依赖软件包。 如下所示:

      error: Failed dependencies:

      krb5-devel is needed by openssl-devel-1:1.1.1d-5.aarch64

      $ sudo dnf install krb5-devel -y

      依赖软件包安装完成后再次执行rpm -ivh openssl-devel-1.1.1d-5.aarch64.rpm安装软件包。出现如下提示时表示安装成功。

      Updating / installing...

      1:openssl-devel-1:1.1.1d-5 ################################# [100%]

Go
1
https://gitee.com/openeuler/community.git
git@gitee.com:openeuler/community.git
openeuler
community
community
master

Help Search

205735 778617b6 1899542 205747 347fc4a1 1899542