1. Всі питання в супутніх темах де ведеться обговорення Дякую
  2. ЕПГ формується в стандартному режимі.

    Всі питання прохання оформляти в супутніх темах

УВАГА змінено реквізити карти для допомоги форуму (стара закінчилась) нові "Приват БАНК" 4731 1856 4293 3912

FAQ Создаём свой ipk-пакет

Тема у розділі 'Общие вопросы', створена користувачем kil1970, 18 тра 2015.

  1. kil1970
    Offline

    kil1970 АДМИНОСНОВАТЕЛЬ ФОРУМА Команда форуму

    Повідомлення:
    5,190
    Симпатії:
    7,227
    Бали:
    113
    ICQ:
    112703277
    Скайп:
    kil1970
    Сообщение администратора
    Часто в имджах и на их аддонах отсутствуют нужные нам пакеты. Или нет нужной версии. А можно создать пакет со своими настройками, чтоб при установке нового имиджа не надо было руками раскидывать конфиги и настройки. Тогда пакет можно создать самому.
    Если вы хотите заменить в пакете бинарник на свежий, то можно распаковать старый пакет, заменить бинарник и снова упаковать. В винде распаковать можно с помощью 7zip. В принципе ей же можно упаковать, но виндовые разделы не поддерживают линуксовые права и бит исполняемости, и при распаковке всё будет сразу потеряно. Так что упаковывать надо описываемым способом.

    В кратце ipk-пакет это набор папок в том порядке, как они должны быть раскиданы по енигме, сжатые архиватором с описанием пакета и скриптами, которые должны быть выполнены до (например остановить енигму), после и т.д.

    Распакованный пакет представляет из себя 3 файла. 1й файл control.tar.gz это сжатый файл с описанием пакета и до и постустановочными скриптами. 2й файл data.tar.gz непосредственно с рабочими файлами и файлик debian-binary , это простой текстовый файл в котором 2 цифры - номер версии системы ipkg (сейчас для всех систем это 2.0).
     
    Останнє редагування: 20 тра 2015
    algisk, wikon1 та (вилучений користувач) подобається це.
  2. kil1970
    Offline

    kil1970 АДМИНОСНОВАТЕЛЬ ФОРУМА Команда форуму

    Повідомлення:
    5,190
    Симпатії:
    7,227
    Бали:
    113
    ICQ:
    112703277
    Скайп:
    kil1970
    Сообщение администратора
    IPK пакет
    (или с чем его едят?)


    ipkg - the Itsy Package Management System. Так, по крайней мере, написано на сайте создателей программы ipkg. Но я хочу повести речь не об этом, а о инсталяционных ipk пакетах для Дрима и, что с ними можно делать помимо их прямого назначения.

    Немного о формате ipk пакета
    Итак, .ipk файл - это архив, содержащий внутри себя 3 обязательных файла:
    • data.tar.gz (архив) - содержит файлы, которые будут установлены в систему при инсталяции пакета. Содержимое этого архива будет распаковано в корневую директорию / программой ipkg. Поэтому этот архив должен содержать директории верхнего уровня такие, например, как /bin, /usr или /etc.
    • control.tar.gz (архив) - содержит мета-данные и установочные скрипты для пакета. В архиве обязательно должен быть текстовый файл под названием control, в котором находятся метаданные пакета: имя, версия, описание пакета и др. (см. ниже). Также в этом архиве могут быть следующие файлы: conffiles, preinst, postinst, prerm и postrm. Также могут быть ещё чёрт-знает-какие файлы, но все они не будут использоваться при установке пакета [​IMG].
    • debian-binary (файл) - это обычный текстовый файл с одним и тем же, неизменным до нынешнего времени, текстом: "2.0". Размер файла должен быть равен 4 байта.
    Как видим формат .ipk пакета точно такой же, как и у .deb пакетов (debian packages) для ОС Debian на базе ядра Linux.
    Для упаковки/распаковки ipk пакета используется ar архиватор. Другими словами, ipk пакет - это ar архив, только с .ipk расширением.

    Пару слов об именах ipk пакетов
    И ещё пару слов о самих именах ipk пакетов. На первый, неподготовленый, взгляд названия .ipk файлов поражают своей незапоминающейся нечитабельностью. Но это только на первый взгляд... На самом деле всё очень строго и информативно. Название ipk-файла состоит из четырёх обязательных составляющих.

    Формат: название_версия_архитектура.ipk

    Пример: enigma2-plugin-extensions-webinterface_2.6cvs20090516-r0_mipsel.ipk
    • название - название пакета, допустимые символы [a-z0-9.+-]
    • версия - версия пакета, допустимые символы [a-zA-Z0-9.+]
    • архитектура - допустимые имена: all, noarch, powerpc, mipsel, и dm500plus, dm600pvr, dm800, etc...
    • ipk - расширение пакета

    Распаковка ipk пакета
    Попробуем распаковать какой-нибудь.ipk пакет в Дриме через Telnet-сессию:
    1. Забросим по FTP какой-нибудь.ipk пакет в директорию Дрима /tmp.
    2. Создадим временную директорию /tmp/IPK-UNPACK:
      mkdir /tmp/IPK-UNPACK
    3. Eсли мы хотим распаковать ar архив в определенную директорию, то надо в нее перейти, т.е. сделать её текущей.
      Поэтому перейдем в только-что созданную директорию /tmp/IPK-UNPACK:
      cd /tmp/IPK-UNPACK
    4. Распакуем какой-нибудь.ipk пакет:
      ar -xo /tmp/какой-нибудь.ipk
    5. Если мы теперь просмотрим содержимое директории /tmp/IPK-UNPACK командой ls, то увидим примерно следующее:
      Чтобы увидеть скрытый код необходимо зарегистрироваться. Также, если не ошибаюсь, из под Windows просмотреть содержимое ipk пакета можно 7-zip архиватором. Но на этом я не настаиваю [​IMG].

      Как работать с .tar.gz-архивами, их ещё называют тарболами (tarball), надеюсь вы знаете, но, вкратце, напомню:

      a) создадим временную директорию, в которую хотим распаковать тарбол:
      mkdir /tmp/CONTROL-UNPACK
      b) перейдем в только-что созданную директорию, если хотим распаковать тарбол именно в нее:
      cd /tmp/CONTROL-UNPACK
      c) распакуем тарбол в директорию /tmp/CONTROL-UNPACK:
      tar -xzvf /tmp/IPK-UNPACK/control.tar.gz
      d) и для проверки просмотрим директорию /tmp/CONTROL-UNPACK:
      ls -ls /tmp/CONTROL-UNPACK
      (команда выведет полный список всего содержимого в директории /tmp/CONTROL-UNPACK)
     
    Останнє редагування: 20 тра 2015
    algisk, wikon1 та (вилучений користувач) подобається це.
  3. kil1970
    Offline

    kil1970 АДМИНОСНОВАТЕЛЬ ФОРУМА Команда форуму

    Повідомлення:
    5,190
    Симпатії:
    7,227
    Бали:
    113
    ICQ:
    112703277
    Скайп:
    kil1970
    Сообщение администратора
    Упаковка ipk пакета
    Попробуем теперь, наоборот, упаковать файлы из директории /tmp/IPK-UNPACK в новый пакет:
    1. Итак, предположим, необходимые три файла лежат у нас в директории Дрима /tmp/IPK-UNPACK.
    2. Формат ipk пакета требует, чтобы необходимые файлы распалагались в архиве в корневой директории, т.е. без папок.
      Поэтому перейдем в директорию /tmp/IPK-UNPACK:
      cd /tmp/IPK-UNPACK
    3. Упакуем новый-какой-нибудь.ipk пакет:
      ar -crf /tmp/новый-какой-нибудь.ipk ./debian-binary ./data.tar.gz ./control.tar.gz
    4. Если упаковка прошла успешно, то мы можем просмотреть созданный файл командой ls:
      Чтобы увидеть скрытый код необходимо зарегистрироваться. Но, но, но... [​IMG]. Не знаю, как у вас, но у меня с первого раза не получилась упаковка. А всё дело в том, что в Дриме ar - это, всего-лишь, аплет busybox'а, и, поэтому, функциональность его весьма урезана и он может лишь распаковывать архивы. По крайней мере, на сегодняшний день... После непродолжительных поисков мною был выдернут полнофункциональный ar архиватор из deb-пакета Пожалуйста войдите или зарегистируйтесь (для dm800 - Пожалуйста войдите или зарегистируйтесь), в состав которого он входит, и установлен в Дрим вместе с библиотекой libbfd-2.17.so, требуемой для его нормальной работы. После этих манипуляций всё заработало, как надо [​IMG].
      Вы же можете просто скачать готовые к использованию в конце этого поста в прицепке.

    Создание ipk пакета
    К чему я всё это веду? У вас не возникало желание сохранить mgcamd со всеми настройками ш@ринга для последующей быстрой установки на новую версию имиджа? Можно, конечно, всё сделать, как и раньше, скопировать файл за файлом на комп, потом всё также обратно... Но настоящие Дримоводы легких путей не ищут [​IMG].
    Итак, у нас есть настроеный mgcamd и мы хотим сделать с ним инсталяционный пакет.
    Зайдём на Дрим через Телнет обязательно под root логином и...:
    1. Создадим рабочую папку /IPK-BUILD в директории /tmp:
      mkdir /tmp/IPK-BUILD
    2. В директории /tmp/IPK-BUILD создадим файл debian-binary:
      echo "2.0" > /tmp/IPK-BUILD/debian-binary
    3. В директории /tmp/IPK-BUILD создадим тарбол data.tar.gz, в котором будут все нужные файлы для mgcamd. Все файлы в командной строке должны быть с полными путями, чтоб потом они туда же и установились обратно:

      Чтобы увидеть скрытый код необходимо зарегистрироваться.
    4. В директории /tmp/IPK-BUILD создадим поддиректорию /CONTROL:
      mkdir /tmp/IPK-BUILD/CONTROL
    5. В директории /tmp/IPK-BUILD/CONTROL создадим файл control с таким содержанием:
      Файл /tmp/IPK-BUILD/CONTROL/control:

      Чтобы увидеть скрытый код необходимо зарегистрироваться. Для создания и редактирования файла можно воспользоваться консольными программами vi, nano, или же, если установлен в Дриме mc, то лучшим выбором будет [/b]mcedit[/b]. Команда будет такого вида:
      программа /tmp/IPK-BUILD/CONTROL/control
      Или же, также, можно воспользоваться возможностями FTP и вашего компьютера, но текстовый редактор должен поддерживать unix-кодировку, т.е. utf8 и перевод строки в unix-стиле.
    6. В директории /tmp/IPK-BUILD/CONTROL создадим файл conffiles с таким содержанием:
      echo "/usr/keys/mg_cfg" > /tmp/IPK-BUILD/CONTROL/conffiles
    7. Зададим права 644 созданым файлам:
      chmod 644 /tmp/IPK-BUILD/CONTROL/* /tmp/IPK-BUILD/debian-binary
    8. Перейдем в директорию /tmp/IPK-BUILD/CONTROL:
      cd /tmp/IPK-BUILD/CONTROL
    9. В директории /tmp/IPK-BUILD создадим тарбол control.tar.gz (обратите внимания на точку через пробел в конце строки, они обязательны):
      tar -czf /tmp/IPK-BUILD/control.tar.gz .
    10. Перейдем в директорию /tmp/IPK-BUILD:
      cd /tmp/IPK-BUILD
    11. Упакуем теперь наши файлы в новый my-mgcamd1-31_1.31_all.ipk пакет:
      ar -crf /tmp/my-mgcamd1-31_1.31_all.ipk ./debian-binary ./data.tar.gz ./control.tar.gz

      Если всё прошло успешно, то теперь у вас есть свой my-mgcamd1-31_1.31_all.ipk пакет, который сейчас лежит в /tmp директории. Чтож пробуйте его теперь устанавливать с помощью программы ipkg:
      ipkg install /tmp/my-mgcamd1-31_1.31_all.ipk

    Файл control
    Обязательные поля в файле control, которые должны быть заполнены:
    • Package:
      Название ipk пакета. Должно соответствовать регулярному выражению "[a-z0-9.+-]\+". Обратите внимание, что заглавные буквы не допускаются. Так, например, название пакета типа myNewSoftware недопустимо. А, вот my.56+new-software - допустимо. Также, название должно начинаться только со строчной латинской буквы.
    • Version:
      Номер версии в форме: [:epoch] version [-fam frevision] [-revision]
      • epoch
        Отпечаток времени (timestamp) в секундах с начала эпохи. Необязательное поле.
      • version
        Обязательное поле. Должно отображать номер версии программы в пакете, и должно, как минимум, содержать одну цифру, и должно соответствовать регулярному выражению "[a-zA-Z0-9.+]\+". Обратите внимание, что и заглавные, и строчные буквы разрешены, как часть номера версии.
      • frevision
        Предположительно, familiar revision. Соответствует регулярному выражению "-fam[0-9]\+". Необязательное поле.
      • revision
        Отображает ревизию билда (build revision) пакета. Поле должно увеличиваться каждый раз при перепаковке программы. Если версия увеличилась, ревизия может быть обнулена. Соответствует регулярному выражению "-[a-z0-9]\+". Необязательное поле.
      Пример: 2.6cVs20090516-fam2-r1
    • Architecture:
      Название архитектуры. Возможно одно из следующих имен:
      • all - пакет для любых процессорных платформ, например документация или скрипты.
      • noarch - Архитектурно-независимый пакет.
      • mipsel - пакет для MIPSel архитектуры (MIPSel CPU)
      • powerpc - пакет для PowerPC архитектуры (PowerPC CPU)
      • dm500plus, dm600pvr, dm800, etc... - пакет для определенного Дримбокса.
    • Maintainer:
      Обычно имя и e-mail адрес распостранителя или билдера пакета, а может быть, и автора ПО.
    • Section:
      Поле должно иметь одно из следующих значений:
      admin, base, comm, devel, editors, extras, games, graphics, kernel, libs, misc, net, text, web, x11
    • Priority:
      Поле должно иметь одно из следующих значений (обычно используется optional):
      required, important, standard, optional, extra
    • Description:
      Текстовое описание содержимого пакета. Допускается многострочный текст, но не больше 80 символов на строку и следующая строка должна начинаться с пробела. Для отображения пустых строк используется единственная точка '.' после пробела в новой строке.
    • Source:
      Список файлов или URL, указывающий на исходники.


    ... на этом пока всё, что не понятно спрашиваем...
     
    Останнє редагування: 20 тра 2015
    wikon1 та (вилучений користувач) подобається це.
  4. kil1970
    Offline

    kil1970 АДМИНОСНОВАТЕЛЬ ФОРУМА Команда форуму

    Повідомлення:
    5,190
    Симпатії:
    7,227
    Бали:
    113
    ICQ:
    112703277
    Скайп:
    kil1970
    Сообщение администратора
    Dreambox IPK packages maker
    (программа для сборки и разборки ipk-пакетов)

    Предлагаю вашему вниманию небольшую и простенькую програмулину для сборки и разборки ipk пакетов - ipk-maker

    Программа умеет:
    • собирать ipk-пакеты (build).
      Пример:
      ipk-maker build /tmp/IPK-BUILD

      Где /tmp/IPK-BUILD есть уже структуированая ipk-директория. В ней должны быть две поддиректории:
      /tmp/IPK-BUILD/CONTROL (содержит управляющие файлы для пакета)
      /tmp/IPK-BUILD/DATA (содержит любые папки/файлы данных, которые вы хотите включить в пакет)
    • разбирать ipk-пакеты (unbuild)
      Пример:
      ipk-maker unbuild /tmp/IPK-BUILD /tmp/any-package_0.1_all.ipk

      Где /tmp/IPK-BUILD есть директория, в которую будет распакован файл /tmp/any-package_0.1_all.ipk .
    • а, также, создавать структуру ipk-директории для создания нового ipk-пакета (make_dir)
      Пример:
      ipk-maker make_dir /tmp/IPK-BUILD

      Где /tmp/IPK-BUILD есть директория, в которой будут созданы:
      1. Маркерный файл debian-binary
      2. Поддиректория DATA
      3. Поддиректория CONTROL
      4. В поддиректории CONTROL в свою очередь будут созданы управляющие файлы:
      • control - здесь находятся все сведения о пакете, вам необходимо его будет отредактировать вручную. Файл обязательный!!!
      • preinst - скрипт, который будет исполняться до установки пакета (можно удалить, если не нужен).
      • postinst - скрипт, который будет исполняться после установки пакета (можно удалить, если не нужен).
      • prerm - скрипт, который будет исполняться до удаления вашего пакета (можно удалить, если не нужен).
      • postrm - скрипт, который будет исполняться после удаления вашего пакета (можно удалить, если не нужен).


    Установка, как обычно:
    1. Распаковываете zip-архив в /tmp Дрима
    2. Даете через Телнет две команды:

    cd /
    tar -xzvf /tmp/dreambox-ipk-maker_*.tar.gz


    Программа установится в /usr/bin Дрима и будет готова к употреблению.
    Если что не понятно, набираете: ipk-maker --help или спрашиваете здесь.
     

    Вкладення:

    Останнє редагування: 20 тра 2015
    iuvm, wikon1 та (вилучений користувач) подобається це.
  5. kil1970
    Offline

    kil1970 АДМИНОСНОВАТЕЛЬ ФОРУМА Команда форуму

    Повідомлення:
    5,190
    Симпатії:
    7,227
    Бали:
    113
    ICQ:
    112703277
    Скайп:
    kil1970
    Сообщение администратора
    Dreambox IPK packages saver
    (программа для сборки и восстановления
    уже установленных на Дрим ipk-пакетов
    )

    Предлагаю вашему вниманию ещё одну небольшую и простенькую програмулину для сборки и восстановления уже установленных на Дрим ipk-пакетов - ipk-saver

    Программа умеет.... Хм, покажу лучше на примере, как программа работает...

    К примеру вы хотите восстановить какой-нибудь ipk-пакет, который уже установлен на ваш Дрим... Пускай, для примера, это будет dreambox-bootlogo.
    Значит командуем Дриму через Телнет:

    ipk-saver dreambox-bootlogo

    В ответ получим приблизительно вот такое:
    Код:
    root@dm500hd:~# ipk-saver dreambox-bootlogo

    ipk-saver: пробуем сохранить "dreambox-bootlogo" пакет:

    *** Package dreambox-bootlogo found...
    Package depends:
    Package created: /tmp/IPK-SAVE/dreambox-bootlogo_3.2-r3_dm500hd.ipk
    *** Done.

    root@dm500hd:~#
    Т.е. около секунды времени и мы получили готовый ipk-пакет dreambox-bootlogo_3.2-r3_dm500hd.ipk, который лежит в директории /tmp/IPK-SAVE .
    Забавно, не правда ли? [​IMG]


    Установка, как обычно:
    1. Распаковываете zip-архив в /tmp Дрима
    2. Даете через Телнет две команды:

    cd /
    tar -xzvf /tmp/dreambox-ipk-saver_*.tar.gz


    Программа установится в /usr/bin Дрима и будет готова к употреблению.
    Если что не понятно, набираете: ipk-saver -h или спрашиваете здесь.
     

    Вкладення:

    Останнє редагування: 20 тра 2015
    wikon1 подобається це.
  6. kil1970
    Offline

    kil1970 АДМИНОСНОВАТЕЛЬ ФОРУМА Команда форуму

    Повідомлення:
    5,190
    Симпатії:
    7,227
    Бали:
    113
    ICQ:
    112703277
    Скайп:
    kil1970
    Сообщение администратора
    название пакета (name_version_architecture.ipk)?
    Оно должно соответствовать значениям полей файла control, который внутри пакета.
    Т.е. например, вот ваш control:
    Код:
    Package: aaaaaaaaa
    Version: 111111111
    Architecture: bbbbbbbbbb
    ...
    ...
    Тогда название файла пакета должно быть: aaaaaaaaa_111111111_bbbbbbbbbb.ipk

    Итак, по шагам.
    Для создания файла пакета необходимо проделать следующее:

    1. Установите (если уже этого не сделали) упаковщик ar. Его можно взять во вложении
    2. Определитесь с данными по разработанному Вами пакету (Plugin) , который Вы хотите упаковать в формат ipk. Они понадобиться для заполнения файла (см.ниже)
    3. Скачайте файл, который находится в прицепке к настоящему сообщению.
    4. Перекачиваете сей файл на свой ресивер, например в папку /home/user1
    5. Согласно пункту 2 отредактируйте, скаченный файл, под свои нужды:

    Чтобы увидеть скрытый код необходимо зарегистрироваться. ....
    6. Сохраните файл и задайте ему права на выполнение:

    Чтобы увидеть скрытый код необходимо зарегистрироваться. 7. Теперь запустите скрипт

    Скрипт производит следующие операции:
    1. Создаёт необходимые папки для архивации
    2. Копирует туда все необходимые и отфильтрованные данные из Вашего пакета (параметр PLUGIN_FILTER)
    3. Полностью, в автоматическом режиме, создаёт файлы control и debian-binary
    4. Создаёт необходимые архивы tar
    5. Создаёт сам ipk файл с именем: имя_пакета_версия_дата.ipk
    6. Чистит за собой (удаляет все временные данные)

    Все что Вам остаётся сделать это заполнить вышеозначенные данные и запустить файл.
    На выходе получаете готовый пакетный файл в формате ipk в текущей директории запуска скрипта.


    Благодаря leone
    на нашем сайте есть утсновочный пакет установочный пакет ipk-maker для sh4 .
     

    Вкладення:

    Останнє редагування: 8 чер 2015

Просматривают тему (Пользователей: 0, Гостей: 0)