- В Смоленск 1.5 SE отсутствует утилита (пакет) make
- Смоленск 1.6, отсутствует команда make
- Olej
- Сборка и установка Linux пакетов в российских сертифицированных ОС
- Постановка задачи и первичная реализация
- Состав пакета
- Сборка
- Установка, удаление и проверка работы
- Разворачивание пакетов в российских сертифицированных ОС
- AstraLinux
- Cборка RPM
- RedOs
- ALTLinux
- Заключение
- Ссылки которые нам помогли
В Смоленск 1.5 SE отсутствует утилита (пакет) make
user@astra:~$
user@astra:~$
user@astra:~$
user@astra:~$ sudo apt-cdrom add
Использование /media/cdrom/ в качестве точки монтирования CD-ROM
Идентификация.. [f0d6813d4acd6844c761b6c195610141-2]
Поиск на диске индексных файлов..
Найдено индексов: 3 для пакетов, 0 для источников, 0 для переводов и 1 для сигнатур
Название диска:
«OS Astra Linux 1.11 orel — amd64 DVD »
Копирование списков пакетов…gpgv: Подпись создана Чт. 14 апр. 2016 19:10:12 YEKT ключом RSA с ID E75F8E65
gpgv: Действительная подпись от «Astra Archive Automatic Signing Key »
Reading Package Indexes… Готово
Запись нового списка источников
Записи в списке источников для этого диска:
deb cdrom:[OS Astra Linux 1.11 orel — amd64 DVD ]/ orel contrib main non-free
Повторите этот процесс для всех имеющихся CD.
user@astra:~$
user@astra:~$
user@astra:~$
user@astra:~$ sudo apt-get update
Игн cdrom://OS Astra Linux 1.11 orel — amd64 DVD orel InRelease
Игн cdrom://OS Astra Linux 1.11 orel — amd64 DVD orel/contrib Translation-ru_RU
Игн cdrom://OS Astra Linux 1.11 orel — amd64 DVD orel/contrib Translation-ru
Игн cdrom://OS Astra Linux 1.11 orel — amd64 DVD orel/contrib Translation-en
Игн cdrom://OS Astra Linux 1.11 orel — amd64 DVD orel/main Translation-ru_RU
Игн cdrom://OS Astra Linux 1.11 orel — amd64 DVD orel/main Translation-ru
Игн cdrom://OS Astra Linux 1.11 orel — amd64 DVD orel/main Translation-en
Игн cdrom://OS Astra Linux 1.11 orel — amd64 DVD orel/non-free Translation-ru_RU
Игн cdrom://OS Astra Linux 1.11 orel — amd64 DVD orel/non-free Translation-ru
Игн cdrom://OS Astra Linux 1.11 orel — amd64 DVD orel/non-free Translation-en
Чтение списков пакетов… Готово
user@astra:~$
user@astra:~$
user@astra:~$
user@astra:~$ apt-cache search make | grep ‘^make ‘
make — An utility for Directing compilation.
user@astra:~$
user@astra:~$
user@astra:~$
user@astra:~$ sudo apt-cdrom add
Использование /media/cdrom0/ в качестве точки монтирования CD-ROM
Идентификация.. [d75c1a01d4ad62fc96df4980d15dbea1-2]
Поиск на диске индексных файлов..
Найдено индексов: 3 для пакетов, 0 для источников, 0 для переводов и 1 для сигнатур
Название диска:
«OS Astra Linux 1.5 smolensk — amd64 DVD »
Копирование списков пакетов…gpgv: Подпись создана Чт. 24 марта 2016 22:40:00 YEKT ключом RSA с ID E75F8E65
gpgv: Действительная подпись от «Astra Archive Automatic Signing Key »
Reading Package Indexes… Готово
Запись нового списка источников
Записи в списке источников для этого диска:
deb cdrom:[OS Astra Linux 1.5 smolensk — amd64 DVD ]/ smolensk contrib main non-free
Повторите этот процесс для всех имеющихся CD.
user@astra:~$
user@astra:~$
user@astra:~$
user@astra:~$ sudo apt-get update
Игн cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk InRelease
Игн cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/contrib Translation-ru_RU
Игн cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/contrib Translation-ru
Игн cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/contrib Translation-en
Игн cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/main Translation-ru_RU
Игн cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/main Translation-ru
Игн cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/main Translation-en
Игн cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/non-free Translation-ru_RU
Игн cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/non-free Translation-ru
Игн cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/non-free Translation-en
Чтение списков пакетов… Готово
user@astra:~$
user@astra:~$
user@astra:~$
user@astra:~$ apt-cache search make | grep ‘^make ‘
user@astra:~$
user@astra:~$
Смоленск 1.6, отсутствует команда make
Даже то, что скачано с офф сайта и установлено — это нарушение политики дистрибутива ?
Чем отличается сборка CE от SE?
То, что скачивается с офф сайта — это под 64- bit, Есть ли дистрибутив под 32-bit? (не смог поставить на ноуте)
С трудом откомпилировал программу. Пришлось еще кучу всего ставить с диска. Причем вставлять то первый, то второй диск.
Есть ли дистрибутив, где уже установлены apt, make, gcc, libx11-dev, libxrandr-dev, libxxf86vm-dev и прочее?
Olej
New member
То, что скачивается с офф сайта — это под 64- bit, Есть ли дистрибутив под 32-bit? (не смог поставить на ноуте)
Нет. Только 64 бит.
Редкий ноутбук на сегодня не поддерживает 64 бит. Год 2010? На паровом двигателе?
С трудом откомпилировал программу. Пришлось еще кучу всего ставить с диска. Причем вставлять то первый, то второй диск.
Есть ли дистрибутив, где уже установлены apt, make, gcc, libx11-dev, libxrandr-dev, libxxf86vm-dev и прочее?
Это политика, идеология всех Linux: устанавливается некоторый минимум, всё остальное вы легко доустанавливаете из стандартного репозитория дистрибутива.
Сравните и оцените как это отличается от идеологии и привычек, выработанных в Windows: всё (как решили в Micrisift) интегрировано в систему, а всё остальное воруем где попало и что придётся, и устанавливаем на свой страх и риск.
Почувствуйте разницу!
Сборка и установка Linux пакетов в российских сертифицированных ОС
Ранее в статье мы описали сборку расширений для LibreOffice. Теперь мы расскажем, как наработки были перенесены на платформу Linux, а также как решались вопросы с подготовкой пакетов для российских сертифицированных операционных систем, таких как AstraLinux, ALTLinux и RedOS.
Постановка задачи и первичная реализация
После успешной реализации нашего продукта DSS для платформы Windows потребовалось перенести наработки (в том числе и расширение для LibreOffice на C++, о сборке и установке sdk которого было рассказано ранее) на платформы семейства Linux.
Состав пакета
Соответственно, необходимо определить, что мы переносим:
- служба для связи с сервером;
- драйвер для перехвата и обработки обращений к файлам;
- служба для общения и обработки информации от драйвера;
- диалоговое приложение;
- служба шифрования;
- расширение для LO.
Сборка
Теперь, когда мы определились с содержимым, для начала соберём deb пакет.
Так как у нас есть службы — их необходимо демонизировать. Для этого используем systemd.
Изначально было принято решение для сборки deb пакета использовать checkinstall. Первый пакет был собран при помощи него. Но при добавлении сборки в CI появились/возникли проблемы с окружением сборки, зависимостями и скриптами до/после установки. Поэтому было решено, что лучше это делать через fakeroot. Эти действия, по большей части, были описаны в данной статье.
Создаём отдельную директорию, содержащую инструкции для systemd, которую после перенесём в /lib/systemd/system.
Создаём директорию с содержимым, которое необходимо перенести при установке пакета.
А также создаём директорию DEBIAN, содержащую сценарии для действий перед/после установки/удаления и control, описывающий основную информацию пакета и его зависимости.
После созданного контента выполняем fakeroot dpkg-deb —build «имя пакета».
В итоге на выходе мы имеем deb пакет с содержимым.
Установка, удаление и проверка работы
Устанавливаем его командой:
sudo dpkg -i «имя пакета».deb
sudo dpkg -r «имя пакета» (указанное в файле control)
sudo dpkg --purge «имя пакета» (указанное в файле control)
При установке переносятся и запускаются три демона (приложения, работающие фоном, аналог служб Microsoft).
Для проверки их работоспособности выполняем:
systemctl status «имя демона».service
Для примера статус нашего dssservice
Далее началось тестирование пакета и выявление всех зависимостей, которые в процессе создания не были учтены. После успешной обработки всех зависимостей выяснилась одна интересная деталь. Если мы хотим подключаться по rdp к машине, то данный функционал необходимо настроить, так как по дефолту сервера для подключения по данному протоколу нет, как на Microsoft. Самым простым способом нaстройки rdp является настройка xrdp совместно с xfce4. При настройке xfce4 используется в качестве проводника Thunar и, соответственно, пункт в ПКМ, который мы добавляли через filemanager-actions, для него не добавляется. Но решение довольно быстро было найдено — находясь в домашней директории, проходим по следующему пути:
и там будет лежать файл uca.xml, содержащий сценарии для ПКМ.
Разворачивание пакетов в российских сертифицированных ОС
После успешного тестирования данного пакета на Ubuntu возник вопрос о работоспособности его на других ОС, использующих dpkg, как менеджер пакетов, а, соответственно, поддерживающих .deb. А, в частности, вспомнилась отечественная разработка (импортозамещение никто не отменял) — AstraLinux.
AstraLinux
С ходу установить пакет не удалось, так как наш пакет имеет в зависимостях filemanager-actions, который мы используем для добавления пункта ПКМ в Nautilus Ubuntu. Но в AstraLinux используется файловый менеджер fly, и для добавления в него мы не будем использовать filemanager-actions, пришли к выводу, что для AstraLinux будем собирать пакет без учёта этой зависимости. А для добавления используется сценарий «имя_процесса».desktop, который добавляется в /usr/share/flyfm/actions/.
Также были разрешены некоторые моменты, связанные с LKM, но их мы рассмотрим в следующей статье.
Cборка RPM
Следующей ОС стала ALTLinux. Она интересна тем, что имеет пакетный менеджер APT, но при этом вместо dpkg у неё используется rpm. А, следовательно, пора нам собрать наш пакет и под rpm.
Изначально попробовали сделать преобразование deb в rpm, как описано в этом мануале.
Alien достаточно мощная утилита, и с её помощью можно достаточно просто преобразовать пакет, достаточно только следовать её подсказкам и добавить недостающее (если она об этом попросит). В итоге при конвертации получили rpm пакет, но при попытке его установки вылезли зависимости, ссылок на которые изначально не было (позже расскажу, в чём была изюминка). Поэтому было принято решение собрать rpm пакет непосредственно средствами rpmbuild.
Сначала решили собирать не под ALTLinux, а под RedOs, так как со стороны бизнеса на неё более перспективные планы. RedOs основана на CentOS, поэтому сборку решили проводить в ней.
Часть с systemd остаётся без изменений, а вот Debian заменяем на файл «имя_проекта».spec, который содержит в себе всю информацию и зависимости из control, сценарии для действий перед/после установки/удаления, а так же описание содержимого пакета (непосредственно пути до того, что необходимо добавить).
После создания файла выполняем:
переносим .spec в rpmbuild/SPECS и выполняем:
rpmbuild --bb rpmbuild/SPECS/dssservice.spec
после чего забираем из директории rpmbuild/RPMS созданный пакет.
Пытаемся установить пакет и утыкаемся в те же самые зависимости, которые были при попытке установить конвертированный deb пакет.
Как оказалось, изюминка заключается в том, что при создании rpm система подтягивала дополнительные библиотеки, и ставила их в зависимость. Чтобы такого не было — необходимо в файл .spec добавить строку после описания зависимостей:
Пробуем установить и да — победа, пакет корректно устанавливается.
Для установки rpm пакета используем команду:
sudo rpm -ivh "имя_пакета".rpm
Для удаления (без удаления пакетов, находящихся в зависимости):
sudo rpm -e --nodeps ""имя_пакета""
RedOs
Далее необходимо разобраться с зависимостями, так как необходимые для работы наших приложений пакеты уже имеют другие названия, а также необходимо разобраться с добавлением пункта в ПКМ.
В RedOs в качестве файлового менеджера используется nemo. Для добавления в него пункта в ПКМ необходимо создать файл «имя_действия».nemo_action, в котором по аналогии с файлом .desktop (для AstraLinux) будет сценарий обработки нажатия на новый пункт меню, и переместить его в ~/.local/share/nemo/actions/, перезагрузить nemo и пункт появится.
ALTLinux
После успешного тестирования rpm пакета на RedOs перешли к формированию rpm пакета под
ALTLinux. По сути, необходимо скорректировать зависимости, так как для каждой оси пакеты будут иметь своё название, и снова понять, как произвести добавление пункта в ПКМ. Тут нам на помощь снова пришёл filemanager-actions, через который также можно добавить пункты в ПКМ и для Mate и Caja, которые как раз и используются в ALTLinux.
В итоге, мы собрали пакеты для основных, используемых у заказчика, ОС.
Заключение
В дальнейших статьях мы расскажем, почему использовали LKM и Avalonia и какие трудности из-за этого были, а также о дальнейших планах на доработку пакетов (в частности, доработка UI для ввода необходимой информации) и приложений, используемых в них.
Ссылки которые нам помогли
- ithelp21.ru/udalennoe-podklyutchenie-k-ubuntu-tcherez-rdp — неплохая инструкция, которой пользовались наши тестировщики для добавления rdp на Ubuntu
- pingvinus.ru/note/nautilus-context-menu-items — настройка nautilus-actions
- www.debian.org/doc/manuals/maint-guide/build.ru.html — сборка deb
- linux-notes.org/pishem-init-skript — Init скрипт для systemd