Фотография | Компьютеры | Программы | Эсперанто | Кровное
Перевод http://oesf.org/index.php?title=IPKG_Howto IPKG Howto
На Заурусе используются пакеты в формате ipk. IPKG – это очень облегченная (lightweight) система управления пакетами, разработанная для Линукс-систем с серьезными ограничениями на памить, например, карманных компьютеров. В данном документе представлена основная информация о том, как создавать ipk-пакеты.Дополнительную информацию и более детальные объяснения можно найти по адресу http://handhelds.org/moin/moin.cgi/Ipkg
Файлы в формате .ipk являются архивами tar, сжатыми gzip (.tar.gz), которые содержат три части:
/. То есть, имена файлов и каталогов, входящие в этот архив, должны начинаться с ./usr или ./opt.control. Также он может содержать следующие файлы: conffiles, preinst, postinst, prerm, postrm. Кроме этого, в него могут входить другие файлы и каталоги, нужные для установки, но это не будет особо полезным в настоящее время. См. секцию 3 “Скрипты Ipk”.
Ниже приведен пример как собрать пакет с названием foobar, который помещает файл test.txt в каталог /home/ на Заурусе. Вам понадобится скрипт ipkg-build.sh
Существует еще один скрипт, “mkipks”, но с ним могут быть проблемы, поэтому его не рекомендуется использовать.
Так же в Cacko feed есть пакет ipkg-tools, который помимо скритпа ipkg-build содержит в себе другие необходимые инструменты для работы с IPK, такие как ipkg-expand (скрипт, для “разборки” пакета) и ipkg-make-index (генерация индекса для feed).
1. Создайте структуру каталогов и файлов, как они должны быть расположены в системе. Для нашего примера мы создадим каталог foobar, который будет считаться корневым. С точки зрения ipk любой файл внутри foobar будет в /, таким образом, /foobar/home/text.txt будет установлен в /home/text.txt на Заурусе.
foobar/home/text.txt
2. На верхнем уровне иерархии создайте каталог с именем CONTROL.
foobar/home/text.txt foobar/CONTROL/
3. Внутри каталога CONTROL создайте файл под названием control, в который запишите необходимые данные в формате “Поле: значение”. В файле должны присутствовать следующие поля: Package, Version, Architecture, Maintainer, Section и Description. Опционально можете включить следующие поля: Priority и Depends.
foobar/home/text/txt foobar/CONTROL/control
Вот пример этого файла, который вы можете использовать в качестве шаблона:
### Begin CONTROL/control example Package: foobar Priority: optional Section: Misc Version: 0.1 Architecture: arm Maintainer: Familiar User famuser@foo.org Depends: libc6 Description: foo is the ever-present example program -- it does everything foo is not a real package. This is simply an example. .
Значения полей в файле CONTROL/control:
[[a-z0-9.+-]+)[[a-zA-Z0-9.+]*. Версия также может содержать в конце номер ревизии (ревизия должна сообтветствовать регулярному выражению ”-fam![[0-9]\+”. Ревизия должна увеличиваться каждый раз, когда пакет изменяется, а версия – нет (a packaging tweak). Она может сбрасываться (или просто опускаться) каждый раз, когда увеличивается номер версии.Не имеют собственной закладки, но нуждаются в категоризации:
Например:SeverManager должен быть в секции SettingsBoa должен быть в секции Console
Некоторые не обязательные, но рекомендованные секции:
4. Если пакет имеет конфигурационные файлы, создайте файл CONTROL/conffiles, содержащий список таких файлов с указанием абсолютного пути для каждого (как они будут расположены в системе после установки). Тогда система управления пакетами не будет автоматически перезаписывать эти файлы когда пользователь будет обновлять пакет.
5. Если требуется запустить скрипт в начале или конце установки, см. секцию 3 “Скрипты Ipk”.6. Теперь можно создать новый пакет:
ipkg-build.sh directory [destination_directory]
где directory – каталог, который должен быть создан. Второй параметр, destination_directory, является опциональным и если опущен, считается равным текущему каталогу. Скрипт ipkg-build.sh производит некоторые проверки целостности и правильности данных в каталоге пакета и должен помочь вам справиться с возможными проблемами.
Если нужно, пакет может включать скрипты, которые будут вызваны системой управления пакетами. Вызов скрипта возможен непосредственно перед установкой пакета, после установки, перед удалением пакета и после удаления. Эти скрипты называются, соответственно, preinst, postinst, prerm и postrm, и должны располагаться в каталоге CONTROL. Они должны возвращать 0 в случае успешного завершения (ненулевое значение, возвращаемое preinst отменяет установку пакета – иногда это может быть полезным). Поэтому рекомендуется явно вызывать exit 0 в конце пакета, иначе наружу будет передан код возврата последней выполненой команды, а он может быть и не нулевым. Типичный пример - вызыв команды depmod, которая может отработать нормально, но при этом выдать несколько предупреждений.
Эти скрипты не должны полагать, что доступен tty, т.е. они не должны ничего запрашивать у пользователя.
Переменная PKG_ROOT указывает на корневой каталог пакета, и может быть использована для ссылок на установленное содержимое пакета.
Чтобы создать иконку для запуска приложения на закладке рабочего стола Кутопии нужно создать файл описания для рабочего стола (desktop file), запускаемый файл и иконку. Продолжая наш пример с пакетом foobar, файл для рабочего стола должен находиться здесь:
foobar/opt/QtPalmtop/apps/Applications/foobar.desktop
Вот его содержимое:
[Desktop Entry] Comment=Don't really do much, just an example. Exec=foobar Icon=foobar Type=Application Name=FooBar
Запускаемый файл и изображение (иконка) располагаются, соответственно:
foobar/opt/QtPalmtop/bin/foobar foobar/opt/QtPalmtop/pics/foobar.png
Для того, чтобы программа сразу запускалась в VGA режиме (без необходимости выключения опции “Display with magnified screen”), добавте в файл .desktop следующую строку:
Display=640x480/144dpi,480x640/144dpi
Для включения возможности пред-загрузки программы в память добавьте:
CanFastload=1
Для отключения возможности запуска приложения из-под пользователя root:
HidePrivilege=1
Для указания на список поддерживаемых типов Mime:
MimeType=video/avi;audio/mp3 MimeTypeIcons=VideoIcon;AudioIcon
Это позволит автоматически запускать программу и передавать файлы соответствующих типов в качестве параметра нажатием на них стилусом в среде Qtopia.
Для поддержки локализованных приложений, добавте соотвествующие строки (в кодировке UTF-8):
Type[de]=Anwendung Name[ru]=Адресная Книга
Для Java-программ: Скрипт, запускающий приложение, должен определять для джавы следующий параметр:
-XappName=$0
Чтобы добавить новый тип MIME в систему, используйте команду qtopia-addmimetype в файле .postinst. Например:
qtopia-addmimetype type/subtype myextension