在linux下编译到指定目录然后打包软件

在linux下编译到指定目录然后打包软件

我需要从源代码编译一个软件。

./config && make && make install

它确实在各处安装了很多东西(库等)

但问题是,我还需要将该软件复制到另一组我不想安装 gcc 的机器上。

我怎样才能将该软件安装在一个“目录”中,然后将其复制到其他机器上?

答案1

如果你打算将软件分发到其他机器,你肯定需要对其进行打包。

您没有指定正在使用哪个分布,因此请遵循一般指导。

当许可证允许时,GNU/Linux 和 *BSD 世界中的软件通常以打包形式和源代码分发。

不同的发行版使用不同的前端或包管理器来更新、安装和删除该软件。

从源代码编译的软件通常(但并非总是)使用已​​知的工作流程(configure && make && make install)构建,您提到的选项(--prefix)是使用一组通用工具从 GNU 项目构建软件时存在的选项,称为autotools。简单地说,可以传递一个选项来修改在本地系统中复制编译软件的默认位置( /usr/local) 。make install

打包软件包括这个编译步骤,但更加复杂,因为它利用元数据来管理依赖关系、事务性和其他基本autotools模式中不存在的功能。

看一下输出:

$ rpm -qi coreutils

Name        : coreutils
Version     : 8.23
Release     : 10.fc22
Architecture: x86_64
Install Date: Fri 15 May 2015 11:55:00 PM BST
Group       : System Environment/Base
Size        : 16324354
License     : GPLv3+
Signature   : RSA/SHA256, Thu 14 May 2015 03:22:57 PM BST, Key ID 11adc0948e1431d5
Source RPM  : coreutils-8.23-10.fc22.src.rpm
Build Date  : Thu 14 May 2015 10:00:06 AM BST
Build Host  : buildhw-05.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : http://www.gnu.org/software/coreutils/
Summary     : A set of basic GNU tools commonly used in shell scripts
Description :
These are the GNU core utilities.  This package is the combination of
the old GNU fileutils, sh-utils, and textutils packages.

在这种情况下,包格式为每分钟转数,其他发行版使用DEB ,并且包管理器也不同(yum/ dnf,,,或/ ,...)。zypperpkgsrcdpkgaptaptitude

根据您需要分发该软件的机器数量,以及您用来构建、质量保证和存储该软件的过程,可以应用不同的方法(或其中的部分方法):

  • 了解标准打包系统在您选择的平台上的工作原理。例如,在 Red Hat 及其衍生产品中,您需要编写一个规格文件并使用rpmbuild。还有一些轻量级的替代方案,例如fpm这可以节省你的时间。

  • 了解如何配置和管理私有存储库以托管您的自定义包。此领域的一些工具包括createrepoapt-utils,但也包括更高级的应用程序,例如cobblerpulpnexus

  • 如果您的工作流程更加复杂,例如如果它包括包的 QA,您可能需要工具来自动化这一过程。有许多

  • 记录该过程。

相关内容