Мне было интересно: при установке чего-то есть простой способ двойного щелчка по исполняемому файлу установки, а с другой стороны, есть способ собрать его из исходного кода.
Последний, загружающий исходный пакет, действительно громоздок.
Но в чем принципиальная разница между этими двумя методами?
Все программное обеспечение является программами , которые также называются исходными пакетами . Таким образом, все исходные пакеты должны быть собраны в первую очередь для запуска в вашей системе.
Эти бинарные пакеты являются один, которые уже строит из источника кто — то с общими функциями и параметрами, в программном обеспечении , так что большое количество пользователей может установить и использовать его.
Бинарные пакеты просты в установке .
Но, возможно, не все варианты из пакета upstream.
Таким образом, для установки из исходного кода вам необходимо создать исходный код самостоятельно. Это означает, что вам нужно заботиться о зависимостях самостоятельно. Также вам необходимо знать все функции пакета, чтобы вы могли его соответствующим образом собрать.
Научись Linux: сборка программ из исходников (эпизод 13)
Преимущества установки из источника:
- Вы можете установить последнюю версию и всегда оставаться в курсе, будь то исправление безопасности или новая функция.
- Позволяет вам обрезать функции при установке в соответствии с вашими потребностями.
- Точно так же вы можете добавить некоторые функции, которые могут отсутствовать в двоичном файле.
- Установите его в желаемом месте.
- В случае некоторого программного обеспечения вы можете предоставить информацию о вашем оборудовании для соответствующей установки.
Короче говоря, установка из исходного кода дает вам возможность большой настройки, в то же время это требует больших усилий, в то время как установка из бинарного файла проще, но вы не сможете настроить ее так, как хотите.
Обновление : добавление аргумента, относящегося к безопасности, в комментариях ниже. Да, это правда, что при установке из двоичного файла у вас нет целостности исходного кода. Но тогда это зависит от того, откуда у вас бинарный файл. Существует множество надежных источников, из которых вы можете получить бинарный файл любого нового проекта, единственным минусом является время . Для того, чтобы бинарный файл обновлений или даже новый проект появился в наших доверенных репозиториях, может потребоваться некоторое время.
И, прежде всего, о безопасности программного обеспечения, я хотел бы выделить эту веселую страницу в Bell-Labs, предоставленную Джо в комментариях ниже.
Исходный код также может быть скомпилирован оптимизированным образом для вашей системы (что .. может быть не очень хорошая идея, так как скомпилированный материал «специфичен» для системы и может не работать на резервном . но у вас есть источник, вы можете перекомпилировать (если у вас есть время для этого))
Это зависит от того, есть ли у вас такая «резервная система». Если вы просто проводите какие-то исследования, вы обычно этого не делаете.
5 причин научиться собирать софт из исходников
Для гиперпараноида одним из преимуществ установки из исходного кода является безопасность и возможность просмотра кода, если вы можете и хотите это делать: когда вы устанавливаете из исходного кода, вы точно знаете, что у вас есть двоичный файл из этого исходного кода, а не бинарный файл с неизвестными модификациями (при условии, что вы доверяете источнику в первую очередь).
Исходный файл содержит исходный код, написанный разработчиком на любом языке, который он / она выбирает (C, C ++, Python и т. Д.), И является универсальным. Это не относится ни к одному дистрибутиву, а во многих случаях к любой операционной системе.
Пакет (например, RPM или DEB) — это двоичный исполняемый файл (или интерпретируемый скрипт и т. Д.), Предварительно подготовленный для вашего конкретного дистрибутива. Задача подготовки исходного кода для компиляции (добавления необходимых исправлений и т. Д.), Фактической компиляции, создания специфических для дистрибутива конфигурационных файлов, создания сценариев до и после установки и т. Д. Выполняется для вас сопровождающим пакета.
Другими словами, вся работа с ослом была выполнена для вас в пакете, в то время как вам придется делать это самостоятельно, если вы решите установить из исходного кода.
Практически во всех случаях использовать пакет намного проще:
- Их намного проще установить
- Они специально предназначены для работы с вашим дистрибутивом
- Они иногда исправляются сопровождающим пакета, чтобы исправить ошибки, специфичные для дистрибутива.
- Менеджер пакетов удалит их
- Менеджер пакетов будет управлять всеми зависимостями для вас
- Менеджер пакетов позаботится об обновлениях
- Вам не нужно устанавливать инструменты разработчика в вашей системе (компиляторы, make и т. Д.)
Однако иногда упакованная версия является старой версией или, что еще хуже, упакованной версии не существует; в этом случае ваш единственный вариант — собрать себя. Если вы это сделаете, вам нужно учитывать следующее:
- Вам нужно будет установить все инструменты разработчика в вашей системе
- Вы будете нести ответственность за проверку обновлений и перекомпиляцию
- Вам нужно будет убедиться, что все зависимости установлены, включая dev пакеты — их может быть много.
- Возможно, вам придется отлаживать проблемы, если они не работают должным образом в вашем дистрибутиве.
Если вы готовы приложить дополнительные усилия, то компиляция из исходного кода может дать вам следующие преимущества:
- Доступ к последней доступной версии
- Опция оптимизации процесса компиляции для производительности / стабильности
- Наслаждение!
Обратите внимание, что, хотя в готовых пакетах некоторых дистрибутивов предусмотрены двоичные исполняемые файлы, которые готовы к установке и запуску (например, RPM и DEB), другие дистрибутивы предоставляют пакеты, которые просто автоматизируют процесс компиляции.
ebuilds Примером этого является Gentoo — пакет — это в основном инструкции для менеджера пакетов, описывающие, как скомпилировать и установить исполняемый файл. Это имеет много преимуществ традиционных менеджеров пакетов (автоматическое обновление, удаление и т. Д.), В то же время позволяя пользователю оптимизировать процесс компиляции по своему вкусу.
Arch Linux имеет систему упаковки, в которой основные пакеты являются двоичными, тогда как многие дополнительные пакеты компилируются в системе с использованием PKGBUILD файлов.
Источник: qastack.ru
Как скомпилировать и установить из исходного кода на Ubuntu
Ubuntu и другие дистрибутивы Linux имеют обширные репозитории пакетов, чтобы избавить вас от необходимости что-либо компилировать самостоятельно. Тем не менее, иногда вы можете найти неясное приложение или новую версию программы, которую вам придется скомпилировать из исходного кода.
Вам не нужно быть программистом, чтобы создать программу из исходного кода и установить ее в своей системе; вам нужно только знать основы. С помощью всего лишь нескольких команд, вы можете построить из источника, как профессионал.
Установка необходимого программного обеспечения
При установке пакета build-essential в репозитории пакетов Ubuntu автоматически устанавливается базовое программное обеспечение, которое вам нужно будет скомпилировать из исходного кода, например компилятор GCC и другие утилиты. Установите его, выполнив следующую команду в терминале:
sudo apt-get install build-essential
Введите Y и нажмите Enter, чтобы подтвердить установку при появлении запроса.
Получение исходного пакета
Теперь вам понадобится исходный код желаемого приложения. Эти пакеты обычно находятся в сжатых файлах с расширениями .tar.gz или .tar.bz2.
В качестве примера, давайте попробуем скомпилировать Pidgin из исходного кода – возможно, есть более новая версия, которая еще не была упакована, и мы хотим ее сейчас. Найдите файл программы .tar.gz или .tar.bz2 и сохраните его на своем компьютере.
Файл .tar.gz или .tar.bz2 похож на файл .zip. Чтобы использовать его, нам нужно извлечь его содержимое.
Используйте эту команду для извлечения файла .tar.gz:
tar -xzvf file.tar.gz
Или используйте эту команду для извлечения файла .tar.bz2:
tar -xjvf file.tar.bz2
Вы получите каталог с тем же именем, что и у вашего пакета с исходным кодом. Используйте команду cd, чтобы ввести его.
Разрешение зависимостей
Когда вы окажетесь в извлеченном каталоге, выполните следующую команду:
(Обратите внимание, что некоторые приложения могут не использовать ./configure. Проверьте файл «README» или «INSTALL» в извлеченной папке приложения для получения более конкретных инструкций.)
(Часть ./ говорит оболочке Bash поискать в текущем каталоге файл «configure» и запускать его. Если вы опустите ./, Bash будет искать программу с именем «configure» в системных каталогах, таких как/bin и/USR/бен.)
Команда ./configure проверяет вашу систему на наличие необходимого программного обеспечения, необходимого для сборки программы.
Если вам не повезло (или в вашей системе уже есть много необходимых пакетов), вы будете получать сообщения об ошибках, указывающие на необходимость установки определенных пакетов. Здесь мы видим сообщение об ошибке, в котором говорится, что сценарии intltool отсутствуют в их системе. Мы можем установить их с помощью следующей команды:
sudo apt-get установить intltool
После установки необходимого программного обеспечения еще раз введите команду ./configure. Если вам нужно установить дополнительное программное обеспечение, повторяйте этот процесс с помощью команды sudo apt-get install до тех пор, пока ./configure не завершится успешно. Не каждый требуемый пакет будет иметь точное имя, которое вы видите в сообщении об ошибке – вам может понадобиться Google сообщение об ошибке, чтобы определить необходимые пакеты.
Если старая версия программы, которую вы пытаетесь скомпилировать, уже находится в репозиториях программного обеспечения Ubuntu, вы можете использовать чит с помощью команды sudo apt-get build-dep . Например, если я запускаю sudo apt-get build-dep pidgin , apt-get автоматически загрузит и установит все зависимости, которые понадобятся мне для компиляции Pidgin. Как видите, многие из необходимых вам пакетов заканчиваются на -dev .
После успешного завершения работы ./configure вы готовы скомпилировать и установить пакет.
Компиляция и установка
Используйте следующую команду для компиляции программы:
Этот процесс может занять некоторое время, в зависимости от вашей системы и размера программы. Если ./configure завершен успешно, make не должен иметь никаких проблем. По мере компиляции программы вы увидите строки прокрутки текста.
После завершения этой команды программа успешно скомпилирована, но не установлена. Используйте следующую команду, чтобы установить его в вашей системе:
sudo сделать установку
Возможно, он будет храниться в каталоге/usr/local в вашей системе./usr/local/bin является частью пути вашей системы, что означает, что мы можем просто ввести « pidgin » в терминал, чтобы запустить Pidgin без суеты.
Не удаляйте каталог программы, если вы хотите установить его позже – вы можете запустить следующую команду из каталога, чтобы удалить программу из вашей системы:
sudo сделать удаление
Программы, которые вы устанавливаете таким образом, не будут автоматически обновляться диспетчером обновлений Ubuntu, даже если они содержат уязвимости безопасности. Если вам не требуется конкретное приложение или версия, которой нет в репозиториях программного обеспечения Ubuntu, рекомендуется придерживаться официальных пакетов вашего дистрибутива.
Есть много продвинутых трюков, которые мы не рассмотрели здесь, но, надеюсь, процесс компиляции вашего собственного программного обеспечения для Linux больше не так страшен.
Источник: tutorybird.ru
MNorin.com
Блог про Linux, Bash и другие информационные технологии
Сборка пакета для Debian (быстрый способ)
Сборка пакета для Debian может быть необходима при разработке собственного программного обеспечения, либо при установке программного обеспечения, отсутствующего в репозиториях. В операционных системах на базе ядра Linux из исходных кодов не рекомендуется устанавливать программы при помощи команды «make install».
Причины очевидны — если вы удалите Makefile, то уже не сможете удалить всё, что устанавливается при выполнении этой команды. Кроме того, обновлять установленное программное обеспечение таким образом тоже очень неудобно. Рекомендуемый способ установки программ — сборка пакета с последующей установкой этого пакета при помощи пакетного менеджера. Давайте посмотрим, как быстро создать свой собственный deb-пакет с программным обеспечением.
Написание программы
Напишем программу, которую будем устанавливать в систему. Пусть это будет простая программа, в общем, это не самая главная часть.
#include void main()
Теперь можно писать Makefile для компиляции и установки программы
Написанием Makefile’а
Теперь создадим Makefile для компиляции и установки нашей программы.
build: gcc helloworld.c -o helloworld strip helloworld clean: rm helloworld install: build cp helloworld /usr/bin uninstall: rm -f /usr/bin/helloworld
Здесь мы описываем 4 цели:
build | Непосредственно компиляция программы из исходного кода и удаление отладочной информации |
clean | Удаление бинарного файла |
install | Установка программы |
uninstall | Деинсталляция программы |
Для установки достаточно дать команду «make install», по зависимостям будет вызвана цель build, которая скомпилирует программу и удалит отладочную информацию. Если дать команду «make» без аргументов, будет вызвана цель «build».
Сборка пакета для Debian
Для сборки пакета воспользуемся программой checkinstall. Сначала ее нужно установить:
apt-get install checkinstall
После установки можно приступать к сборке пакета. Для сборки нам потребуются некоторые параметры, которые есть у этой программы.
—pkgname | Название пакета |
—pkgversion | Версия пакета |
—pkglicense | Лицензия, под которой распространяется пакет |
—pkggroup | Группа, в которую входит пакет |
—maintainer | |
—nodoc | Не включать в пакет документацию. Вы можете включить документацию, если она у вас есть |
—strip | Удалить отладочную информацию для всех бинарных файлов в пакете. Эта опция нужна, если удаление отладочной информации не включается в Makefile |
Создадим файл с описанием пакета с названием «description-pak», чтобы каждый раз не вводить руками описание при сборке. Внутри должно быть описание и пустая строка в конце:
Simple package that shows how to create debian package fast
Теперь создадим небольшой shell-скрипт, в который включим вызов checkinstall со всеми необходимыми параметрами
#!/bin/bash sudo checkinstall —pkgname helloworld —pkgversion 1.0.0 —pkglicense GPLv2 —pkggroup utils —maintainer «Maxim Norin » —nodoc —install -y
Теперь запускаем этот файл на выполнение. Вы должны увидеть такой результат:
$ ./makepkg.sh checkinstall 1.6.2, Copyright 2009 Felipe Eduardo Sanchez Diaz Duran Эта программа распространяется на условиях GNU GPL ***************************************** **** Debian package creation selected *** ***************************************** Этот пакет был создан с использованием данных значений: 0 — Maintainer: [ Maxim Norin ] 1 — Summary: [ Simple package that shows how to create debian package fast ] 2 — Name: [ helloworld ] 3 — Version: [ 1.0.0 ] 4 — Release: [ 1 ] 5 — License: [ GPLv2 ] 6 — Group: [ utils ] 7 — Architecture: [ amd64 ] 8 — Source location: [ make_package ] 9 — Alternate source location: [ ] 10 — Requires: [ ] 11 — Provides: [ helloworld ] 12 — Conflicts: [ ] 13 — Replaces: [ ] Введите номер для изменения параметра или нажмите ВВОД для продолжения: Installing with make install. ========================= Результаты установки =========================== gcc helloworld.c -o helloworld strip helloworld cp helloworld /usr/bin ======================== Установка успешно завершена ====================== Файлы копируются во временный каталог. OK Stripping ELF binaries and libraries.
OK Сжимаются страницы руководства. OK Построение списка файлов. OK Собирается Debian-пакет. OK Устанавливается Debian-пакет. OK Удаляются временные файлы. OK Записывается пакет с резервной копией. OK OK Удаляется временный каталог. OK ********************************************************************** Done.
The new package has been installed and saved to /home/mnorin/Temp/make_package/helloworld_1.0.0-1_amd64.deb You can remove it from your system anytime using: dpkg -r helloworld **********************************************************************
В результат пакет собран и он находится в текущей директории. Кроме того, он установлен в системе. Это можно проверить так:
$ dpkg -l | grep helloworld ii helloworld 1.0.0-1 amd64 Simple package that shows how to create debian package fast
И осталось только проверить, работает ли сама программа:
$ helloworld Hello, world!
Работает. Теперь пакет из текущей директории можно размещать на сервере, чтобы его могли скачивать другие.
Похожие посты:
- Как собрать свой дистрибутив Linux
- Как сделать man-страницу для своей программы
- Debian stable — установка Google Musicmanager
- Как установить Java в Debian/Ubuntu?
- Настройка iptables от простого к сложному. Часть 2.
- Установка программ в Debian при помощи tasksel
- Малоизвестные веб-сервера
- Использование образов дисков VDI в Linux
- Внедрение linux-систем
- Менеджер пространства подкачки swapspace
Источник: mnorin.com