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

Автор Тема: Рекомендации по созданию портируемых модулей  (Прочитано 9085 раз)

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

Оффлайн dim-kut

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 1021
  • Репутация: +41/-0
Всем привет !
Какие люди!!! Надолго к нам?
Я тоже рад вас всех услышать! С работой сейчас полегче стало, появилась возможность какими-то своими проектами заниматься. Посмотрим, надолго-ли. Боюсь сглазить  :) Система заметно изменилась, это здорово. Понемногу осваиваю. Забыл уже многое.

Тогда объясните мне концептуально - вот я пользователь, которому не хватает некоторых программ. Мне их делать обычными или портируемыми модулями? Наверное лучше портируемыми, легче перетаскивать на другую систему, да и вообще понадежнее IMHO. Хотя зависимости никто не отменял, меньше шанс что модули мешать друг другу будут, да? Модули от пользователей - это все портируемые, да?
Engineering is the art of making what you want from things you can get.

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Концептуально в дистре , в котором заявлена совместимость с репой на уровне ПМ - в модулях софта не должно быть ничего (хотя бы либ) отличного от этой репы. Иначе можно сломать зависимости дистра
Поэтому надо стараться портировать все модули. Это даст упрощение использования их в других дистрах (другой версии этого же дистра). Ничего нового в этом подходе нет. Все браузеры так делают и еще куча дистронезависимого софта

Проблема с модулями с /usr/lib/подпапка - красивого решения (только перекомпиляция в /opt) я не нашел
Если всетаки необходимо юзать левый непортируемый модуль - надо грузить его в нижний слой /base/000-*pfs
Тогда максимум - сломается этот модуль, а не вся система

Если юзеру нужен софт которого нет модулем - самый простой путь - pacman2pfs.  Заранее подключив либы которые уже есть модулем (типа qt) и потом прописав их в зависимость (start.sh)
Для более продвинутых - AUR или по своим рецептам компилить
« Последнее редактирование: 21 Январь 2016, 11:46:22 от sfs »

Оффлайн dim-kut

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 1021
  • Репутация: +41/-0
Зависимости модуля от модуля допускаются ? Мне потребовались библиотеки из модуля 10-mesa-libgl-10.6.4-1-i686.pfs Мне его включать в свой модуль ?
Engineering is the art of making what you want from things you can get.

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Зависимости модуля от модуля допускаются ?
Да. Но злоупотреблять этим и мельчить  не надо. В виде зависимых модулей делать только часто используемые
Мне потребовались библиотеки из модуля 10-mesa-libgl-10.6.4-1-i686.pfs Мне его включать в свой модуль ?
Нет. В своем прописать в /start.sh
Код
sfs-get-dep mesa-libgl

У меня уже "глаз замылен". Могу я Вас попросить доработать эту инструкцию до публикации в вики?

Оффлайн Pro

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
  • Автор темы
я предлагаю в портируемые модули дописывать еще и что-то вроде PATH=/opt/$p/bin;$PATH чтобы в /usr/bin ложить только основной бинарник, а дополнительные бинарники которые могут быть нужны программе, или библиотекам искались первоначально из /opt
Это упростит портирование как мне кажется.
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
PATH - теоретически хорошая идея, но практически я ни разу не столкнулся с тем, чтобы главному бинарнику нужны были дополнительные, которые получится положить в /opt

Оффлайн Pro

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
  • Автор темы
если этот "бинарник" будет типа скриптом на питоне или на баше, то столкнуться легко.
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Давай сначала столкнемся с этой ситуацией, а тогда и подумаем как лучше. Раньше то как и зачем
Ну или приводи пример. Может я что-то не догоняю...

Оффлайн Pro

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
  • Автор темы
спасибо все что я хотел сказать, я сказал.
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн dim-kut

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 1021
  • Репутация: +41/-0
У меня уже "глаз замылен". Могу я Вас попросить доработать эту инструкцию до публикации в вики?
Да, заметно, вы слишком "в теме". А я наоборот слишком отстал и не сразу догоняю. Как разберусь, я попробую доработать инструкцию. А новичку въехать еще сложнее ...
Engineering is the art of making what you want from things you can get.

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Свежий взгляд очень ценен. Готов ответить на все вопросы

Оффлайн Pro

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
  • Автор темы
предлагаю расширить функционал mkport в плане определения потребности в библиотеках
алгоритм:
1. Получить список библиотек имеющихся  base модулях (хотя тут сразу проблема с mesa получится)
2. для библиотек портируемого модуля сделать ldd и сравнить с base библиотеками, чего не найдется - выдать на экран, но при этом из вывода убрать библиотеки которые уже есть в портируемом модуле (т.е. которые в /opt/имя_программы/lib)
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн Pro

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
  • Автор темы
если pacman может искать по содержимому пакетов, то вывести список пакетов в которых найдены нужные библиотеки
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
расширить функционал mkport
Для поиска зависимостей использую скрипт dep-find. Надо ли что-то еще... типа совмещения его с pkgfile

Оффлайн Pro

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
  • Автор темы
тут суть в том чтобы зависимости найти исключив библиотеки которые в портируемом модуле.
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.