2009-02-21 2 views
6

Как мы можем создать пакет программного обеспечения. Так что после извлечения нашего программного обеспечения пользователя дегтя шара может сделать типичных шагов:Как создать пакет программного обеспечения в Unix/Linux

$ gunzip < mycode.tar.gz | tar xvf - 
$ ./configure 
$ make 
$ make install 

ответ

1

Используйте Autotools создать конфигурационный скрипт (который будет генерировать Makefile необходимо в течение последних двух шагов), а затем сделать тарболл с весь ваш код и прочее в нем.

1

rpmbuild является командой для создания RPM Packages

man page

tutorial

+0

Когда я прочитал связанный manpage, он, похоже, не отвечает на вопрос, который, как мне кажется, был спрошен: как вы обеспечиваете гибкую сборку платформы в первую очередь (например, помощь при написании configure и makefile) ... rpmbuild кажется, что у вас есть такая вещь на месте. – dmckee

+0

Возможно, я неправильно понял вопрос. http://www.lrde.epita.fr/~adl/autotools.html – Sharique

3

В прежние времена этот процесс был сделан вручную. Каждый Makefile был написан вручную (файл make использует как своего рода сценарий). Это стало проблематичным, когда дело касалось переносимости, и поэтому был создан сценарий configure. Сценарий ./configure был написан вручную для каждого проекта. В конце концов это было автоматизировано GNU с их пакетом autotools. Он состоит из autoconf, automake и некоторых других. Хотя существуют альтернативы, особенно для make, наиболее широко используется autotools. ... По крайней мере, в системах GNU/Linux. Альтернативы включают уже упомянутые CMake, Boost.Build, Boost.Jam, SCons и другие.

1

Autotools.

Вам необходимо написать сценарии configure.ac и Makefile.am.

Конфигурация.ac довольно проста и может быть в основном автогенерирована из запуска «autoscan» в исходном коде. Это создаст файл configure.scan, который вам нужно будет настроить для создания окончательного файла configure.ac.

Файл Automake.am основан на соглашениях. Вы, вероятно, нужно что-то вроде:

AUTOMAKE_OPTIONS = foreign subdir-objects 
AM_CXXFLAGS = -std=c++11 -static-libstdc++ -Wall -Werror \ 
    -Wfatal-errors -I blah 
AM_LDFLAGS = blah 

bin_PROGRAMS = mybinary 
mybinary_SOURCES = \ 
    blah.h blah.cc 

все основано на схеме именования:

  • дист против nodist = он должен быть построен
  • инст против noinst = он должен быть установлен
  • файлы
  • DATA = данные
  • MANS = мужчина страницы
  • иСТОЧНИКОВ = исходный код

так dist_noinst_DATA предназначен для файлов данных, необходимых для строительства, но не установлены.

После того как вы оба этих файлов обычно нужно запустить что-то вроде:

ACLOCAL & & AUTOHEADER & & Automake --add пропущенное & & Autoconf

для установки Autotools файлы, необходимые для строительства. Это можно поместить в сценарий оболочки и запустить до запуска ./configure.