бинарный пакет что это
Бинарные и исходные пакеты: что использовать?
Независимо от менеджера пакетов менеджер пакетов вы используете, у вас есть два способа установки программ на Linux. Вы либо используете готовый пакет, либо компилируете его самостоятельно. В наши дни первый обычно побеждает по умолчанию. Однако бывают случаи, когда вы должны рассмотреть альтернативу.
Что такое бинарные пакеты?
Установка программ в Linux обычно отличается от установки в Windows. Вместо того, чтобы извлекать установщики с веб-сайта производителя, файлы извлекаются из репозитория программ, обычно адаптированных под конкретные требования. о вашей операционной системе.
Для установки требуется специальная программа для распаковки этих файлов и помещения их на компьютер. То есть ваш менеджер пакетов (например, APT, Yum и т. Д.). Он также выполняет другие полезные функции, такие как отслеживание установленных файлов и управление обновлениями программного обеспечения.
Откуда берутся посылки?
Что такое установка «Из источника»?
Для этого программы предоставляют make с make-файлом, который сообщает ему, что делать и компилировать. В наши дни он обычно автоматически генерируется специальным программным обеспечением, таким как CMake. Это то место, куда входит пользователь. Потому что здесь они могут точно указать, какие функции они хотели бы встроить в свое собственное программное обеспечение.
Быстрая демонстрация
Например, приведенная ниже команда создает файл конфигурации для Calligra Office Suite используя CMake. Созданный файл сообщает программе make только о компиляции компонента Writer в Calligra.
Сделав это, все, что нужно сделать человеку, это запустить инструмент make, чтобы скомпилировать и скопировать результаты на свой компьютер. Это делается следующим образом:
Преимущества использования бинарных пакетов
Если вы используете Linux, скорее всего, установленные вами программы были предварительно скомпилированы. В наши дни это гораздо чаще, чем использование исходных пакетов. Есть несколько причин, почему это так.
Проще управлять
Бинарные пакеты содержат гораздо больше, чем просто скомпилированные установочные файлы. Они также хранят информацию, которая упрощает работу вашего менеджера пакетов. пакетами. чтобы отслеживать все ваши программы. Например, файлы DEB (формат пакета для Debian и производные от Debian) также содержат важную информацию, например, какое другое программное обеспечение необходимо для запуска программы, и его текущая версия.
Это значительно упрощает установку пакетов. Вам не нужно беспокоиться о том, какие другие файлы вам нужно установить, чтобы, например, запустить программу. Поскольку ваш менеджер пакетов может считывать эту информацию из самого пакета, он обрабатывает все это автоматически.
Сравните это с установкой программ из исходного кода. Если вы не скомпилируете код в собственный двоичный пакет, вы будете нести ответственность за управление этим программным обеспечением. Вам нужно помнить, какие другие программы вам нужны, чтобы они работали, и устанавливать их самостоятельно.
Улучшенная стабильность
Репозитории пакетов, как правило, проверяют свои двоичные файлы на наличие проблем и делают все возможное, чтобы их исправить, когда они появляются. Это может привести к повышению стабильности программ, что может упустить тот, кто установил из исходного кода.
Наряду с этим, пакеты обычно должны придерживаться строгого набора правил, чтобы гарантировать, что они будут работать в вашей системе. Например, Debian и Ubuntu имеют руководство по политике, как и многие другие операционные системы Linux.
Некоторые программы также используют разные версии одной и той же зависимости от программного обеспечения. Репозитории пакетов делают все возможное, чтобы разрешить эти конфликты, поэтому вам не нужно об этом беспокоиться.
Преимущества компиляции исходных пакетов
Установка программ из исходного кода — это не то, что нужно делать всем. На самом деле, лучше, если вы будете придерживаться бинарных пакетов. Тем не менее, есть несколько преимуществ использования этого немного более сложного способа установки программ.
Последнее программное обеспечение
Хотя есть операционные системы Linux, которые удовлетворяют эту потребность без компиляции программ, у них есть несколько недостатков. Например, программное обеспечение, которое не часто выпускает установленные версии пакетов, сложнее поддерживать в актуальном состоянии. обновлять в репозитории, чем установка из исходного кода.
Это связано с тем, что бинарные пакеты обычно создаются из официальных выпусков программ. Таким образом, изменения между этими версиями обычно не принимаются во внимание. Скомпилировав собственное программное обеспечение из исходного кода, вы сразу же сможете воспользоваться этими изменениями.
Также возможно, что ваша операционная система Linux не имеет программного обеспечения, которое вы хотите сделать заранее для вас. Если это так, то установка его из исходных текстов — ваш единственный вариант.
Тщательно выбирать
Еще одним преимуществом использования пакетов с исходным кодом является то, что вы получаете больший контроль над программами, которые вы устанавливаете. При установке из бинарного репозитория вы ограничены в способах настройки ваших пакетов.
Например, посмотрите на FFmpeg, конвертер аудио и видео на основе командной строки По умолчанию он поставляется с огромным количеством функций, некоторые из которых вы можете даже не трогать. Например, поддержка аудио JACK доступна в FFmpeg, хотя это программное обеспечение обычно используется в производственных средах. только.
Компиляция FFmpeg позволяет вам убрать из него то, что вам не нужно, сделать его более легким и приспособленным к вашим потребностям. И то же самое относится и к другим тяжелым программам.
Почему бы не установить с обоими?
Хотя вы, вероятно, не захотите компилировать пакеты ежедневно, об этом стоит помнить. Если вы когда-либо не находите свои программные репозитории достаточно хорошими, помните, что есть другой, более старый способ установить вещи.
Вам когда-нибудь приходилось компилировать программное обеспечение раньше? Зачем?
Пакеты бинарных и исходных кодов: что использовать?
Независимо от менеджера пакетов
вы используете, у вас есть два способа установки программ в Linux. Вы либо используете готовый пакет, либо сами его компилируете. В наши дни первый обычно побеждает по умолчанию. Однако бывают случаи, когда вы должны рассмотреть альтернативу.
Что такое бинарные пакеты?
Установка программ в Linux обычно отличается от установки в Windows. Вместо того, чтобы удалять установщики с веб-сайта поставщика, файлы извлекаются из репозитория программ, обычно с учетом
для вашей операционной системы.
Файлы для отдельных программ хранятся в архиве
, Это объединяет все в один файл для быстрого доступа позже. Например, Debian использует формат DEB для хранения своих программ. Эти связки называются бинарные пакеты.
Для установки требуется специальная программа для распаковки этих файлов и помещения их на компьютер. То есть ваш менеджер пакетов (например, APT, Yum и т. Д.). Он также выполняет другие полезные функции, такие как отслеживание установленных файлов и управление обновлениями программного обеспечения.
Откуда берутся посылки?
Все программное обеспечение написано в строках текста, называемых исходным кодом. Они написаны на определенных языках программирования
, такие как C или C ++. Как правило, однако, вы не можете просто связать это в архив и назвать его пакетом. Эти строки должны быть переведены на язык, который ваш компьютер может понимать и выполнять.
Этот процесс называется компиляцией
конечный результат создает двоичные файлы, которые может запустить ваш компьютер. Именно эти двоичные файлы хранятся вместе в пакете вместе с другими вещами, такими как файлы конфигурации
Что такое установка «Из источника»?
Компиляция исходного кода не только для создания пакетов. На самом деле создание такого архива из него даже не нужно. По сути, установка программы «из исходного кода» означает установку чего-либо без использования менеджера пакетов. Вы компилируете исходный код и вместо этого копируете двоичные файлы на свой компьютер.
В большинстве случаев вы можете загрузить исходный код проекта с таких хостинговых сервисов, как GitHub или BitBucket.
, Большие программы могут даже разместить его на личном веб-сайте. Код обычно архивируется в архивном формате (также известном как исходный пакет).
Специальный набор инструментов помогает автоматизировать процесс строительства. На рабочих столах Linux это обычно происходит в форме командной строки
Программа называется делать. Исходный код, написанный на разных языках, нуждается в специальных компиляторах и командах для преобразования их в двоичные файлы. Программа make автоматизирует
Для этого программы предоставляют make с Makefile это говорит ему, что делать и компилировать. В наши дни его обычно автоматически генерирует специальное программное обеспечение, такое как CMake. Это где пользователь входит. Потому что отсюда они могут точно указать, какие функции они хотели бы собрать в свое собственное программное обеспечение.
Быстрая демонстрация
Например, приведенная ниже команда создает файл конфигурации для Calligra Office Suite
используя CMake. Созданный файл говорит программе make только компилировать писатель компонент каллигры.
Сделав это, все, что нужно сделать человеку, это запустить инструмент make, чтобы скомпилировать и скопировать результаты на свой компьютер. Это делается следующим образом:
Хотя это общий шаблон для компиляции программ, существует множество других способов установки исходных пакетов. Gentoo Linux
Например, имеет встроенный способ обработки этого, что делает процесс намного быстрее и проще. Наряду с этим, сборка бинарных пакетов занимает несколько больше шагов, чем только приведенные выше команды.
Преимущества использования бинарных пакетов
Если вы используете Linux, скорее всего, установленные вами программы предварительно скомпилированы. В наши дни это гораздо чаще, чем использование исходных пакетов. Есть несколько причин, почему это так.
Проще управлять
Бинарные пакеты содержат гораздо больше, чем просто скомпилированные установочные файлы. Они также хранят информацию, которая облегчает работу вашего менеджера пакетов.
отслеживать все ваши программы. Например, файлы DEB (формат пакета для Debian
и производные Debian) также содержат важную информацию, такую как, какое еще программное обеспечение требуется для запуска программы, и ее текущую версию.
Это значительно упрощает установку пакетов. Вам не нужно беспокоиться о том, какие другие файлы вам нужно установить, чтобы, например, запустить программу. Поскольку ваш менеджер пакетов может считывать эту информацию из самого пакета, он обрабатывает все это автоматически.
Сравните это с установкой программ из исходного кода. Если вы не скомпилируете код в собственный двоичный пакет, вы будет отвечать за управление этим программным обеспечением. Вам нужно помнить, какие другие программы вам нужны, чтобы они работали, и устанавливать их самостоятельно.
Улучшенная стабильность
Репозитории пакетов, как правило, проверяют свои двоичные файлы на наличие проблем и делают все возможное, чтобы их исправить, когда они появляются. Это может привести к повышению стабильности программ, что может упустить тот, кто установил из исходного кода.
Например, в репозиториях Debian есть несколько пакетов, к которым применены исправления. Это может даже включать большие программы, такие как веб-браузеры
Наряду с этим, пакеты обычно должны придерживаться строгого набора правил, чтобы гарантировать, что они будут работать в вашей системе. Например, как в Debian, так и в Ubuntu есть руководство по политике, как и во многих других операционных системах Linux.
Некоторые программы также используют разные версии одной и той же зависимости от программного обеспечения. Репозитории пакетов делают все возможное, чтобы разрешить эти конфликты, поэтому вам не нужно беспокоиться об этом.
Преимущества компиляции исходных пакетов
Установка программ из исходного кода — это не то, что нужно делать всем. На самом деле, лучше, если вы будете придерживаться бинарных пакетов. Тем не менее, есть несколько преимуществ использования этого немного более сложного способа установки программ.
Последнее программное обеспечение
Одним из недостатков повышения надежности программ является то, что для их исправления и исправления требуется время. В результате это может привести к использованию более старых версий программного обеспечения. Для людей, которые хотят новейшие и лучшие
они могут даже предпочесть немного нестабильности в обмен на это.
Хотя существуют операционные системы Linux, которые удовлетворяют эту потребность без компиляции программ, у них есть несколько недостатков. Например, программное обеспечение, которое не часто выпускает установленные версии пакетов, сложнее поддерживать в актуальном состоянии
в репозитории, чем установка из источника.
Это связано с тем, что бинарные пакеты обычно создаются из официальных выпусков программ. Таким образом, изменения между этими версиями обычно не принимаются во внимание. Скомпилировав собственное программное обеспечение из исходного кода, вы сразу же сможете воспользоваться этими изменениями.
Также возможно, что ваша операционная система Linux не имеет программного обеспечения, которое вы хотите предварительно сделать для вас. Если это так, то установка его из исходных текстов — ваш единственный выбор.
Тщательно выбирать
Еще одним преимуществом использования пакетов с исходным кодом является то, что вы получаете больший контроль над программами, которые вы устанавливаете. При установке из бинарного репозитория вы ограничены в способах настройки ваших пакетов.
Например, посмотрите на FFmpeg, конвертер аудио и видео на основе командной строки
, По умолчанию он поставляется с огромным количеством функций, некоторые из которых вы можете даже не трогать. Например, поддержка аудио JACK доступна в FFmpeg, хотя это программное обеспечение обычно используется в производственных средах.
Компиляция FFmpeg позволяет вам убрать из него то, что вам не нужно, сделать его более легким и приспособленным к вашим потребностям. И то же самое относится и к другим тяжелым программам.
Когда ресурсов недостаточно, удаление функций может стать отличным способом облегчить нагрузку. Неудивительно, что Chrome OS
, найденный на многих компьютерах низкого уровня, основан на Gentoo Linux. Gentoo, основанный на исходных текстах, компилирует большую часть своего программного обеспечения, потенциально делая эти системы намного более легкими.
Почему бы не установить с обоими?
Хотя вы, вероятно, не захотите компилировать пакеты ежедневно, об этом стоит помнить. Если вы когда-либо не находите свои программные репозитории достаточно хорошими, помните, что есть другой, более старый способ установки вещей.
Вам когда-нибудь приходилось компилировать программное обеспечение раньше? Зачем?
Как собрать бинарный deb пакет: подробное HowTo
Сегодня я расскажу на абстрактном примере как правильно создать *.deb пакет для Ubuntu/Debian. Пакет мы будем делать бинарный. Пакеты, компилирующие бинарники из исходников здесь не рассматриваются: осилив изложенные ниже знания, в дальнейшем по готовым примерам можно понять суть и действовать по аналогии 🙂
В статье не будет никакой лишней возни «вручную»: формат пакета эволюционировал в достаточно простую, а главное — логичную структуру, и всё делается буквально на коленке, с применением пары специализированных утилит.
В качестве бонуса в конце статьи будет пример быстрого создания собственного локального репозитория: установка пакетов из репозитория позволяет автоматически отслеживать зависимости, и конечно же! — устанавливать всё одной консольной командой на нескольких машинах 🙂
Для тех, кто не хочет вдаваться в мощную систему установки софта в Linux, рекомендую посетить сайт проги CheckInstall: она автоматически создаёт deb-пакет из команды «make install» 😉 А мы вместе с любопытными —
Источники
Подготовка
Зачем это всё?
Что потребуется
Конечно, для создания полноценного пакета хватит архиваторов tar, gz, ar, но можно исключить лишнюю возню, и воспользоваться инструментами, созданными для облегчения жизни 🙂
Ставим:
$ sudo apt-get install dpkg debconf debhelper lintian
Что мы будем делать
Для примера будет рассмотрен некий скрипт /usr/bin/super.sh. Не важно что внутри, главное — как он появится на правильном месте 🙂
Подготовка папки
/supersh/usr/bin # путь к скрипту
cp super.sh
/supersh/usr/bin/ # копируем наш скрипт в нужное место
В итоге имеем:
supersh/DEBIAN/
supersh/usr/
supersh/usr/bin/
supersh/usr/bin/super.sh
Создание пакета: DEBIAN/*
Как я уже сказал, папка DEBIAN содержит файлы, используемые при установке. Здесь я опишу (с примерами) каждый файл.
Для создания полноценного пакета достаточно контрольного файла «control», все остальные используются либо для прикрепления текстовой информации (changelog, лицензия), либо для управления расширенными возможностями установки приложений.
Из описанных ниже файлов в папке DEBIAN/* выбираем необходимые, и заполняем согласно инструкции 🙂
В наше примере реально используется только обязательный DEBIAN/control.
DEBIAN/control: Основная информация
control — центральный файл пакета, описывающего все основные свойства. Файл — текстовый, состоящий из пар «Атрибут: значение». Можно использовать комментарии: символ «#» в начале строки (возможность была добавлена в версии dpkg >= 1.10.11, надеяться на комментарии не стоит :).
В таблице приведены все поля, определённые для контрольного файла. Обязательные поля выделены жирным: без них пакет не будет считаться составленным верно.
Атрибут | Описание | Примеры |
---|---|---|
— основные — | ||
Package: | Имя пакета: [a-zA-Z0-9-] — только латиница, цифры, и дефис. Имя используется при установке: apt-get installDEBIAN/copyright: © / лицензияТекст лицензии. Файл не обязателен, но лучше подчеркнуть своё авторство 😉 DEBIAN/changelog: история измененийChangelog в специальном формате: используется dpkg для получения номера версии, ревизии, дистрибутива и важности пакета. Лучше посмотреть в официальной документации 😉 а я лишь приведу пример: — o_O Tync Sun, 13 Dec 2009 00:11:46 +0300 DEBIAN/rules: правила компиляцииИспользуется для управления компиляцией пакета: это когда Architeture: source 🙂 DEBIAN/conffiles: список файлов конфигурацииОбычно пакеты содержат болванки конфигурационных файлов, например, размещаемых в /etc. Очевидно, что если конфиг в пакете обновляется, пользователь потеряет свой отредактированный конфиг. Эта проблема легко решается использованием папок типа «config.d», содержимое которых включается в основной конфиг, заменяя собой повторяющиеся опции. DEBIAN/dirs: список папок для создания«Список абсолютных путей к папкам, которые требуются программе, но по каким-либо причинам не создаются.» — гласит официальная документация. На практике – здесь перечисляются все папки, так или иначе используемые программой: и где лежат бинарники, и которые используются программой. DEBIAN/menu: создание пунктов менюUPD: Правильный способ добавления пункта менюDEBIAN/md5sums: контрольные суммы файловDEBIAN/watch: мониторинг сайта, откуда была скачана прогаФункция полезна, если Вы мэйнтейните от нескольких десятков пакетов, и уследить за всеми обновлениями сложно. И ещё пример для uscan(1): Лучше почитайте официальную документацию, такие мощные вещи нечастно требуются простым смертным 🙂 DEBIAN/cron.d: инсталляция заданий cronDEBIAN/inid.d: init-скриптВ этот файл пишется содержимое init-скрипта. О написании init-скриптов в инете можно найти СкриптингМы подошли к самому интересному: встраиванию скриптов в deb пакеты. Скрипты позволяют управлять установкой, переустановкой и удалением пакета, выполняя действия, которые нельзя сделать простым копированием файлов в правильные места. Это может быть скачивание дополнительных файлов (как это делает flash-installer), изменение существующих, а также — вывод интерактивных (GUI или ncurses) диалогов, позволяющих пользователю сконфигурировать пакет под себя: например, mysql спрашивает какой установить пароль для root. DEBIAN/(preinst|postinst|prerm|postrm): скрипты установкиexit 0 WARNING: болванка пока не тестировалась широко, проверьте лишний раз! На невозможность отладки наткнулся совсем недавно 🙂 DEBIAN/templates: шаблоны для диалоговКак уже было сказано, в скрипте DEBIAN/config можно задавать пользователю вопросы: ввести строку, выбрать один из вариантов, поставить галочку,… Этим занимается «библиотека» bash функций debhelper пакета debconf, умеющая кроме этого ещё массу полезных вещей. Здесь их не рассматриваю 🙂 Template — уникальный (в пределах одного пакета) идентификатор шаблона. Если в скрипте нужно вызвать определённый диалог — используется именно это имя. Основы использования debconf и debhelper# Подключение команд debconf Собираем пакет! 🙂Автоматическая проверка пакетаСуществует утилита lintian, позволяющая проверить пакет и выявить типичные ошибки в его структуре. Делается это так: Установка пакетаСоздаём собственный репозиторий пакетовТеперь у нас есть собственный пакет. Когда их будет несколько, и тем более — с зависимостями, окажется, что намного удобнее быстренько поднять собственный локальный микро-репозиторий, и включить его в список источников менеджера пакетов 🙂 Здесь я опишу быстрый HowTo «как создать свой репозиторий». Идею будет легко развить, почитывая соответствующую документацию 🙂 Описание будущего репозиторияЦентр репозитория — его описание. Главное в нём — список компонент репозитория. Мы создадим компоненты «soft» и «games». В нашем деле создания простого репозитория все поля не играют принципиальной роли, и используются лишь для визуального определения «что есть что» 🙂 Создание репозиторияРепозиторий описан! Теперь сгенерируем болванку на основе описания. Команды выполняются в корне репозитория: Управление пакетами в репозиторииФинишUPD: @ICD2 подсказывает, что есть GUIшная прога для создания пакетов: GiftWrap.
|