Форум » Статьи и документация » PET пакеты » Ответить

PET пакеты

PHILOSOFF: PET пакеты Только для дистрибутивов Puppy v2.14+ PET (Puppy's Extra Treats)(дополнительное расширение в Puppy) это уникальная система управления пакетами встраиваемая и используемая Puppy начиная с версии 2.14. Если вы скомпилировали приложение из исходников или скачали уже скомпилированную версию, затем протестировали приложение в Puppy и теперь хотите сделать его доступным для остальных пользователей... Хотите узнать что внутри PET пакета? Хотите узнать как его устанавливать PET? Тогда эта статья для вас... Для начала прочтите управление пакетами в Puppy чтобы иметь представление о системе управления пакетами. Установка PET пакетов Навсегда запомните что существует две версии PET пакетов - "официальные" и "не официальные". Официальные PET пакеты, которые можно найти в Unleashed сборке, можно установить с помощью менеджера пакетов PETget (смотрите иконку с подписью "install"(“Установить”) на рабочем столе или в "Setup"(“Установка”) меню). После запуска программы перед вами предстанет список доступных пакетов. С другой стороны, PET пакеты, как официальные так и не официальные, могут быть установлены просто двойным щелчком на их иконке. Файловый менеджер ROX-Filer распознает все файлы, имеющие разрешение '.pet' и если вы щелкните на их изображении ROX-Filer сам запустит PETget. Некоторые PET пакеты, как официальные так и не официальные, могут быть установлены таким способом. Кроме того, SeaMonkey веб браузер, не так ли. Щелкните на ссылке на ".pet" файл, на какой-нибудь веб-странице и SeaMonkey предложит вам скачать пакет к себе на компьютер или же открыть непосредственно в PETget. Последнее означает что вы просто щелкаете на пакет в интернете и вуаля... он установлен!! В действительности некоторые приложения которые в ходе работы читают информацию mime типа из /etc/mailcap and /etc/mime.type распознают .pet файл и запустят PETget. Тоже самое для баз данных mime типа в /usr/share/mime. Как создавать PET пакеты Это задача "PET tools" - скрипты создания PET пакетов и конвертирования в PET формат других пакетов. Во-первых, для ответа на самый важный вопрос: допустим вы скачали нужные вам исходники из интернета и хотите скомпилировать PET пакет. Как? Это очень просто: после компиляции необходимо сделать всего один шаг "make install" такой: # new2dir make install "new2dir" это аргумент скрипта "make install" и в результате выполнения он создаст директорию во всеми файлами и папками в ней(new2dir). Сейчас нет необходимости более детально рассматривать этот процесс, что и как делает этот скрипт. Например, если вы скомпилировали "abiword-2.5.6" тогда будет создана директория "abiword-2.5.6-i486" со всеми установочными файлами. Следущий шаг тоже прост: # dir2pet abiword-2.5.6-i486 Это создаст PET пакет, файл "abiword-2.5.6-i486.pet". Вот и все. Создав PET пакет, вы можете сделать его доступным для других пользователей. PET пакет даже может быть отправлен мне для включения в список "официальных" пакетов Unleashed сборки. PET утилиты Puppy имеет набор скриптов предназначенных для работы с PET пакетами: Скрипт..................Пример............................Описание dir2pet...........dir2pet abiword-2.5.6-i486............Конвертирует директорию в PET пакет new2dir...............new2dir make install...............Создает директорию установочных файлов pet2tgz..........pet2tgz abiword-2.5.6-i486.pet......Конвертирует .pet в .tar.gz архив pup2pet...........pup2pet abiword-2.5.6.pup..........Конвертирует DotPup в a PET пакет tgz2pet..........tgz2pet abiword-2.5.6.tar.gz..........Конвертирует .tar.gz файл в PET пакет Все они находятся в /usr/bin. Все они просты в использовании. Большинство будут просто задавать вам простые вопросы и информировать о действиях на каждом шаге. На самом деле ".pet" файл это архив ".tar.gz", за исключением 32-х байт md5sum (контрольная сумма файла) дописанных в конец файла. Все что "pet2tgz" скрипт удаляет это md5sum. Все что "tgz2pet" добавляет это md5sum. Скрипт "pup2pet" куда более специфичен. Он конвертирует DotPup в PET пакеты. Он задает несколько вопросов и расчитанных не то что отвечающий и создатель DotPup одно лицо, вопросы несложные и кто угодно сможет понять и выбрать правильные ответы. Скрипт "new2dir" очень функционален. Он будет делать все что указывается в командной строке, обычно при команде "make install" он будет контролировать все установочные файлы и копировать их в раздельные директории. Например, пакет "abiword-2.5.6": будет создана директория "abiword-2.5.6-i486" и установочные файлы будут скопированы нее. Постфикс "-i486" это тип CPU для которого компилируется пакет – есть еще "-i586" и "-i686". "new2dir" может больше. Он может разъединять "development", "documentation" и "international" компоненты установочных файлов по разным директориям. Существует одна главная целевая директория, например "abiword-2.5.6-i486", но опционально некоторые компоненты могут быть помещены в "abiword_DEV-2.5.6-i486", "abiword_DOC-2.5.6-i486" или "abiword_NLS-2.5.6-i486". Где сделать это распределение вопрос для создателя PET пакета – это делается для сокращения размера пакета. Обычно если в пакете разделены библиотеки это лучше для последующей разработки. Скрипт "dir2pet" может быть применен к каждоый их этих директорий, преобразуя их в PET. Как конвертировать DotPup в PET Я создал скрипт 'pup2pet', описанный выше. Однако, это не реально конвертировать DotPup, просто упакуем его в PET. Скажем у вас есть "abiword-2.5.6.pup" и вы выполняете команду: # pup2pet abiword-2.5.6.pup Это изменит исходный пакет на "abiword-2.5.6.pet", но если вы загляните внутрь PET пакета (о том как открыть PET пакет читайте далее) вы увидите дви или три файла: "abiword-2.5.6.pup", "abiword-2.5.6.pet.specs" и по возможности "abiword.desktop" – таким образом, DotPup теперь здесь. Когда PETget устанавливает такие PET, он вызывает встроенный DotPup менеджер, dotpuprox.sh. Таким образом, DotPup устанавливается точно так же как стандартный. Одна незначительная проблема в данном методе: DotPup установочник включает всплывающие подсказки, которые высвечиваются в меню, однако . PETget не позволяет DotPup установщику работать с меню оконного менеджера, как это делают ".desktop" файлы. Данная техника имеет приимущество, заключающееся в том, что DotPup устанавливается абсолютно так же как нековертированный PET пакет. Однако, существует другой способ сделать это по сущности полная переделка в PET формат: # new2dir dotpuprox.sh `pwd`/abiword-2.5.6.pup # dir2pet abiword-2.5.6-i486 Несмотря на то что DotPup установщик используется для установки DotPup пакетов, контроль устанавливаемых файлов проводится с помощью "new2dir", который создает папку "abiword-2.5.6-i486" с устанавливаемыми файлами и каталогами. Затем конвертируется папка "abiword-2.5.6-i486" в PET пакет. Внутри PET пакета Откройте PET пакет взгляните на файлы и каталоги, это больше похоже на обычный бинарный архив. В Puppy package management я показал на примере Torsmo пакета – давайте проследуем внутрь пакета и взглянем как это выглядит изнутри PET пакета. Для подтверждения, Torsmo пакет содержит только 2 файла: /usr/local/bin/torsmo /usr/local/lib/X11/mini-icons/torsmo.xpm Если убрать контрольную сумму md5sum в файле "torsmo-1.0.pet" : # pet2tgz torsmo-1.0.pet Тогда откроем его так: # tar -zxf torsmo-1.0.tar.gz Вот что мы должны увидеть: Директория "usr" содержит поддиректории и файлы. Большинство PET пакетов имеют "specs"(данные) файл который содержит файл с текстовой информацией которую использует PETget для управления целями пакетов. Скрипты "dir2pet" и "pup2pet" создают этот файл. Отметим что вы также можете поместить 16x16 XPM изображение в "specs" файл и PETget переместит его в /usr/local/lib/X11/mini-icons (стандартное место расположения иконок меню 16x16). Также вы можете разместить 48x48 XPM или PNG изображение в "specs" файл и он будет перемещен в /usr/local/lib/X11/pixmaps (важное замечание: он должен быть назван 'something48.xpm' или 'something48.png', тоесть он должен иметь символы '48' в имени для корректного распознавания PETget менеджером). В случае с Torsmo, вместо перемещения файла "torsmo.xpm" внутрь "usr/local/lib/X11/mini-icons" каталога, мы можем поместить его сюда: На этом скриншоте видно еще 2 файла: "pinstall.sh" который выполняется сразу после установки и "puninstall.sh" который выполняется сразу после удаления файлов. (Отметим что PETget скопирует скрипт удаления в /root/.packages/ и переименует его в "torsmo-1.0.remove") Просто чобы завершить цикл, откройте Torsmo PET пакет, если что нибудь в нем изменилось то мы можем очень просто все восстановить обратно: # tar -c -f torsmo-1.0.tar torsmo-1.0/ # gzip torsmo-1.0.tar # tgz2pet torsmo-1.0.tar.gz Пост-инсталляционный скрипт Это опциональный скрипт который вы можете создать сами. Очень немногие PET пакеты нуждаются в нем. Тоже самое для пост-деинсталяционного скрипта . Но, если вам нужно создать "pinstall.sh" скрипт, здесь несколько подсказок: Пост-инсталяционный скрипт требует дополнительных разъяснений. Нет различий в стандартных PET пакетах и PET package в Unleashed сборке, кроме их областей применения. Unleashed пакеты используются при создании Puppy live-CD ISO образа, в то время как стандартные PET пакеты доступны для свободного скачивания в интернете и установке с помощью PETget менеджера. В обоих случаях, пост-инсталяционный скрипт будет выполнен после установки пакета. Здесь приведен базовый формат, для случая установки пакета браузера Dillo: #!/bin/sh #post-install script. #creatuppy: current directory is rootfs-complete, which has the final filesystem. #pupget: current directory is /. #dillo is by default the default internal html viewer. #if no other browser, then dillo will also have to be the default web browser... if [ "`ls -1 ./usr/local/bin/ | grep --extended-regexp "opera|mozstart|links|hv3"`" = "" ];then echo "Configuring Dillo as the default web browser..." echo '#!/bin/sh' > ./usr/local/bin/defaultbrowser echo 'exec dillo "$@"' >> ./usr/local/bin/defaultbrowser echo -n "dillo" > /tmp/rightbrwsr.txt fi Важно знать какая директория установлена по умолчанию("current directory") когда выпоняется скрипт. В Unleashed среде, директория "rootfs-complete" создается файловой системой Puppy, и rootfs-complete/ и является директорией по умолчанию для скрипта. Однако, когда пакет загружается и устанавливается с помощью PETget менеджера, текущая директория это головная директория Puppy, тоесть "/". Вот почему скрипт ставит точку в начале "/usr/local/bin", потому что это работает в любом случае. Эта "точка в начале" одна из специальных вещей которую вы должны запомнить перед тем как создавать "pinstall.sh" скрипт. .desktop файл меню PET пакет который имеет пункт в меню должен иметь файл '.desktop'. Стандартная директория для таких файлов /usr/share/applications/. Возьмем Torsmo пакет в качестве примера. Если необходимо отображать его в меню (имеется в виду меню в нижнем левом углу экрана) тогда этот файл должен входить в пакет: /usr/local/bin/torsmo /usr/local/lib/X11/mini-icons/torsmo.xpm /usr/share/applications/torsmo.desktop Скрипты создания PET пакетов 'pup2pet' и 'dir2pet' сами создадут '.desktop' файл. Начиная с Puppy v2.14, меню всегда создается динамически, a PET пакет устанавливается или удаляется, или когда загружается новая версия Puppy (или загружается с параметром "pfix=clean" ). Это маленькая программа которая читает '.desktop' файлы и генерирует меню . Рауль (ник rarsa на Puppy Forum) сделал инфраструктуру '.desktop' файлов в Puppy и также написал генератор программ (одна из которых именно менеджер меню). Эта динамика творит великие вещи. Установите пакет, перезапустите оконный менеджер, и вуаля – новые пункты меню, все работает! Удалите пакет, перезапустите оконный менеджер, и менюудалит лишнюю вкладку. Вы можете открыть '.desktop' файл и посмотреть для себя, но как правило он сожержит текст для генератора о отображаемом тексте и картинке, месторасположении в иерархии меню. Эта '.desktop' система часть XDG спецификации еню. Дополнительную информацию можно найти здесь: http://www.freedesktop.org/Standards/desktop-entry-spec и: http://www.freedesktop.org/wiki/Standards_2fmenu_2dspec Конфигурационный фал меню Стандартный оконый менеджер в "стандартной" комплектации Puppy это JWM. Его конфигурационный файл /root/.jwmrc, среди прочего есть все спецификации меню компоновки и записи . Как упоминалось, этот файл позволяет автоматически генерировать меню и обновлять его в редими работы. Таким образом, что если мы хотим кое что изменить в нем? В остальных оконных менеджерах так же есть конфигурационный файлы, например у IceWM это /root/.icewm/menu и для Fvwm95 это /root/.fvwm95. Они могут сожержать не только спецификацию меню, но вы все равно можете редактировать их. Некоторые окнные менеджеры не пожжерживают всплывающие окна, в этом случае можно использовать дополнительные программы, например "fbpanel" – которая в свою очередь также имеет конфигурационный файл. Когда PET пакет установлен или удален, PETget запускает маленькую программу "fixmenus" (вот отсюда /usr/sbin). Она читает конфигурацию оконного менеджера (или fbpanel) из /etc/xdg/templates и создает свежие конфигурационные файлы. Например, шаблонный файл для JWM это /etc/xdg/templates/_root_.jwmrc и будет сгенирован /root/.jwmrc. Между прочим, если вы хотите вручную изменить JWM конфигурационный файл, измените файл шаблона. Имя файла шаблона содержит некотрые символьные замены. Например символ "_" будет сконверитирован в "/" символ. Таким образом, the "_root_.jwmrc" создастся как "/root/.jwmrc". Файлы шаблонов могут содержать пояснения для самих себя. Если вы знакомы с самим приложением то и файл шаблона будет вам понятен. Для разработчиков, если вы создаете PET пакет для окнного менеджера, например FluxBox, поалуйста создавайте шаблон в /etc/xdg/templates. Перевел статью: zulman Оригинал здесь

Ответов - 0



полная версия страницы