it-swarm-ru.tech

Как скомпилировать и установить программы из исходного кода

Это проблема, которая действительно ограничивает мое удовольствие от Linux. Если приложение не находится в репозитории или если у него нет сценария установки, тогда я действительно борюсь, где и как установить приложение из исходного кода.

По сравнению с Windows это просто. Вы (в значительной степени) обязаны использовать приложение-установщик, которое выполняет всю работу в мастере. С Linux ... не так много.

Итак, есть ли у вас какие-либо советы или инструкции по этому поводу или есть какие-либо веб-сайты, которые явно объясняют, как, почему и где устанавливать программы Linux из исходных текстов?

42
Nitrodist

Обычно у проекта будет веб-сайт с инструкциями по его сборке и установке. Google для этого в первую очередь.

По большей части вы будете делать либо:

  1. Загрузите tarball (файл tar.gz или tar.bz2), который является выпуском определенной версии исходного кода.
  2. Распакуйте архив с помощью команды, подобной tar zxvf myapp.tar.gz для сжатого архива или tar jxvf myapp.tar.bz2 для разархивированного архива
  3. перейдите в каталог, созданный выше
  4. запустить ./configure && make && Sudo make install

Или:

  1. Используйте git или svn или что-то еще, чтобы получить последний исходный код из их официального исходного репозитория
  2. перейдите в каталог, созданный выше
  3. запустить ./autogen.sh && make && Sudo make install

Как configure, так и autogen.sh примут аргумент --prefix, чтобы указать, где установлено программное обеспечение. Я рекомендую проверить Где мне разместить программное обеспечение, которое я сам компилирую? , чтобы узнать, как лучше всего установить программное обеспечение, созданное на заказ.

24
Sandy

Я просто хочу добавить, что есть менеджеры пакетов, которые компилируют пакеты из исходного кода и обрабатывают все зависимости пакетов, флаги и т.д.

В системах BSD это ports: с использованием коллекции портов

В Debian apt-get менеджер пакетов также может быть установлен из исходного кода: APT HOWTO: Работа с исходными пакетами (То же самое касается Ubuntu, Linux-mint и всего остального, основанного на Debian)

В дистрибутиве Gentoo используется менеджер пакетов portage, который компилирует всю систему только из исходного кода: Введение в Portage .

Slackware может компилировать пакеты, но я не знаю, есть ли там менеджер пакетов для этого .. =)

В любом случае вы всегда можете скомпилировать пакеты вручную, как упоминалось выше Сэнди =) Также должна быть возможность использовать apt-get или portage менеджеры пакетов в любом другом дистрибутиве ...

4
holms

Я думаю, что лучше всего прочитать документацию, прилагаемую к той конкретной программе или приложению, которое вы хотите установить. Обычно внутри tarballs находятся файлы readmes/README (исходный архив приложения, который вы обычно можете загрузить) или, возможно, даже файлы INSTALL, чтобы прочитать и узнать, какой способ установки указанного приложения является предпочтительным. Короче говоря: RTFM;)

2
reiche

Краткое описание использования Коллекции Портов во FreeBSD:

Найти порт

Порты упорядочены по категориям, поэтому, если вы не знаете, к какой категории относится порт, вы должны сначала найти его:

cd /usr/ports
make search name=myport

Иногда таких записей слишком много. Я лично предпочитаю:

find /usr/ports -name myport* -print -depth 2

Использовать * при поиске, поскольку часто доступно несколько версий порта. Аргумент глубины гарантирует, что ваши возвращаемые результаты не будут излишне загромождены совпадениями, которые вы вряд ли захотите.

Конфигурация

Часто вы хотите сделать некоторые настройки; Программное обеспечение, такое как Apache и Postgres, практически требует его. Существует три основных варианта: командная строка, окружение и файлы конфигурации make. Чтобы начать с командной строки:

make showconfig

это перечислит параметры конфигурации по умолчанию. Если вам нравятся настройки по умолчанию, вы готовы к компиляции и установке. Если не,

make config

вызовет диалоговое окно, где вы можете выбрать, какие параметры вы хотите. (Не смущайтесь с этим и make configure, который настраивает ваш порт с выбранными вами опциями!) Этого часто достаточно, но для некоторых программ, таких как Apache, часто существует сложная конфигурация, которую простой диалог не может обработать. Для этого вам также следует взглянуть на Makefile (ы), которые иногда дают вам некоторые дополнительные цели для make, которые дают вам больше информации. Продолжить пример Apache

make show-modules
make show-options
make show-categories

предоставит вам информацию о настройке выбранных вами модулей, опциях потоков и т.п. Если значения по умолчанию вашего порта в основном хороши, и вы просто хотите изменить несколько вещей, вы также можете просто передать пары ключ = значение, такие как переменные среды:

make MYVBL1=MYVAL1 ... install clean

Кроме того, вы можете установить параметры переключателя через -D опция:

make -D MYVAR -D MYOTHERVAR ... install clean

Однако для сложной конфигурации командная строка не будет работать хорошо, и вы лучше, ни один из первых двух методов не будет эффективным. В этом случае вы можете создать файл конфигурации и передать его в make с переменной __MAKE_CONF. FreeBSD имеет файл конфигурации по умолчанию: /etc/make.conf, которая обычно содержит информацию о ранее установленных портах и ​​других системных настройках. Для начала создайте файл с вашими параметрами портов, назовите его ~/myport.mk и ​​затем объедините этот файл с /etc/make.conf:

cat /etc/make.conf ~/myport.mk >> ~/make.myport.conf

затем вы можете дважды проверить свою конфигурацию:

make showconfig __MAKE_CONF=~/make.port.conf

и если все выглядит хорошо

make install clean __MAKE_CONF=~/make.myport.conf

BEWARE! Если вам нужно настроить параметры конфигурации после make configure или установка целиком или частично, которую вы абсолютно необходимо сначала очистить вашу конфигурацию:

make rmconfig

Невыполнение этого требования приведет к неожиданному взаимодействию между подсистемой портов, значениями по умолчанию make вашего порта и желаемой конфигурацией.

Это довольно много для краткого изложения, но сложность конфигурации в основном связана с приложением, а не с портом. Bash, например, на самом деле не имеет никаких вариантов.

Установка

Это легкая часть:

make install clean

или вы можете

make build
make install
make clean

который просто больше печатать.

Вот и все. Очевидно, что вы можете сделать больше, например, рекурсивно перечислять зависимости и параметры конфигурации, обновлять патчи и так далее. Здесь я отсылаю вас к разделу PortsHandbook , справочной странице подсистемы портов (хорошая информация о дополнительных целях make) и справочной странице make ,.

1
gvkv

Недавно я начал использовать "Checkinstall" при установке из источника вне моего менеджера пакетов. Он создает "пакет" из стороннего архива, который затем можно установить (и удалить) с помощью инструментов менеджера пакетов.

Проверьте эту статью - http://www.linuxjournal.com/content/using-checkinstall-build-packages-source

0
aryeh