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

<p>это проблема, которая действительно ограничивает мое удовольствие от linux. если приложение не находится в репозитории или если у него нет сценария установки, тогда я действительно борюсь, где и как установить приложение из исходного кода.</p><p>по сравнению с windows это просто. вы (в значительной степени) обязаны использовать приложение-установщик, которое выполняет всю работу в мастере. с linux ... не так много.</p><p>итак, есть ли у вас какие-либо советы или инструкции по этому поводу или есть какие-либо веб-сайты, которые явно объясняют, как, почему и где устанавливать программы linux из исходных текстов?</p>

<p>обычно у проекта будет веб-сайт с инструкциями по его сборке и установке. google для этого в первую очередь.</p><p>по большей части вы будете делать либо:</p><ol> <li>загрузите tarball (файл tar.gz или tar.bz2), который является выпуском определенной версии исходного кода.</li> <li>распакуйте архив с помощью команды, подобной <code>tar zxvf myapp.tar.gz</code> для сжатого архива или <code>tar jxvf myapp.tar.bz2</code> для разархивированного архива</li> <li>перейдите в каталог, созданный выше</li> <li>запустить <code>./configure && make && sudo make install</code></li> </ol><p>или:</p><ol> <li>используйте git или svn или что-то еще, чтобы получить последний исходный код из их официального исходного репозитория</li> <li>перейдите в каталог, созданный выше</li> <li>запустить <code>./autogen.sh && make && sudo make install</code></li> </ol><p>как configure, так и autogen.sh примут аргумент --prefix, чтобы указать, где установлено программное обеспечение. я рекомендую проверить <a href="https://unix.stackexchange.com/questions/30/where-should-i-put-software-i-compile-myself">где мне разместить программное обеспечение, которое я сам компилирую?</a> , чтобы узнать, как лучше всего установить программное обеспечение, созданное на заказ.</p>

<p>я просто хочу добавить, что есть менеджеры пакетов, которые компилируют пакеты из исходного кода и обрабатывают все зависимости пакетов, флаги и т.д.</p><p>в системах bsd это <code>ports</code>: <a href="http://www.freebsd.org/doc/en\_us.iso8859-1/books/handbook/ports-using.html">с использованием коллекции портов</a> </p><p>в debian <code>apt-get</code> менеджер пакетов также может быть установлен из исходного кода: <a href="http://www.debian.org/doc/manuals/apt-howto/ch-sourcehandling.en.html">apt howto: работа с исходными пакетами</a> (то же самое касается ubuntu, linux-mint и всего остального, основанного на debian)</p><p>в дистрибутиве gentoo используется менеджер пакетов <code>portage</code>, который компилирует всю систему только из исходного кода: <a href="http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=1">введение в portage</a> .</p><p>slackware может компилировать пакеты, но я не знаю, есть ли там менеджер пакетов для этого .. =)</p><p>в любом случае вы всегда можете скомпилировать пакеты вручную, как упоминалось выше сэнди =) также должна быть возможность использовать <code>apt-get</code> или <code>portage</code> менеджеры пакетов в любом другом дистрибутиве ...</p>

<p>я думаю, что лучше всего прочитать документацию, прилагаемую к той конкретной программе или приложению, которое вы хотите установить. обычно внутри tarballs находятся файлы readmes/readme (исходный архив приложения, который вы обычно можете загрузить) или, возможно, даже файлы install, чтобы прочитать и узнать, какой способ установки указанного приложения является предпочтительным. короче говоря: rtfm;)</p>

<p>краткое описание использования коллекции портов во freebsd:</p><p><strong> найти порт </strong></p><p>порты упорядочены по категориям, поэтому, если вы не знаете, к какой категории относится порт, вы должны сначала найти его:</p><pre><code>cd /usr/ports make search name=myport </code></pre><p>иногда таких записей слишком много. я лично предпочитаю:</p><pre><code>find /usr/ports -name myport* -print -depth 2 </code></pre><p>использовать <code>*</code> при поиске, поскольку часто доступно несколько версий порта. аргумент глубины гарантирует, что ваши возвращаемые результаты не будут излишне загромождены совпадениями, которые вы вряд ли захотите.</p><p><strong> конфигурация </strong></p><p>часто вы хотите сделать некоторые настройки; программное обеспечение, такое как apache и postgres, практически требует его. существует три основных варианта: командная строка, окружение и файлы конфигурации make. чтобы начать с командной строки:</p><pre><code>make showconfig </code></pre><p>это перечислит параметры конфигурации по умолчанию. если вам нравятся настройки по умолчанию, вы готовы к компиляции и установке. если не,</p><pre><code>make config </code></pre><p>вызовет диалоговое окно, где вы можете выбрать, какие параметры вы хотите. <em> (не смущайтесь с этим и <code>make configure</code>, который настраивает ваш порт с выбранными вами опциями!)</em> этого часто достаточно, но для некоторых программ, таких как apache, часто существует сложная конфигурация, которую простой диалог не может обработать. для этого вам также следует взглянуть на makefile (ы), которые иногда дают вам некоторые дополнительные цели для make, которые дают вам больше информации. продолжить пример apache</p><pre><code>make show-modules make show-options make show-categories </code></pre><p>предоставит вам информацию о настройке выбранных вами модулей, опциях потоков и т.п. если значения по умолчанию вашего порта в основном хороши, и вы просто хотите изменить несколько вещей, вы также можете просто передать пары ключ = значение, такие как переменные среды:</p><pre><code>make myvbl1=myval1 ... install clean </code></pre><p>кроме того, вы можете установить параметры переключателя через <code>-d</code> опция:</p><pre><code>make -d myvar -d myothervar ... install clean </code></pre><p>однако для сложной конфигурации командная строка не будет работать хорошо, и вы лучше, ни один из первых двух методов не будет эффективным. в этом случае вы можете создать файл конфигурации и передать его в <code>make</code> с переменной \_\_make\_conf. freebsd имеет файл конфигурации по умолчанию: <code>/etc/make.conf</code>, которая обычно содержит информацию о ранее установленных портах и других системных настройках. для начала создайте файл с вашими параметрами портов, назовите его <code>~/myport.mk</code> и затем объедините этот файл с /etc/make.conf:</p><pre><code>cat /etc/make.conf ~/myport.mk >> ~/make.myport.conf </code></pre><p>затем вы можете дважды проверить свою конфигурацию:</p><pre><code>make showconfig \_\_make\_conf=~/make.port.conf </code></pre><p>и если все выглядит хорошо</p><pre><code>make install clean \_\_make\_conf=~/make.myport.conf </code></pre><p>beware! если вам нужно настроить параметры конфигурации после <code>make configure</code> или установка целиком или частично, которую вы <em> абсолютно необходимо сначала очистить вашу конфигурацию</em>:</p><pre><code>make rmconfig </code></pre><p>невыполнение этого требования приведет к неожиданному взаимодействию между подсистемой портов, значениями по умолчанию <code>make</code> вашего порта и желаемой конфигурацией.</p><p>это довольно много для краткого изложения, но сложность конфигурации в основном связана с приложением, а не с портом. bash, например, на самом деле не имеет никаких вариантов.</p><p><strong> установка </strong></p><p>это легкая часть:</p><pre><code>make install clean </code></pre><p>или вы можете</p><pre><code>make build make install make clean </code></pre><p>который просто больше печатать.</p><p>вот и все. очевидно, что вы можете сделать больше, например, рекурсивно перечислять зависимости и параметры конфигурации, обновлять патчи и так далее. здесь я отсылаю вас к разделу <a href="http://www.freebsd.org/doc/handbook/ports-using.html">ports</a> <a href="http://www.freebsd.org/doc/handbook">handbook</a> , справочной странице подсистемы портов (хорошая информация о дополнительных целях make) и справочной странице <code>make</code> ,.</p>

<p>недавно я начал использовать "checkinstall" при установке из источника вне моего менеджера пакетов. он создает "пакет" из стороннего архива, который затем можно установить (и удалить) с помощью инструментов менеджера пакетов.</p><p>проверьте эту статью - <a href="http://www.linuxjournal.com/content/using-checkinstall-build-packages-source">http://www.linuxjournal.com/content/using-checkinstall-build-packages-source</a> </p>