Сайт | Скачать | Видео | Wiki

Автор Тема: Реализация .PFS (тестирование)  (Прочитано 206795 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re:Реализация .PFS (тестирование)
« Ответ #405 : 26 Февраль 2013, 02:01:52 »
Цитата
Pано или поздно на systemd переходить по любому придется.
никаких предпосылок к этому не видно, разве что мозгов перестанет хватать сделать скрипт запуска в init.d.

ps. Здесь отвечать ненадо, хотите флейма - в отдельную тему плиз.
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 34036
  • Репутация: +231/-0
    • PuppyRus-A
Re:Реализация .PFS (тестирование)
« Ответ #406 : 26 Февраль 2013, 13:38:40 »
pfsextract
В распакованных модулях все права на файлы изменяются на root:root
В скрипте проблемы не нашел. Попробовал "повторить на макете" - не повторяется. С проблемным meta-pfs без улучшений. Возможно глюки mksquashfs. На крайняк в конце pfsextract можно перевыставить права на /home/*

Можно оптимизировать код (не связано с root:root) :
Код
        if [ "${noprogress}" = "-no-progress" ]; then
          mksquashfs "${tmpdir}/files/${namepack}" "${outdir}/${namepack}.pfs" -comp xz -no-progress -noappend
        else
          mksquashfs "${tmpdir}/files/${namepack}" "${outdir}/${namepack}.pfs" -comp xz -noappend
        fi
вместо 5 строк 1
Код
          mksquashfs "${tmpdir}/files/${namepack}" "${outdir}/${namepack}.pfs" -comp xz "${noprogress}" -noappend

Предлагаю зависимости (в идеале бы и список файлов) привести к формату /var/lib/pacman/local/*/desc пакетов archlinux
Эксперимент показал, что достаточно генерить секцию %DEPEND%

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Реализация .PFS (тестирование)
« Ответ #407 : 26 Февраль 2013, 19:14:07 »
Скрипты обновлены.

Исправление ошибок, оптимизация некоторых скриптов.



Важно!
В этой версии пакета реализована функция поиска и проверки зависимостей.
Но пока это экспериментальная возможность! Требуется тестирование.

Скрипт mkpfs теперь поддерживает (экспериментально) следующие параметры:
  -d / --depends pack1 [pack2 pack2]   - Добавить в пакет информацию о пакетах-зависимостях.
  -l / --ldd   - Автоматический поиск необходимых библиотек и создание списка пакетов, от которых зависит будущий пакет.
  -a / --accuracy-depends   - Вносить в список зависимостей полные названия пакетов (с номерами версий и т.д.).
  -i / --index-libs-file   - Читать информацию о наличии библиотек в пакетах из специального файла.

Параметр -d / --depends позволяет добавить информацию о зависимостях вручную.

При использовании параметра -l / --ldd исполняемые файлы, имеющиеся в пакете, проверяются утилитой ldd на наличие необходимых им динамических библиотек, полученный список библиотек сопоставляется со списком файлов в других пакетах, и на основе полученной информации генерируется список пакетов-зависимостей.
По умолчанию (при использовании -l / --ldd) названия пакетов автоматически сокращаются (из названия исключается номер версии и название архитектуры), но если задан параметр -a / --accuracy-depends то в список вносятся полные названия.

Поиск необходимых библиотек по умолчанию производится в списках файлов подключённых и установленных пакетов. Но с параметром -i / --index-libs-file можно заставить скрипт искать библиотеки в специальном файле.
Этот файл можно создать с помощью скрипта pfsindexlibs, которому в качестве параметра передаётся название каталога с пакетами .pfs. (Пример команды: pfsindexlibs /catalog >/indexlibs.lst).


Не актуально! Новая реализация: http://forum.puppyrus.org/index.php/topic,12727.msg84950.html#msg84950


Список пакетов-зависимостей в пакете находится в файле pfs.depends. Названия пакетов записываются в файл посторочно (одна зависимость - одна строка). Допустимо сокращение названий пакетов. При наличии возможных вариантов (если необходимо наличие хотя бы одного из пакетов) названия таких пакетов записываются в одну строку с разделителем " / ".
« Последнее редактирование: 02 Декабрь 2013, 16:44:55 от Zay »

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Реализация .PFS (тестирование)
« Ответ #408 : 26 Февраль 2013, 19:15:06 »
А вот /var/lib/pacman/local/*/desc - хорошо бы. Тогда есть перспектива прикрутить pacman и убедить его в том что наши pfs - это его родные пакеты. Что даст возможность использовать репу арча. Скачанные pacman-ом пакеты в /var/cache/pacman можно скриптом конвертировать в pfs
Не вижу смысла изначально поддерживать чужой формат.

При желании подружить систему с чужими пакетами - есть несколько вариантов.
Например можно перед запуском пакетного менеджера считывать файлы pfs.depends и преобразовывать их в формат, понятный пакетному менеджеру.

Кроме того, в спецификации PFS заложена очень полезная возможность - хранить вместе с пакетом любые конфиги.
Например можно при конвертации чужих пакетов в .pfs дополнительно класть в "/etc/packages/mount/[Название]" конфиг оригинального пакета (файл с любым названием), и потом использовать его как угодно.


Можно оптимизировать код (не связано с root:root) :
Спасибо. В mkpfs и pfsmerge это давно исправил, а в pfsextract забыл.

Оффлайн dim-kut

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 1021
  • Репутация: +41/-0
Re:Реализация .PFS (тестирование)
« Ответ #409 : 02 Март 2013, 15:55:10 »
Если набрать mkpfs и нажать enter, то начинается какая-то непонятная работа. Лучше заблокировать эту возможность, пусть лучше хелп выдает.
Engineering is the art of making what you want from things you can get.

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Реализация .PFS (тестирование)
« Ответ #410 : 04 Март 2013, 19:40:40 »
Если набрать mkpfs и нажать enter, то начинается какая-то непонятная работа. Лучше заблокировать эту возможность, пусть лучше хелп выдает.
Если mkpfs вызывается без параметров - то пакет создаётся из текущего каталога.

Кто-то, я думаю, уже привык так создавать пакеты - зайти в нужный каталог и вызвать mkpfs. Но это не принципиальный момент, если остальные разработчики поддержат предложение - я уберу.

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Реализация .PFS (тестирование)
« Ответ #411 : 04 Март 2013, 19:49:29 »
Предлагаю вернуться к теме обсуждения зависимостей.
Пакеты PFS уже активно создаются, а такой важный вопрос как зависимости - не решён.

Кто-нибудь тестировал mkpfs с опцией --ldd?

Оффлайн dim-kut

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 1021
  • Репутация: +41/-0
Re:Реализация .PFS (тестирование)
« Ответ #412 : 04 Март 2013, 20:03:47 »
Если mkpfs вызывается без параметров - то пакет создаётся из текущего каталога.
Кто-то, я думаю, уже привык так создавать пакеты - зайти в нужный каталог и вызвать mkpfs. Но это не принципиальный момент, если остальные разработчики поддержат предложение - я уберу.
А, понял. Ну если это не ошибка, то вопрос снимаю. Может сам буду пользоваться.
Engineering is the art of making what you want from things you can get.

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re:Реализация .PFS (тестирование)
« Ответ #413 : 05 Март 2013, 04:36:25 »
Кто-нибудь тестировал mkpfs с опцией --ldd?
я пока не готов. компилирую через ж... пакеты xcb, и каждый пакет от радости хочется сразу спрятать :)
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re:Реализация .PFS (тестирование)
« Ответ #414 : 30 Март 2013, 04:55:36 »
я попробовал параметр -l при создании пакета, у меня вписало строчку cairo / LibreOffice
надо делать исключение - пакет LibreOffice в зависимостях никогда не указывать :)
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Реализация .PFS (тестирование)
« Ответ #415 : 30 Март 2013, 13:58:16 »
Строчка "cairo / LibreOffice" означает что пакету требуется "cairo" или "LibreOffice" (хотя бы что-то одно).
Если их не окажется - соответствующий скрипт сообщит что надо первый из них (в данном случае "cairo").
Так что, по идее, работает правильно.

Но я подумал, не лучше ли будет вынести создание списка зависимостей в отдельный скрипт? Тогда можно будет править его вручную перед созданием пакета.
Pro, как думаешь?

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re:Реализация .PFS (тестирование)
« Ответ #416 : 30 Март 2013, 15:10:50 »
для libxml2 или как то так было написано Libreoffice / libxml2 т.е. будет требовать либру первой.

нет автозаполнение зависимостей лучше автоматически, причем потом может даже по дефолту вписать. главное чтоб список нормально создавался, в данном случае список создался неправильно - либре офис не нужен.
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Реализация .PFS (тестирование)
« Ответ #417 : 30 Март 2013, 15:15:53 »
Зависимости по умолчанию в будущем - согласен, так и было задумано. Но, похоже, нужен более гибкий механизм.

Значит желательно прикрутить какой-то список исключений?

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re:Реализация .PFS (тестирование)
« Ответ #418 : 30 Март 2013, 15:19:34 »
или проверить механизм обнаружения, почему либре офис подходит по зависимостям? у него все либы в его каталоге - их программы сторонние не смогут увидеть (и не должны использовать т.к. там версии чисто для либре офиса) т.к. каталог либреофиса не экспортируется как libdir .... кажется.
 или ldd все же видит как то?
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Реализация .PFS (тестирование)
« Ответ #419 : 30 Март 2013, 15:35:02 »
Вот скрипт, который парсит ldd (сейчас в составе mkpfs):
Код
find ./ -type f -executable | while read chfile; do [ "$(file --brief "${chfile}" | grep -E "LSB executable|shared object")" ] && ldd "${chfile}" 2>/dev/null; done | grep -E '\.so$|\.so\.[0-9]' | sed 's/(..........)/()/' | sort -u | sed 's/[ \t]*//;s/.* =>  ()//;s/ => .*$//;s/ ()//' | while read exlib; do echo "${allfilesdir}" | grep -q -F "${exlib}" || echo "${exlib}"; done | sort -uf
Запускать в каталоге, из которого делается пакет.

Скрипт pfsindexlibs пробовал запускать? Либы от офиса он находит?