Можно ли установить двоичные файлы, собранные из исходного кода, на вторую машину?

Можно ли установить двоичные файлы, собранные из исходного кода, на вторую машину?

Я не уверен, что это лучшее место для этого вопроса. Пожалуйста, укажите мне правильное направление, если есть лучшее место.

Предположим, гипотетически, что у меня есть две машины: A — машина для разработки, а B — производственная машина. У A есть программное обеспечение, например, компилятор, который можно использовать для сборки программного обеспечения из исходного кода, а у B — нет.

На уровне A я могу легко собрать программное обеспечение из исходного кода, следуя обычной процедуре:

./configure
make

Затем я могу установить собранное программное обеспечение на A, запустив sudo make install. Однако, что мне действительно хотелось бы сделать, так это установить только что собранное программное обеспечение на B. Как лучше всего это сделать?

Я рассмотрел несколько вариантов:

  1. Использовать менеджер пакетов для установки программного обеспечения на B: для меня это не вариант, поскольку программное обеспечение, доступное в менеджере пакетов, сильно устарело.
  2. Установите компилятор и другие инструменты сборки на B: Я бы предпочел не устанавливать инструменты сборки на рабочую машину из-за различных ограничений.
  3. Скопируйте двоичные файлы из A в B вручную: это чревато ошибками, и я хотел бы убедиться, что двоичные файлы установлены единообразно на всех рабочих машинах.
  4. Установить только makeна B, перенести исходный каталог и запустить sudo make installна B: это лучшее решение, которое я нашел на данный момент, но по какой-то причине (возможно, из-за смещения часов) makeпопытается пересобрать программное обеспечение, которое уже должно было быть собрано, что не удается, поскольку инструменты сборки не установлены на B. Поскольку у моих машин также ужасная скорость ввода-вывода, перенос исходного каталога занимает очень много времени.

Было бы действительно здорово, если бы был способ сделать какой-то пакет, содержащий собранные двоичные файлы, который можно было бы передать и запустить для установки двоичных файлов и файлов конфигурации. Существует ли такой инструмент?

решение1

Используя то, что у вас есть на данный момент, и если makefile сгенерирован с помощью GNU autotools, я бы установилцелевое местоположение или путь установкис

./configure --prefix=/somewhere/else/than/the/usual/usr/local

а затем беги

make && make install

и наконец скопируйте файлы из папки prefix в usr/папку на другой машине. Это предполагает, что обе машины имеют одинаковую архитектуру, если нет, то используйте соответствующую перекрестную цепочку инструментов.

решение2

Самый чистый способ сделать это, вероятно, будет использовать инструменты упаковки, которые ОС использует для создания пакета для приложения, и установить его как любой другой. Как это сделать, зависит от менеджеров пакетов и систем), и здесь есть определенная кривая обучения.

Ручная установка может быть несколько проще, если исходный пакет поддерживает установку программного обеспечения в пределах некоторого поддерева (например, /opt/packagenameили /usr/local/packagename). Скомпилируйте и установите на одной машине, затем скопируйте только это поддерево в то же место на другой машине. Каталог должен включать все соответствующие файлы и только их.

Если вам нужны изменения в /etc, вам придется сделать это вручную. Кроме того, чтобы получить доступ к бинарным файлам, вам придется либо создать симлинк на какой-либо каталог в вашем пути, либо добавить binкаталог пакетов в путь. Большинство пакетов, использующих autoconf/, automakeмогут принимать --prefixаргумент в ./configureскрипт, чтобы задать путь установки.

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

Связанный контент