在linux中编译到特定的目录,然后打包软件

我需要从源头上编译一个软件。

./config && make && make install 

在这一点上,它确实安装了一堆东西(库等)

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

我怎样才能使软件安装在一个“目录”,然后只是复制到其他机器?

如果你打算把软件分发给其他机器,你肯定需要打包。

你没有指定你正在使用的发行版,所以一般的指导如下。

GNU / Linux和* BSD世界中的软件通常以打包forms和源代码的forms分发,只要它的许可证允许。

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

从源代码编译的软件通常(但不是总是)使用已​​知的工作stream( configure && make && make install )来构build,当使用一组通用工具来构build软件时,提到的选项( --prefix ) GNU项目被称为autotools 。 简而言之,可以通过一个选项来修改默认位置( /usr/local ), make install将使用该位置来复制本地系统中已编译的软件。

打包软件包括这个编译步骤,但更加复杂,因为它利用元数据来pipe理裸机autotools模式中不存在的依赖性,事务性和其他function。

看看下面的输出:

 $ 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. 

在这种情况下,包格式是RPM ,其他发行版使用DEB,包pipe理器也不同( yum / dnfzypperpkgsrcdpkgapt / aptitude等)。

根据您需要分发此软件的机器数量,以及您用于构build它的stream程,对它进行质量保证和存储,可以使用不同的方法(或其中的一部分):

  • 了解标准包装系统如何在您所select的平台中工作。 例如,在Red Hat及其衍生产品中,您需要编写一个SPEC文件并使用rpmbuild 。 还有像fpm这样的轻量级替代品可以节省您的时间。

  • 了解如何configuration和pipe理私有存储库以托pipe您的定制软件包。 这个领域的一些工具包括createrepoapt-utils ,还有更高层次的应用程序,比如cobblerpulp或者连接。

  • 如果您的工作stream程更加复杂,例如,如果它包含软件包的QA,则可能需要工具来自动执行此操作。 有很多 。

  • logging过程。