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

Автор Тема: Разруливание зависимостей в pfs-util  (Прочитано 16169 раз)

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

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33956
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Разруливание зависимостей в pfs-util
« : 18 Ноябрь 2013, 12:58:06 »
По итогу опыта использования PRA прихожу к выводу, что надо все-таки как-то сделать.
До пакета - перебор, но если хранить большие проги полнофункциональными meta-pfs - копий qt python mesa и т.п. наберется по несколько штук. Причем, возможно разных версий , которые могут быть несовместимы
С яндексом вроде решили. Не пора вернуться к реализации?...

Хотелось бы попроще. Конкурировать с ПМ по полной не хотелось бы
Из совсем простого (для PRA) в start.sh дописывать вывод сообщения про то чего не хватает и предложить доподключить через sfs-get. При автоподключении - проверять при старте и тоже выводить чего не хватает
Уже сейчас при неудачном запуске модуля выводится 1я либа о которую споткнулись.
Есть еще идеи?
« Последнее редактирование: 19 Ноябрь 2013, 18:14:40 от sfs »

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
Re:Разруливание зависимостей
« Ответ #1 : 19 Ноябрь 2013, 17:26:56 »
Экспериментальная реализация написана.
Какой смысл делать новую, если существующую толком не тестировали даже?

Если получится согласовать концептуально - то можно доработать то что есть.

Всякие start.sh и 1я либа о которую споткнулись - кошмарные костыли. Кстати start.sh не поддерживается PFS-utils (но есть альтернативная функция).

С идеями туго. Я всегда мыслил PFS-utils именно как ПМ, пусть не такой функциональный, но со своими плюсами (переносимость, легкость доработки и другие преимущества скриптов).
У PFS есть особенность (два состояния пакета - "установлен" и "подключён") которую не учитывает ни один из существующих ПМ, поэтому в своё время я и предложил PFS-utils в качестве ПМ для PuppyRus.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33956
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:Разруливание зависимостей
« Ответ #2 : 19 Ноябрь 2013, 19:23:10 »
Экспериментальная реализация написана.
Я (да, наверное, и не только) уже подзабыл идею. Прошел почти год
http://forum.puppyrus.org/index.php/topic,12727.405.html

Давайте совместно вспомним (смотрю версию 034):
mkpfs делает pfs.depends
pfsdepend читает pfs.depends и что делает?
pfs_open вызывает pfsdepend и ...?
pfsload - вообще не в теме зависимостей или я что-то пропустил...

Какой смысл делать новую, если существующую толком не тестировали даже?
Получается в PR не прижилось. Значит в имеющейся реализации зависимостей  что-то не так...
Если получится согласовать концептуально - то можно доработать то что есть.
С тех пор произошли изменения
C MagOs дальше разговоров не пошло.
В PR только багфиксы
В PRA и Иванне немного свои pfs-util
Надо бы прийти к общей версии, которая устроит всех. Форкать не хотелось бы , да и сил идей и средств мало
Вы почти не участвуете. Выборочный багфикс http://forum.puppyrus.org/index.php/topic,12727.msg80100.html#msg80100
Всякие start.sh и 1я либа о которую споткнулись - кошмарные костыли.
Согласен

С идеями туго. Я всегда мыслил PFS-utils именно как ПМ, пусть не такой функциональный,
Давайте мыслить логически
Во всех ПМ автоматизирована скачка пакетов. В pfs нет
Даже если сделать - работает только с форматом pfs
Только pfs пакеты только в PR. Репа не обновляется т.к. нет ПМ и сил на поддержку
В итоге в PR "модульный монолит" , т.е. модули есть но делать с ними нечего и нечем
Круг замкнулся

Получается : единственное средство выжить - встроиться в имеющееся
Т.е. привязаться к базам установленных пакетов распространенных ПМ с развитыми репами
Научиться собирать pfs из чужих пакетов с сохранением инфы ПМ (чтобы можно было разруливать зависимости и качать этим ПМ). В PRA уже решено
Разработать простой механизм для разруливания зависимостей между pfs и докачки
С репой на яндексе вопрос наконец решился
Чего еще не хватает?

У PFS есть особенность (два состояния пакета - "установлен" и "подключён") которую не учитывает ни один из существующих ПМ, поэтому в своё время я и предложил PFS-utils в качестве ПМ для PuppyRus.
"установлен"  похоже вообще не востребован да и как-то противоречит идее подключения
Прижилось подкл\откл и сборка\разборка
Сборка\разборка - уникальная вещь которой больше нигде нет. Это конкретный шаг вперед. Реализация : консоль отдельно, gui над ним - супер
Нужны зависимости и скачка
Скачка реализована в sfs-get (не идеал но аналогов нет)
С зависимостями все зачаточно. Без этого модульности не получается. Т.е. крах всей идеи
А осталось то совсем чуть...

Разработчиками Вашего уровня на нашем форуме тоже не стоит разбрасываться. Хочется как-то Вас вернуть. Есть надежды или со временем плохо и не рассчитывать?

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8634
  • Репутация: +187/-2
  • Старый чайник
Re:Разруливание зависимостей
« Ответ #3 : 19 Ноябрь 2013, 20:56:23 »
Получается в PR не прижилось. Значит в имеющейся реализации зависимостей  что-то не так...
Это было до PR, начиналось здесь и даже был каталог lib в котором лежали пакеты с либами "поштучно", чтобы не выкачивать полный пакет с кучей ненужного из-за одной библиотеки. Но начались проблемы с репой и всё заглохло.
Всякие start.sh и 1я либа о которую споткнулись - кошмарные костыли.
Согласен
И что тогда лучше?
 Есть два пути, добавлять информацию о зависимостях в пакет или выявлять неудовлетворённые зависимости "по месту" ldd. Оба имеют недостатки и оба требуют качественный репозиторий именно библиотек.
 Третий путь - собирать пакеты без зависимостей руками. В этом случае мэнтейнеру работы добавится, но на выходе ноль проблем для пользователя. Исходя из этих соображений и проблем с репой я и "забил" на почти готовый build-sfs, а Саша Pro на это обиделся.
 Лично я за третий путь, "конструктор" это для нас, а для пользователя должна быть работоспособная система.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33956
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:Разруливание зависимостей
« Ответ #4 : 20 Ноябрь 2013, 09:58:39 »
Но начались проблемы с репой и всё заглохло.
У меня тоже осталось впечатление что все уперлось в это. Но сейчас-то решили...
И что тогда лучше?
Надо думать...

Пути:
1. добавлять информацию о зависимостях в пакет.
Насколько я понял во всех дистрах так и делается. Есть вспомогательные инструменты типа namcap (arch)
2. выявлять неудовлетворённые зависимости "по месту" ldd. Это надежный вариант, но где брать выявленные либы. Иногда только либу недостаточно (надо еще конфиги, бинарники) и это не выявить ldd
3.  собирать пакеты без зависимостей руками.
В PRA так и сделано, но как решать проблему qt python ... - в каждый модуль пихать не хочется
Отсюда и выросла эта тема

Думаю, оптимально сгибридизировать 3+1. Для :
Где-то в модуле инфа про зависимые модули
Скрипт подключения проверяет и предлагает скачать+подключить
Ничего особо сложного.
Только надо правильно спецификацию выработать...
На выходе дистронезависимый pfs-util

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8634
  • Репутация: +187/-2
  • Старый чайник
Re:Разруливание зависимостей
« Ответ #5 : 20 Ноябрь 2013, 10:37:37 »
Только надо правильно спецификацию выработать...
/etc/packages/<pacname>.dep ?
В котором полный вывод ldd + невыявляемые зависимости обработанный sort | uniq или только "тяжёлые" зависимости?
И без репозитория библиотек нам в любом случае не обойтись.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33956
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:Разруливание зависимостей в pfs-util
« Ответ #6 : 20 Ноябрь 2013, 11:33:45 »
Осмелюсь потянуть немного одеяло в сторону PRA
Хотелось бы заодно решить проблему 2х списков файлов дистриба (/var/lib/pacman и /etc/packages - они почти одинаковые) без потери совместимости и форка.
По зависимостям при сборке модулей - думаю, все кроме чужого ПМ и репы - напрасный труд
Начать с
Цитата
В PRA так и сделано, но как решать проблему qt python ... - в каждый модуль пихать не хочется
Это везде будет надо
Проще будет по 1му пути: список нужных pfs
В этом варианте - далее загрузка и подключение по списку

Если ldd - то надо по итогу искать модули или пакеты и из них что-то лепить - не руками заморочно
Опять же - из чего лепить? Если из своих pfs - кто готов продолжить поддержку не мета-pfs репы PR?
Если из чужой репы - удобнее ее ПМ - не получится дистронезависимо
« Последнее редактирование: 20 Ноябрь 2013, 11:36:14 от sfs »

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
Re:Разруливание зависимостей в pfs-util
« Ответ #7 : 25 Ноябрь 2013, 17:09:31 »
Вернёмся к первоначальной теме.

Поддержка зависимостей сводится к двум задачам:
1. Формирование списка необходимых пакетов при создании конкретного пакета.
2. Чтение этого списка при подключении модуля и реакция (в случае если нужных пакетов в системе нет).

Первый пункт экспериментально реализован в mkpfs. Используется ldd и списки файлов имеющихся в системе пакетов.

Второй пункт реализуется скриптом pfsdepends и GUI.
Скрипт open_pfs при подключении или установке пакетов, зависимости которых не найдены, выводит информацию (список зависимостей).
Вывод pfsdepends можно использовать и в других скриптах, например для закачки нужных пакетов из репозитория.

Вот такая ситуация с зависимостями в PFS-utils на сегодня.
Какие будут предложения?

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33956
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:Разруливание зависимостей в pfs-util
« Ответ #8 : 25 Ноябрь 2013, 17:55:54 »
Начать надо сначала - реакцией на неразрешенные зависимости должна быть скачка.
На сегодняшний момент это реализовано только в sfs-get
Глобально меня устраивает. Интерфейс и код надо дорабатывать

Вы готовы предложить альтернативу? Если да - ориентировочно - в какие сроки
Если нет или очень долго - допиливаем sfs-get

Зависимости
1. Если я правильно понял Pro - серьезных новшеств в PR уже не будет. Т.е. с зависимостями он уже не будет заморачиваться. В Иванне только склейка.
Остается PRA. Основные модули здесь собираются pacman-ом и он справляется. Но pfs модули используются но пока в законченном виде (со всеми зависимостями). Это удобно, но таскать в каждом модуле qt python - не хочется
Поэтому меня вполне устраивает так как я уже и сделал в последнем sfs-get : вернул start.sh и через него подгрузку зависимостей записанных руками. С ldd заморачиваться здесь не актуально

Начать надо со скачки, а потом выработать удобный для нее формат и место прописывания зависимостей
Все мои предложения в рабочем виде уже в D обновлении pra1311
Кроме того хотелось бы избежать дубляжа /etc/packages и /var/pacman без потери совместимости и наконец решения вопроса с увеличением сжатия по умолчанию

pfsdepends - возможно я чего-то не понял но сделано явно сложнее чем в sfs-get
Альтернатива start.sh - тоже

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
Re:Разруливание зависимостей в pfs-util
« Ответ #9 : 25 Ноябрь 2013, 18:27:26 »
Начать надо сначала - реакцией на неразрешенные зависимости должна быть скачка.
Согласен.

Вы готовы предложить альтернативу? Если да - ориентировочно - в какие сроки
Написать - не готов, т.к. дело для меня не знакомое (никогда не писал скрипты, работающие с сетью), а времени пока не хватает даже на решение более простых задач. :(

в последнем sfs-get : вернул start.sh и через него подгрузку зависимостей записанных руками
Файл pfsdepends тоже можно заполнять руками, это проще всего.
Вопрос в стандартизации хранения списка зависимостей. Один стандарт уже есть - построчный список в файле pfsdepends. Почему не использовать его?

Кроме того хотелось бы избежать дубляжа /etc/packages и /var/pacman без потери совместимости...
На сегодня, я думаю, это не реально...

...решения вопроса с увеличением сжатия...
Это планируется (как опция), наверное уже было бы реализовано, если бы не напряг со временем...

pfsdepends - возможно я чего-то не понял но сделано явно сложнее чем в sfs-get
Альтернатива start.sh - тоже
Сложнее, но значительно более надёжно и функционально.
+ не дублируется функционал в разных скриптах.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33956
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:Разруливание зависимостей в pfs-util
« Ответ #10 : 25 Ноябрь 2013, 19:10:00 »
Получается - надо допиливать sfs-get. Или как?
В start.sh мне не проблема переделать на `cat pfsdepends`. Но будет ли удобно туда прописывать? start.sh в корне модуля
И к-во строк в нем вряд ли будет >5. Тянет ли это на отдельный файл...
От  start.sh отказаться не готов. Это идет от pkg2pfs. Без этого там усложнится

/etc/packages/.../pfs.files и /var/pacman/local/.../files отличаются строчкой %FILES% начале
Если Вы добавите grep я смогу просто делать симлинк и этого достаточно. pacman такое ест
Да - ладно . Это не так важно и можно потом.
Давайте решать с start.sh и pfsdepends



Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
Re:Разруливание зависимостей в pfs-util
« Ответ #11 : 25 Ноябрь 2013, 19:55:02 »
Получается - надо допиливать sfs-get. Или как?
Очевидно так.
Хотелось бы, конечно, отдельный консольный скрипт для закачки с FTP в заданный каталог (желательно с индикацией процесса и т.д.). Его можно было бы включить в PFS-utils, и даже использовать в PR...

В start.sh мне не проблема переделать на `cat pfsdepends`. Но будет ли удобно туда прописывать? start.sh в корне модуля
Да, так будет универсально.
А ещё лучше вызывать pfsdepends для этого, и не из start.sh, а откуда-нибудь из sfs-get (т.е. отвязать зависимости от start.sh).

/etc/packages/.../pfs.files и /var/pacman/local/.../files отличаются строчкой %FILES% начале
Если Вы добавите grep я смогу просто делать симлинк и этого достаточно. pacman такое ест
Т.е. можно делать симлинки, и кроме %FILES% других граблей не будет, это точно?!

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8634
  • Репутация: +187/-2
  • Старый чайник
Re:Разруливание зависимостей в pfs-util
« Ответ #12 : 25 Ноябрь 2013, 20:05:16 »
 Что-то этот pfsdepends работает по А.Райкину - "Такая громадина, а на выходе ноль".
Уточните, что мы хотим с зависимостями, да я пожалуй своё начну писать.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33956
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:Разруливание зависимостей в pfs-util
« Ответ #13 : 25 Ноябрь 2013, 20:54:06 »
Хотелось бы, конечно, отдельный консольный скрипт для закачки с FTP в заданный каталог (желательно с индикацией процесса и т.д.). Его можно было бы включить в PFS-utils, и даже использовать в PR...
Я и говорю - Вы не смотрели ни PRA ни sfs-get: sfs-get-rep sfs-get-dep по сути консольные. Никакой связи с арчем не имеют
ntf использован минимально. Замените. (Хотя под Вас и писался и по Вашим рецептам)
лучше вызывать pfsdepends для этого, и не из start.sh, а откуда-нибудь из sfs-get (т.е. отвязать зависимости от start.sh).
А чем лучше?
И чем start.sh чуже --add-command
кроме %FILES% других граблей не будет, это точно?!
Если добавить %FILES% в начало pfs.files - pacman c таким работает.
Наоборот не пробовал
Это сейчас не главное. Можно потом
Что-то этот pfsdepends работает по А.Райкину - "Такая громадина, а на выходе ноль".
Мне тоже не нравится. Поэтому в PRA половина скриптов из версии без pfsdepends
Уточните, что мы хотим с зависимостями, да я пожалуй своё начну писать.
Подключаю модуль :  получаю предложение загрузить и подключить еще несколько (мало 2-3-5) модулей из списка написанного руками
Это уже работает в pra1311d
А "свое" будет под pfs-util или вместо?
Посмотрите, хотя бы как я сделал. Может так годится или легче поправить чем с нуля...

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8634
  • Репутация: +187/-2
  • Старый чайник
Re:Разруливание зависимостей в pfs-util
« Ответ #14 : 25 Ноябрь 2013, 21:12:18 »
Подключаю модуль :  получаю предложение загрузить и подключить еще несколько (мало 2-3-5) модулей из списка написанного руками
Ага..? А если списка нет или наоборот, эти зависимости уже установлены? Без ldd в цикле не обойтись.
А "свое" будет под pfs-util или вместо?
Вместо|вместе||под.
Посмотрите, хотя бы как я сделал. Может так годится или легче поправить чем с нуля...
У меня не с нуля.

 Давайте начнём с этого:
Код
find /mnt/.$sfsname -type f | while read F; do [ -x $F ] && ldd $F 2>/dev/null | grep 'not found'; done
и будем наращивать.
« Последнее редактирование: 26 Ноябрь 2013, 08:05:55 от DdShurick »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64