Утилита установки и удаления ПО из архивовТак получилось, что штатных менеджеров пакетов в QNX не существует... Это, конечно, не совсем так.

Для QNX4 есть tarx пакеты и утилита install с помощью которой можно устанавливать как просто архивы tar, так и сжатые разными компрессорами (freeze, gzip). В тоже время, в QNX Neutrino существует менеджер пакетов QPR и система пакетов pkgsrc. Однако, все эти методы работы с пакетами имеют следующие недостатки:
1. Пакеты tarx имеют закрытый формат и могут быть созданы только сотрудниками фирмы QSS. Также отсутствует возможность установки таких пакетов из консоли.
2. Утилита /etc/install не поддерживает функцию удаления установленных пакетов, что иногда бывает неудобно.
3. Менеджер пакетов QPR программа qnxinstall не входит в стандартную поставку QNX6 начиная с версии 6.4.0. И также отсутствует возможность работы с пакетами в командной строке.
4. Система pkgsrc поддерживается современными версиями QNX6. Однако, подготовка пакета, который не входит в коллекцию исходных кодов pkgsr может быть затруднительна.
В тоже время, часто дистрибутивы для QNX6 (да и QNX4) представляют собой просто tar.gz или tar.bz2 архивы. Вполне может быть, это связано с тем, что существующие средства управления пакетами обладают недостатками.
В рамках объективной реальности и с учётом недостатков, существующих на данный момент систем управления пакетами, была разработана утилита установки и удаления пакетов
xtall. Утилита представляет собой сценарий korn shell (ksh). Набор утилит, которые требуются для работы скрипта минимален, так что вероятность работы в QNX4, QNX6 и других *nix системах очень высока.

Первая версия утилиты
xtall поддерживает следующие возможности:
- Установка архивов в форматах tar, tar.gz, tar.bz2, tar.F.
- Удаление файлов, ранее установленных при помощи утилиты.
В ближайшее время планируется добавить следующий функционал:
- Удаление файлов, основываясь на содержимом архива.
- Поддержка функционала утилиты install для QNX4 (вывод сообщения перед установкой, вызов установочного скрипта)
- Реализация функции вызова скрипта после установки
- Поддержка архива zip
Будем рады замечаниям и пожеланиям по работе скрипта.
Описание работы сценария xtallСинтаксис вызова команды:
# xtall [опции] <имя_архива>
Опции:
-f отмена вывода некоторых предупреждений и принудительное выполнение операций
-h вывод справки по работе с программой и завершение работы
-i установка (install) архива в систему (действие по умолчанию)
-r удаление (remove) файлов из ранее установленного архива
-V вывод информации о версии программы и завершение работы
Программа проверяет текущий путь и выводит предупреждении, если установка производится не в корневой директории. Этого можно избежать, если задать ключ -f. При установке файлов из архива, список установленных файлов сохраняется в каталоге /var/cache/xtall (или в /usr/xtall). В дальнейшем, при удалении пакета, будет использоваться этот список. При удалении ранее установленных файлов достаточно указать только часть названия архива (начиная с первого символа). Если в системе было установлено несколько архивов, названия которых начинаются одинаково, то программа выведет список установленных архивов и завершится.
В первых строках скрипта содержится полезная информация, такая как коды ошибок при работе утилиты и список системных утилит, необходимых для работы сценария. После этого следует область конфигурации, стоит внимательно с ней ознакомиться и внести коррективы при необходимости. В частности, можно изменить каталог, в котором будут сохранятся списки установленных файлов.
Примеры вызова программы:
1. Установка файлов из архива.
2. Удаление ранее установленных файлов.
Скачать xtallxtall_100A_20100518.tar.gzКонтрольная сумма:
$ cksum xtall_100A_20100518.tar.gz
2434977237 10240 xtall_100A_20100518.tar.gz