Собираем RPM пакет Sublime Text для Linux

В данном HOWTO мы подробно рассмотрим процесс ручной сборки RPM пакета для замечательного программистского редактора Sublime Text 3 для RPM based дистрибутивов GNU/Linux.

Введение

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

Устанавливать «в лоб» в пакетных дистрибутивах категорически не рекомендуется, т.к. это превращает систему в Slackware. Официальный RPM пакет на сайте собран неправильно с нарушением гайдлайнов современных дистрибутивов, поэтому соберём свой собственный.

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

Шаг 1. Подготовка к сборке

Установим в систему утилиты Git, spectool, а также средство для сборки RPM-пакетов — rpmbuild.

Установим требуемые пакеты в Fedora/CentOS/RHEL:

sudo dnf -y install git rpm-build spectool

В openSUSE:

sudo zypper install git rpmbuild spectool

Шаг 2. Загрузка исходников для пакета

Загрузим исходники SPEC-файла для сборки пакета из Git репозитория:

git clone https://github.com/RussianFedora/sublime_text.git sublime_text

Шаг 3. Загрузка архивов с Sublime Text

Воспользуемся утилитой spectool для простого и быстрого скачивания тарболов с приложением:

cd sublime_text
rpmdev-setuptree
spectool -g -R sublime_text.spec

Шаг 4. Сборка RPM пакета

Запустим сборку RPM пакета:

rpmbuild -bb sublime_text.spec

Шаг 5. Установка собранного пакета

Установим результат сборки в Fedora/CentOS/RHEL:

sudo dnf install ~/rpmbuild/RPMS/$(uname -m)/sublime_text*.rpm

В openSUSE:

sudo zypper install ~/rpmbuild/RPMS/$(uname -m)/sublime_text*.rpm

Заключение

Сразу после установки ярлык приложения появится в меню используемой рабочей среды.

18 commentaries to post

  1. Спасибо за интересную статью.

    К сожалению, установка пакета требует libffi.so.5, которую найти не представляется возможным.

    Поскажите, что делать…

    П.С. Я пользуюсь openSUSE 12.3 архитектура AMD.

  2. Илья :

    К сожалению, установка пакета требует libffi.so.5, которую найти не представляется возможным.

    Скачайте SPEC-файл, откройте его любым текстовым редактором (vim, mcedit, kwrite и т.д.) и закомментируйте или удалите строку 28. После этого соберите пакет отредактированным спеком.

  3. Илья :

    П.С. А как можно добавить иконку в список аппликаций? Я тут прикрепил скриншот с вышеупомянутым дефектом:

    Проверьте существование файла, прописанного в директиве Icon файла /usr/share/applications/sublimetext.desktop. В Fedora значок отображается корректно.

  4. Всё на месте:

    ls /usr/share/applications/sub*
    /usr/share/applications/sublimetext.desktop
    ls -al /opt/sublimetext/Icon/128x128/sublime_text.*
    -rw-r--r-- 1 root root 11334 Jul 14  2012 /opt/sublimetext/Icon/128x128/sublime_text.png
  5. @Илья
    Тогда непонятно почему значок не отображается. Возможно в openSUSE требуется, чтобы для каждого размера (128*128, 256*256, 64*64, 32*32) был указан свой значок. Если так, то их придётся генерировать вручную ибо в оригинальном архиве есть только 128*128.

  6. Возможно следует создать SVG-иконку?

    Тогда система сможет масштабировать ее по своему усмотрению. Я готов заняться этим, если RPM-пакеты поддерживают векторную графику.

  7. Я посмотрел чужой *.desktop файл, и там иконка лежала в другом каталоге:

    Icon=/usr/share/pixmaps/sublime.png

    Возможно как раз расположение иконки имеет значение для DE ? Я попробую это сегодня вечером, дома…

  8. Я нашел документ определяющий поведение DM касательно иконок:

    h++p://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html

    >>>>Installing Application Icons

    So, you’re an application author, and want to install application icons so that they work in the KDE and Gnome menus. Minimally you should install a 48×48 icon in the hicolor theme. This means installing a PNG file in $prefix/share/icons/hicolor/48×48/apps. Optionally you can install icons in different sizes. For example, installing a svg icon in $prefix/share/icons/hicolor/scalable/apps means most desktops will have one icon that works for all sizes.

    Как вы думаете, это актуально в данной ситуации?

  9. @Илья
    Нет, мой SPEC заставляет Sublime Text 2 размещаться в /opt/, что единственно верно для ПО с закрытым исходным кодом, коим и является ST2.

    Значок может располагаться в любом каталоге. Поддерживаются форматы PNG, SVG и ICO.

  10. @Илья
    Можете проверить, отредактировав файл /usr/share/applications/sublimetext.desktop и скопировав значок разных разрешений в указанные каталоги. В Fedora 17-18 (с KDE 4) работает из любого каталога.

  11. Здравствуйте!

    Очень полезная статья. Следовала инструкции для OpenSuse (у меня стоит OpenSUSE Leap 42.1)
    Однако при установке выяснилось, что в файле спецификации прописана версия sublime 3.0.3114-2. На сайте же последняя доступная версия 3126. Полагаю, что именно поэтому возникает ошибка:

    error: File ~/SOURCES/sublime_text_3_build_3114_x64.tar.bz2: No such file or directory

    Подскажите, пожалуйста, что нужно поменять в файле? Только строку с %global revision 3114?

  12. @Елена
    Исходники можно качать не вручную, а при помощи утилиты spectool:

    spectool -g -R sublime.spec
  13. @KT
    spectool, действительно, удобная утилита. С ней всё гораздо быстрее. Благодарю за подсказку!

  14. Статья была доработана и обновлена в соответствие с новыми гайдлайнами дистрибутивов.

Обсуждение закрыто.