![在linux下编译到指定目录然后打包软件](https://linux22.com/image/659154/%E5%9C%A8linux%E4%B8%8B%E7%BC%96%E8%AF%91%E5%88%B0%E6%8C%87%E5%AE%9A%E7%9B%AE%E5%BD%95%E7%84%B6%E5%90%8E%E6%89%93%E5%8C%85%E8%BD%AF%E4%BB%B6.png)
我需要从源代码编译一个软件。
./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
,,,或/ ,...)。zypper
pkgsrc
dpkg
apt
aptitude
根据您需要分发该软件的机器数量,以及您用来构建、质量保证和存储该软件的过程,可以应用不同的方法(或其中的部分方法):