admin / 03.01.2018

Дистрибуция пакетов в Linux

.

Создайте свои собственные пакеты DEB и RPM

Оригинал: Make your own DEB and RPM packages
Автор: Michael Reed
Дата публикации: 4 января 2014 г.
Перевод: Н.Ромоданов
Дата перевода: июнь 2014 г.

Мы расскажем вам, как создавать два наиболее распространенных типа пакетов Linux для распространения программного обеспечения, и вы сможете сами распространять свои собственные пакеты.

Мы собираемся провести вас через процесс создания пакетов программ для двух самых популярных систем пакетов DEB и RPM. Вы можете использовать эти методы, чтобы создавать пакеты вашего собственного программного обеспечение или даже сопровождать пакеты для того программного обеспечения, которое, как вы считаете, остается незамеченным.

Мы начнем с руководство по созданию файлов DEB ((.deb) для дистрибутивов, производных от Debian — для этого мы качестве нашей базы используем Xubuntu. После этого мы подробно опишем методы, необходимые для создания пакетов RPM для использования в дистрибутивах, производных от Red Hat, и для этого мы будем использовать Fedora.

Часто можно создать пакет на одном дистрибутиве, а затем установить его на родственном дистрибутиве (например, Ubuntu>Debian), но если это важно, то вам, может быть, стоит попробовать это самостоятельно.

Что касается программы, мы собираемся в качестве примера пакета, собираемого из исходного кода, использовать легковесный веб-браузер Dillo. Когда сборка выполняется из исходных текстов, в случае, если сборка не идет так, как надо, вы можете, как и обычно, поискать решения в сети интернете. Например, в случае Dillo 3.0.3, нам из-за недосмотра в архиве исходного кода пришлось для того, чтобы команды работали, перед командами сборки добавить ‘LIBS =-lX11’ .

Сборка происходит в командной строке

Ресурсы

Инсталляция (или виртуальная машина) Ubuntu и Fedora

Пошаговое описание

Шаг 01: Использование виртуальной машины

Использование средств виртуализации, таких как VirtualBox или Vmware, часто является лучшим подходом к созданию пакетов для других систем. С одной стороны, этот подход позволяет поддерживать сравнительно чистую базовую инсталляцию, сравнимой с настройками, с которыми вероятно, будут работать другие. Это также означает, что вы, используя различные дистрибутивы, можете получить коллекцию целевых систем. Кроме того, большинство средств виртуализации позволяют эмулировать различные архитектуры, и, следовательно, на 32-разрядной платформе можно запускать 64-разрядные ОС, хотя будет страдать производительность.

Шаг 02: Начинаем с нуля

Если в Ubuntu или Fedora что-то идет не так, то можно совершенно безопасно просто удалить исходный каталог и начать все заново. Обратите внимание, что инструментальные средства Debian изменяют исходный архив, так что вам придется начать с новой копии.

Часть 1: Debian

Шаг 03: Установите среду сборки

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

$ sudo apt-get install build-essential autoconf automake autotools-dev

Теперь мы должны установить инструменты, которые используются для работы с пакетами DEB.

Дистрибуция пакетов в Linux

Сделайте это с помощью следующей команды …

$ sudo apt-get install dh-make debhelper devscripts fakeroot xutils lintian pbuilder

Шаг 04: Создайте ключ GPG

Если вы еще в прошлом не создали открытый ключ GPG, его необходимо создать прямо сейчас для того, чтобы можно было подписать пакеты. Вначале вводите текст gpg –gen-key. Выберите значения, устанавливаемые по умолчанию, и при запросе введите свое настоящее имя и контактные данные. Аккуратно запишите все данные, поскольку позднее нам в конфигурационном файле потребуется их точное соответствие. После этого наберите команду ls ~/.gnupg для того, чтобы убедиться, что новый ключ существует (это файл имя_фамилия.gpg). Из него создайте открытый ключ:

gpg -a —output ~/.gnupg/[your key].gpg —export ‘[ваше имя]’

Импортируйте его с помощью:

gpg —import ~/.gnupg/[your key].gpg

Шаг 05: Скачайте пакет

В этом примере мы собираемся скачать и собрать самую последнюю версию веб-браузера Dillo. Перейдите на сайт Dillo (www.dillo.org) и загрузить самый свежий архив .tar.bz. С помощью команды mkdir ~/srcand создайте каталог для исходного кода и переместите в него архив.

Шаг 06: Распакуйте архив

Распакуйте архив с помощью команды tar -xjvf [имя архива].tar.bz2. Обратите внимание, что соблюдение договоренностей об именовании каталога (имяпакета-версия) является важным для наших целей, и, к счастью, пакет Dillo соответствует им. Также важно, чтобы архив с исходным кодом находится на один уровень выше каталога с исходным кодом.

Шаг 07: Настраиваем под Debian

Переместите в только что распакованный каталог скрипт dh_make, который позаботится о большей части работы — добавит конфигурационный файл и создаст структуру каталогов, и который входит в состав интруменртария разработчика, который мы добавили ранее.

dh_make -e [your email address] -c licence -f ../

В нашем примере, командная строка тбудет выглядеть следующим образом:

dh_make -c gpl3 -e example@example.com -f ../dillo-3.0.3.tar.bz2

При появлении запроса выберите один двоичный файл. Скрипт-помощник скрипт должен в каталоге с исходным кодом создать каталог с именем Debian.

Шаг 08: Откройте управляющий файл

Откройте в текстовом редакторе управляющий файл в подкаталоге Debian. Заполните раздел «Домашняя страница» (используйте Google для заполнения списка разделов программ Debian) и поля описания этого файла.

Шаг 09: Изучите имеющиеся зависимости

Вы можете изучить, какие зависимости необходимы для запуска программы, поставляемой в виде пакета. Перейдите в каталог с исходными кодами и наберите в терминале команду dpkg-depcheck -d ./configure. Если так сделать, то будут выданы ошибки, указывающие какой отсутствует пакет, необходимый для сборки программы (поставляемой отдельно). Вы можете открыть этот пакет, набрав sudo apt-get build-dep [имя пакета], и это должно помочь, если в репозитарии дистрибутива этот пакет поддерживается. Если он не поддерживается, то вам придется неоднократно запустить команду dpkg-depcheck -d ./configur и добавлять пакеты вручную, набирая команду рsudo apt-get install [имя пакета].

Шаг 10: Добавьте зависимости в управляющий файл

Когда все действия из предыдущего шага будут завершены, у вас должен быть список всех необходимых пакетов. Добавьте этот список зависимостей в раздел depends: управляющего файла. Элемент в списке должны быть разделены запятой и пробелом.

Шаг 11: Отредактируйте файл авторских прав

Попробуйте выполнить этот шаг настолько полно, насколько вы сможете, и не пропускайте его. Source: — это обычно главная страница проекта. В разделе Files: * замените информацию об авторских правах именами авторов проекта. Пример заполнения вы можете увидеть в разделе Files: debian/*, в который должна быть занесена соответствующая информация. Возможно, вам придется немного побыть детективом, чтобы найти необходимую вам информацию. Ищите в каталоге с исходными кодами файлы, такие как AUTHORS и COPYING.

Шаг 12: Отредактируйте файл журнала изменений

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

Шаг 13: Создайте пакет

Если все настроено правильно, мы можем, наконец, собрать пакет DEB. Перейдите в каталог с исходным кодом и для того, чтобы собрать пакет, , который будет помещен в каталог ~/src/, наберите команду dpkg-buildpackage -b. Например, создайте пакет с помощью команды dpkg -I [пакет]. Для того, чтобы проверить на соответствие политики Debian, с помощью команды lintian [пакет] запустите программу Lintian. Обратите внимание, что этот инструмент, как известно, строгий, и ваше дело решать, допустимы ли для вас некоторые незначительные предупреждения о несоблюдения. Наконец, установите пакт с помощью команды sudo dpgk -i [пакет].

Часть 2: Создание пакетов RPM в Fedora

Шаг 14: Откройте управляющий файл

Перейдите в режим пользователя root, набрав для этого su. Начните с инсталляционной группы Development Tools (Инструменты разработки) в yum, а затем с помощью yum установите упаковщик gcc-c++ fedora-. Наберите команду usermod -a -G mock для того, чтобы добавить вашего пользователя в группу mock. Это позволяет нам выполнять процедуру сборки без необходимости перехода в роль пользователя root.

Шаг 15: Создайте среду сборки

Нажмите Ctrl + D для того, чтобы выйти из роли root. Введите rpmdev-setuptree для того, чтобы создать дерево каталогов (под ~/rpmbuild), которое нам необходимо.

Шаг 16: Скачайте архив и переместите его в нужное место

Скачайте пакет Dillo с вебсайта Dillo и переместите архив в соответствующий каталог — наберите команду mv [имя архива] ~/rpmbuild/SOURCES.

Шаг 17: Создайте файл .spec

Дистрибутивы, созданные на основе Red Hat, такие как Fedora, используют файлы .spec для задания процесса сборки. Перейдите в каталог, в котором находятся такие файлы, с помощью команды cd ~/rpmbuild/SPECS/andcreateablank.spec и создайте пустой файл .spec с помощью команды rpmdev-newspec dillo.

Шаг 18: Отредактируйте файл .spec

Наберите команду gedit dillo.spec. Заполните поля Version (Версия), Summary (Краткое содержание) Licence (Лицензия) (в данном случае — GPLv3+).В URL указывается домашняя страница проекта; в Source0 указывается адрес исходного кода. Укажите комментарии в полях BuildRequires (Требования к сборке) и Requires (Требования). Добавьте полное описание в область %description.

Шаг 19: Выполните сборку исходного кода

Если пакет вообще поддерживается в системе, запустите команду yum-builddep [имя пакета]. В противном случае, вам придется повторять команду сборки для того, чтобы получать сообщения об ошибках, или поискать документацию в архиве с исходным кодом. В каталоге SPEC наберите команду rpmbuild -ba[название пакета].spec. Если эта сборка завершится неудачно и будут выданы сообщения о дополнительных не распакованных файлах, выделите и скопируйте этот список файлов в раздел %files файла .spec и повторите команду сборки. Теперь пакет будет находиться в каталоге RPMS. Наберите команду rpm -ivh [пакет] для того, чтобы его установить. Наберите команду rpm -qa | grep [пакет] для того, чтобы убедиться, что он установлен.

Если вам понравилась статья, поделитесь ею с друзьями:


Сборка пакетов Deb-пакетов

Введение

Deb-пакет это обычный архив файлов, содержащий файлы, предназначенные для установки в систему, а так же некоторые служебные файлы, необходимые для того чтобы эту установку сделать гибкой.

  • Архив control.tar.gz, содержащий скрипты, написанные майнтенером пакета, использующиеся при установке/удалении пакета, а так же другие служебные файлы;

  • Архив data.tar.gz, содержащий двоичные файлы программы, ради которой создан пакет;

  • Файл debian-binary.

Поскольку содержимое пакета может в будущем измениться (будет новый номер версии в debian-binary), то собирать deb-пакет при помощи программ tar, gzip, ar не рекомендуется и этот вариант в статье рассматриваться не будет.

Собирается пакет программой dpkg из специально подготовленной структуры каталогов:

  • DEBIAN/

  • .. path/to/dir/file1

  • .. path/to/dirX/fileX

то есть:

  • Файлы и каталоги, предназначенные для установки в систему. Их расположение в архиве соответствует положению их в файловой системе если считать от корня. Например файл usr/share/doc/package/copyright в deb-архиве после установки будет находиться в /usr/share/doc/package/copyright (все они будут упакованы в архив data.tar.gz);

  • Каталог DEBIAN/, содержащий служебную информацию о пакете. Содержимое этого каталога при сборке будет упаковано в архив control.tar.gz;

Создание пакета Geany (A fast and lightweight IDE)

configure

Команда configure запущенная с ключем –help выводит список параметров, которые можно передать ей.

$ ./configure … checking dependency style of gcc… (cached) gcc3 checking for g++… no checking for c++… no checking for gpp… no checking for aCC… no checking for CC… no checking for cxx… no checking for cc++… no checking for cl.exe… no checking for FCC… no checking for KCC… no checking for RCC… no checking for xlC_r… no checking for xlC… no checking whether we are using the GNU C++ compiler… no checking whether g++ accepts -g… no checking dependency style of g++… none configure: error: No C++ compiler not found. Please install a C++ compiler.

Просматриваем вывод команды, если в конце строки "no" это означает, что в системе нет необходимых для компиляции данной программы вспомогательных программ и библиотек. Вывод малоинформативен -нет явного соответствия между ошибкой и пакетом который требуется до установить. Зная, что в Ubuntu часто пакеты с библиотеками бывают разбиты на два типа:

  1. динамическая библиотека, необходимая для работы уже скомпилированных программ;

  2. пакет с таким же именем и с суффиксом -dev, в котором находяться файлы требуемые для компиляции программ

Устанавливаем требуемые пакеты.

# aptitude install autoconf automake libtool autotools-dev dpkg-dev fakeroot intltool-debian intltool … Следующие НОВЫЕ пакеты будут установлены: autoconf automake autotools-dev build-essential{a} dpkg-dev g++{a} g++-4.3{a} gettext{a} intltool intltool-debian libltdl7-dev{a} libstdc++6-4.3-dev{a} libtool m4{a} 0 пакетов обновлено, 14 установлено новых, 0 пакетов отмечено для удаления, и 0 пакетов не обновлено. Необходимо получить 10,2MБ архивов. После распаковки 35,9MБ будет занято. Хотите продолжить? [Y/n/?] Y …

Проверяем. Снова запускаем ./configure.

$ ./configure … checking pkg-config is at least version 0.9.0… yes checking for GTK… configure: error: Package requirements (gtk+-2.0 >= 2.8.0) were not met: No package 'gtk+-2.0' found Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GTK_CFLAGS and GTK_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.

Ошибка. Требует пакет gtk+-2.0. Как показали поиски на английских форумах — пакет все же называется libgtk2.0-dev. Ставим. Как показывает вывод ниже — лучше найти УЖЕ скомпилированный DEB пакет — благо на это есть реальные шансы.

# aptitude install libgtk2.0-dev … Следующие НОВЫЕ пакеты будут установлены: debhelper{a} html2text{a} libatk1.0-dev{a} libcairo2-dev{a} libdirectfb-dev{a} libdirectfb-extra{a} libexpat1-dev{a} libfontconfig1-dev{a} libfreetype6-dev{a} libglib2.0-dev{a} libgtk2.0-dev libice-dev{a} libjpeg62-dev{a} libmail-sendmail-perl{a} libpango1.0-dev{a} libpixman-1-dev{a} libpng12-dev{a} libpthread-stubs0{a} libpthread-stubs0-dev{a} libsm-dev{a} libsys-hostname-long-perl{a} libsysfs-dev{a} libx11-dev{a} libxau-dev{a} libxcb-render-util0-dev{a} libxcb-render0-dev{a} libxcb1-dev{a} libxcomposite-dev{a} libxcursor-dev{a} libxdamage-dev{a} libxdmcp-dev{a} libxext-dev{a} libxfixes-dev{a} libxft-dev{a} libxi-dev{a} libxinerama-dev{a} libxrandr-dev{a} libxrender-dev{a} po-debconf{a} x11proto-composite-dev{a} x11proto-core-dev{a} x11proto-damage-dev{a} x11proto-fixes-dev{a} x11proto-input-dev{a} x11proto-kb-dev{a} x11proto-randr-dev{a} x11proto-render-dev{a} x11proto-xext-dev{a} x11proto-xinerama-dev{a} xtrans-dev{a} zlib1g-dev{a} 0 пакетов обновлено, 51 установлено новых, 0 пакетов отмечено для удаления, и 0 пакетов не обновлено. Необходимо получить 11,4MБ архивов. После распаковки 39,4MБ будет занято. Хотите продолжить? [Y/n/?] Y

Проверяем. Снова запускаем ./configure. И видим ниже счастье:) Команда выполнилась успешно!!!

$ ./configure … Install Geany in : /usr/local Using GTK version : 2.16.1 Build with GTK printing support : yes Build with plugin support : yes Use virtual terminal support : yes Use (UNIX domain) socket support : yes Configuration is done OK.

make

Компилируем в бинарные файлы

$ make

Установка пакета (2 способа)

  • 1 -й способ -стандартный (подходит для любого дистрибутива Unix). Лучше использовать во FreeBSD при установке из портов.

    Создайте свои собственные пакеты DEB и RPM

    В Ubuntu это приведет к засорению системы, так как менеджеры пакетов (apt, aptitude и т.д.) не будут видеть установленной программы. Соответственно удалять ее придется вручную.$ make install

  • 2 -й способ — использование утилиты checkinstall# aptitude install checkinstall # man checkinstall NAME checkinstall — Track installation of local software, and produce a binary manageable with your package management software. …

    Так как сборку пакета производим под Ubuntu -нас интересуют ключи:

    -D Create a Debian package.

    Полная последовательность команд:

    $ cd /home/darkfire/deb/geany/geany-0.17 $ ./configure $ make $ sudo bash # дальнейшие команды должны выполняться от root # checkinstall -D … ********************************************************************** Done. The new package has been installed and saved to /home/darkfire/deb/geany/geany-0.17/geany_0.17-1_i386.deb You can remove it from your system anytime using: dpkg -r geany ********************************************************************** …

    Пакет geany_0.17-1_i386.deb собран и готов к установке.

Создание пакета Eric Python IDE

Eric Python IDE

Создаем пакет Eric IDE с поддержкой русского языка. Скачиваем и распаковываем исходники и русификацию. Перед компиляцией установим необходимые для запуска Eric пакеты.

# aptitude install bicyclerepair libqscintilla2-3 libqt3-i18n libqt4-assistant libqt4-help libqt4-webkit libqt4-xmlpatterns$ mkdir -p /home/darkfire/deb/eric4ide $ cd /home/darkfire/deb/eric4ide $ wget http://downloads.sourceforge.net/project/eric-ide/eric4/4.3.5/eric4-4.3.5.tar.gz $ wget http://downloads.sourceforge.net/project/eric-ide/eric4/4.3.5/eric4-i18n-ru-4.3.5.tar.gz?use_mirror=sunet $ tar -xzvf eric4-4.3.5.tar.gz $ tar -xzvf eric4-i18n-ru-4.3.5.tar.gz $ cd /home/darkfire/deb/eric4ide/eric4-4.3.5/ $ sudo bash # checkinstall python install.py checkinstall 1.6.1, Copyright 2002 Felipe Eduardo Sanchez Diaz Duran Эта программа распространяется на условиях GNU GPL The package documentation directory ./doc-pak does not exist. Should I create a default set of package docs? [y]: Готовится документация к пакету…OK Пожалуйста напишите описание пакета. Закончите ваше описание пустой строкой или EOF. >> Создаем пакет Eric IDE с поддержкой русского языка. >> ***************************************** **** Debian package creation selected *** ***************************************** Этот пакет был создан с использованием данных значений: 0 — Maintainer: [ root@ubuntuatom ] 1 — Summary: [ Создаем пакет Eric IDE с поддержкой русского языка. ] 2 — Name: [ eric4 ] 3 — Version: [ 4.3.5 ] 4 — Release: [ 1 ] 5 — License: [ GPL ] 6 — Group: [ checkinstall ] 7 — Architecture: [ i386 ] 8 — Source location: [ eric4-4.3.5 ] 9 — Alternate source location: [ ] 10 — Requires: [ ] 11 — Provides: [ eric4 ] Введите номер для изменения параметра или нажмите ВВОД для продолжения: … Compiling eric/uninstall.py … Installing eric4 … Installation complete. ======================== Установка успешно завершена ====================== Copying documentation directory… ./ ./README-i18n.txt ./THANKS ./README grep: /var/tmp/tmp.hxkpsnHJSB/newfile: No such file or directory Some of the files created by the installation are inside the build directory: /home/darkfire/deb/eric4ide/eric4-4.3.5 You probably don't want them to be included in the package, especially if they are inside your home directory. Do you want me to list them? [n]: Исключить их из пакета? (ответить ДА-хорошая идея) [y]: Файлы копируются во временный каталог…OK Stripping ELF binaries and libraries…OK Сжимаются страницы руководства…OK Построение списка файлов…OK Собирается Debian-пакет… Удаляются временные файлы…OK Записывается пакет с резервной копией…OK Удаляется временный каталог…OK ********************************************************************** Done. The new package has been installed and saved to /home/darkfire/deb/eric4ide/eric4-4.3.5/eric4_4.3.5-1_i386.deb You can remove it from your system anytime using: dpkg -r eric4 **********************************************************************

Устанавливаем скомпилированный пакет:

dpkg -i eric4_4.3.5-1_i386.deb

Неудача

при запуске -возникает ошибка

# eric4 Traceback (most recent call last):

File "/usr/lib/python2.6/dist-packages/eric4/eric4.py", line 20, in <module> from PyQt4.QtCore import QTextCodec, SIGNAL, SLOT, qWarning, \

ImportError: No module named PyQt4.QtCore

Успешная компиляция на WWW http://shamansir.wordpress.com/2007/07/22/eric-ide-401-at-ubuntu-704/

Ссылки

· Последние изменения: 2017/07/28 07:24 (внешнее изменение)

Некоторое время назад я написал простой php-скрипт gcconline для сжатия javascript-файлов через онлайн-сервис Google Closure Compiler. Его можно скачать из github, однако обновлять таким образом скачанный скрипт на операционных системах Debian/Ubuntu не очень удобно. Учитывая, что теперь у меня есть deb-репозиторий, то самое время создать deb-пакет, который будет содержать скрипт gcconline. Этим мы сейчас и займемся…

Минимальный состав deb-пакета должен содержать сам скрипт или исполняемую программу, а также специальный файл с описанием пакета. Сам deb-пакет мы будем собирать с помощью утилиты dpkg-deb, которая входит в состав пакета dpkg-dev. Поэтому первым делом установим пакет dpkg-dev, если он еще не установлен:

sudoaptitudeinstall dpkg-dev

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

Назовем этот каталог debian и расположим его в домашнем каталоге. Внутри создадим структуру каталогов /usr/bin, а в нее скопируем скрипт gcconline. Именно по пути /usr/bin и будет устанавливаться наш скрипт после установки deb-пакета.

sudomkdir-p ~/debian/usr/bin cp/usr/bin/gcconline ~/debian/usr/bin

Затем нужно создать файл control, в котором должно содержаться описание deb-пакета. Сам файл должен лежать в каталоге DEBIAN:

sudomkdir-p ~/debian/DEBIAN sudonano ~/debian/DEBIAN/control

Подробности о том, какое должно быть содержимое у файла control, можно найти на сайте debian.org. У меня получилось такое содержание файла с описанием пакета:

Package: gcconline Version: 0.1-1 Section: utils Priority: optional Architecture: all Depends: php5-cli (>= 5.1.2-1), php5-curl (>= 5.1.2-1) Maintainer: Andrey Anosov <andrey@anosov.org.ru> Description: JavaScript compression tool The Closure Compiler is a tool for making JavaScript download and run faster. It is a true compiler for JavaScript. Instead of compiling from a source language to machine code, it compiles from JavaScript to better JavaScript. It parses your JavaScript, analyzes it, removes dead code and rewrites and minimizes what’s left.

It also checks syntax, variable references, and types, and warns about common JavaScript pitfalls.

Все почти готово. Остается только собрать пакет и переименовать его согласно названиям других пакетов в Debian/Ubuntu:

sudo dpkg-deb —build ~/debian sudomv ~/debian.deb ~/gcconline_0.1-1_all.deb

Однако если подходить к вопросу сборки deb-пакета более серьезно, то выяснится, что мы забыли включить в состав deb-пакета несколько обязательных составляющих. В обнаружении недостающих компонентов нам поможет утилита lintian. Установим ее и проверим с ее помощью только что собранный deb-пакет:

sudoaptitudeinstall lintian lintian ~/gcconline_0.1-1_all.deb

В ответ получим две ошибки и одно предупреждение:

E: gcconline: no-copyright-file E: gcconline: debian-changelog-file-missing W: gcconline: binary-without-manpage usr/bin/gcconline

Наш deb-пакет не выглядит безупречным. Ну что же, исправим это. Подробное описание ошибок, выдаваемых утилитой lintian, можно найти на официальном сайте этой утилиты.

Итак, во-первых, мы должны поместить в deb-пакет файл ~/debian/usr/share/doc/gcconline/copyright примерно с таким содержимым:

Copyright 2011 Andrey Anosov <andrey@anosov.org.ru>   The home page of gcconline is at: http://anosov.me/services#gcconline   The entire code base may be distributed under the terms of the GNU General Public License (GPL), which appears immediately below. Alternatively, all of the source code as any code derived from that code may instead be distributed under the GNU Lesser General Public License (LGPL), at the choice of the distributor. The complete text of the LGPL appears at the bottom of this file.   See /usr/share/common-licenses/(GPL|LGPL)

А во вторых, нужно создать файл ~/debian/usr/share/doc/gcconline/changelog.Debian.gz, в котором должна вестись история изменений, происходящих в различных версиях нашего пакета. Содержимое файла changelog.Debian получилось у меня таким:

gcconline (0.1-2) stable; urgency=low   * Deb-package for gcconline.   — Andrey Anosov <andrey@anosov.org.ru> Sun, 31 Jul 2011 22:00:00 +0300     gcconline (0.1-1) stable; urgency=low   * First version of gcconline.

Андрей Аносов

  — Andrey Anosov <andrey@anosov.org.ru> Thu, 14 Jul 2011 22:00:00 +0300

Не забудьте выполнить gz-сжатие файла changelog.Debian:

sudogzip—best ~/debian/usr/share/doc/gcconline/changelog.Debian

После этого снова собираем deb-пакет и проверяем его утилитой lintian:

sudo dpkg-deb —build ~/debian sudomv ~/debian.deb ~/gcconline_0.1-1_all.deb lintian ~/gcconline_0.1-1_all.deb

Ошибки должны исчезнуть. Предупреждение же binary-without-manpage связано с отсутствием man-страниц для нашей утилиты gcconline. Но вопрос создания man-страниц довольно обширен и заслуживает отдельной статьи. Поэтому пока оставим deb-пакет собранным с этим предупреждением.

Таким образом, наш простой deb-пакет готов. Его можно установить через менеджер пакетов или командой:

sudodpkg-i ~/gcconline_0.1-1_all.deb

Также этот пакет можно разместить в репозитории (что я и сделаю в ближайшее время), что позволит всем легко и свободно устанавливать утилиту gcconline и использовать онлайн-сервис Google Closure Compiler из командной строки linux.

deb-maintainer, deb-package, Debian, dpkg-deb, dpkg-dev, gcconline, Google Closure Compiler, JavaScript, lintian, Ubuntu

Дистрибуция пакетов в Linux

Компиляция и установка Linux из исходников в Debian

Впервые опубликовано 2008-10-11.

1. Подготовка

Для начала, следует установить пакеты, необходимые для сборки ядра:

apt-get install fakeroot kernel-package build-essential zlib1g-dev

Если вам потребуется перенастроить ядро средствами menuconfig, нужно будет также установить пакет .

2. Получение и распаковка исходников Linux

Исходники текущей версии ядра можно скачать с www.kernel.org, они выложены там под названием (к примеру, ). Распаковать их:

tar -xjf linux-*.tar.bz2

После чего перейти в созданный при распаковке каталог.

3. Настройка компилятора

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

Для того, чтобы ускорить компиляцию на многоядерных (или многопроцессорных) системах, можно задать количество одновременно запускаемых процессов для сборки не зависящих друг от друга частей ядра:

export CONCURRENCY_LEVEL=`grep -m1 cpu\ cores /proc/cpuinfo | cut -d : -f 2`

При желании использовать для сборки ядра версию , отличающуюся от установленной в системе по умолчанию (например — новее, чтобы получить преимущества от добавленных в ней возможностей, либо старее, чтобы избежать проблем с совместимостью), перед вызовом следует также выполнить (к примеру, для версии 4.4):

export MAKEFLAGS="CC=gcc-4.4"

Если же собираем ядро для архитектуры, отличающейся от текущей (к примеру, для 32-битных x86-машин, находясь в системе amd64), следует указать желаемую архитектуру в переменной окружения ARCH:

export ARCH=i386

…и непосредственно при запуске , добавить соответствующий ключ:

make-kpkg —arch i386 ……

4. Настройка будущего ядра

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

make clean mrproper make-kpkg clean

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

cp /boot/config-`uname -r` .config

Либо скачать настроечные файлы официальных ядер Debian вот отсюда.

Запускаем утилиту настройки:

make oldconfig

Значения всех уже существовавших в прошлой версии опций ядра будут взяты из старого настроечного файла. Для завершения процесса, достаточно лишь принять решение по опциям, появившимся в версиях новее её.

5. Компиляция ядра и создание deb-пакетов

Для создания пакетов c ядром и заголовочными файлами, нужно выполнить следующее:

fakeroot make-kpkg —initrd —append-to-version=-custom kernel_image kernel_headers

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

6. Установка deb-пакетов

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

dpkg -i ../linux-*.deb

7. Решение проблемы с созданием initrd.img

С недавнего времени в Debian появился баг, заключающийся в том, что после установки пакетов с собранными описанным здесь способом ядрами, не создаётся соответствующий им файл . Для исправления применительно к уже установленному ядру, придётся создать вручную:

update-initramfs -c -k <полная-версия-ядра>

Для решения проблемы “на будущее” – закомментировать вторую из процитированных ниже строк в файле :

# kernel-package passes an extra arg; hack to not run under kernel-package [ -z "$2" ] || exit 0

Ссылки

custom-linux-kernel-in-debian.txt · Last modified: 2008-12-15 19:33 UTC (external edit)

Одними из основных действий в работе с каталогами в Linux, являются их создание, копирование, перемещение и удаление.

О том, как создать, скопировать, переместить или удалить каталоги в Linux, вы узнаете из этого совета.

Создание каталога

Для того, чтобы создать каталог в Linux, выполните команду: где название_каталога — это тот каталог, который вы хотите создать.

К примеру, создадим каталог mywork:

Копирование каталога

Для того, чтобы скопировать каталог из одного места в другое, выполните команду: где dir1 — источник (каталог, который вы хотите скопировать)
а dir2 — получатель (тот каталог, в который вы хотите скопировать)
ключ -a означает то, что мы выполняем нерекурсивное копирование.

К примеру, скопируем каталог /usr/local/test1 в свой домашний каталог и назовем его test1copy:

Перемещение/Переименование каталога

За перемещение и переименование каталогов, в Linux отвечает команда mv.

Рассмотрим примеры:

перемещение каталога /usr/local/statistics в уже существующий, в домашней папке, каталог test1copy:

переименование каталога /usr/local/statistics в /usr/local/newstatistics:

Удаление каталога

Удаление каталога и его содержимого, можно произвести при помощи команд rmdir или rm:

удаляем каталог /usr/local/test/statistics: или рекурсивно каталог /usr/local/test, со всеми каталогами внутри него:

FILED UNDER : IT

Submit a Comment

Must be required * marked fields.

:*
:*