Назад | Перейти на главную страницу

Компиляция в Linux в определенный каталог, а затем упаковка программного обеспечения

Мне нужно собрать программу из исходников.

./config && make && make install

При этом он везде устанавливает кучу вещей (библиотеки и т. Д.)

Но дело в том, что мне также нужно скопировать это программное обеспечение на другой набор машин, на которые я не хочу устанавливать gcc.

Как я могу установить это программное обеспечение в один «каталог», чтобы затем просто скопировать его на другие машины?

Если вы собираетесь распространять программное обеспечение на другие машины, вам обязательно нужно упаковать его.

Вы не указываете, какой дистрибутив вы используете, поэтому следуют общие рекомендации.

Программное обеспечение в мирах 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, ...).

В зависимости от количества машин, на которые необходимо распространить это программное обеспечение, и процесса, который вы используете для его создания, обеспечения качества и хранения, применяются разные методы (или их части):

  • Узнайте, как стандартная система упаковки работает на выбранной вами платформе. Например, в Red Hat и производных вам нужно написать SPEC файл и использовать rpmbuild. Есть также легкие альтернативы, такие как fpm это может сэкономить ваше время.

  • Узнайте, как настроить частный репозиторий и управлять им для размещения ваших пользовательских пакетов. Некоторые инструменты в этой области включают createrepo и apt-utils, но также и приложения более высокого уровня, такие как cobbler, pulp или nexus.

  • Если ваш рабочий процесс более запутанный, например, если он включает QA пакета, вам могут потребоваться инструменты для его автоматизации. Много.

  • Задокументируйте процесс.