admin / 03.01.2018
.
Содержание
Оригинал: 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 изменяют исходный архив, так что вам придется начать с новой копии.
Шаг 03: Установите среду сборки
Мы начнем с установки большей части инструментальных средств, которые нам нужны для создания программ из исходных кодов. Наберите:
$ sudo apt-get install build-essential autoconf automake autotools-dev
Теперь мы должны установить инструменты, которые используются для работы с пакетами DEB.
Сделайте это с помощью следующей команды …
$ 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 [пакет].
Шаг 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-пакет это обычный архив файлов, содержащий файлы, предназначенные для установки в систему, а так же некоторые служебные файлы, необходимые для того чтобы эту установку сделать гибкой.
Архив 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;
Команда 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 часто пакеты с библиотеками бывают разбиты на два типа:
динамическая библиотека, необходимая для работы уже скомпилированных программ;
пакет с таким же именем и с суффиксом -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
В Ubuntu это приведет к засорению системы, так как менеджеры пакетов (apt, aptitude и т.д.) не будут видеть установленной программы. Соответственно удалять ее придется вручную.$ make install
Так как сборку пакета производим под 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 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
Впервые опубликовано 2008-10-11.
Для начала, следует установить пакеты, необходимые для сборки ядра:
apt-get install fakeroot kernel-package build-essential zlib1g-dev
Если вам потребуется перенастроить ядро средствами menuconfig, нужно будет также установить пакет .
Исходники текущей версии ядра можно скачать с www.kernel.org, они выложены там под названием (к примеру, ). Распаковать их:
tar -xjf linux-*.tar.bz2
После чего перейти в созданный при распаковке каталог.
Данные шаги выполнять в том же терминале, где в дальнейшем будет запущена сборка ядра.
Для того, чтобы ускорить компиляцию на многоядерных (или многопроцессорных) системах, можно задать количество одновременно запускаемых процессов для сборки не зависящих друг от друга частей ядра:
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 ……
Прежде всего, стоит удостовериться, что в текущем каталоге с исходниками не осталось никаких старых временных файлов и прочего мусора:
make clean mrproper make-kpkg clean
Если у вас нет заранее сохранённых -файлов, но вы не хотите конфигурировать ядро с нуля, можно взять настройки, использовавшиеся при компиляции текущего ядра:
cp /boot/config-`uname -r` .config
Либо скачать настроечные файлы официальных ядер Debian вот отсюда.
Запускаем утилиту настройки:
make oldconfig
Значения всех уже существовавших в прошлой версии опций ядра будут взяты из старого настроечного файла. Для завершения процесса, достаточно лишь принять решение по опциям, появившимся в версиях новее её.
Для создания пакетов c ядром и заголовочными файлами, нужно выполнить следующее:
fakeroot make-kpkg —initrd —append-to-version=-custom kernel_image kernel_headers
Вместо , в качестве обозначения вашего ядра можно указать что угодно, от вашего имени или псевдонима (чтобы не забыть, что это ядро собиралось именно вами), до сугубо технически-полезной информации (что-нибудь в духе ).
Пакеты по умолчанию кладутся одним уровнем выше текущего каталога с исходниками (в котором вы находились, запуская компиляцию). Таким образом, сразу же после компиляции их можно установить командой:
dpkg -i ../linux-*.deb
С недавнего времени в 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