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

Автор Тема: pfs-get - консольный менеджер модулей.pfs .sfs  (Прочитано 34583 раз)

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

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: pfs-get - консольный менеджер модулей.pfs .sfs
« Ответ #180 : 15 Май 2020, 11:41:42 »
Сделал подпись, проверку мд5 и новый формат реполиста. Все изменения в гит.
Генератор реполиста будет встроен в pfsget. Все равно этот код нужен для того чтоб указывать папки в качестве репы.
pfsget --mkrepolist папка
Сделает папка/_REPOLIST.gz и в случае если настроен gpg2 еще и папка/_REPOLIST.gz.sig
При загрузке проверяется подпись (публичные ключи должны лежать в /etc/pfsget/  с расширением .gpg)

Нужно решить с форматом имен модулей. Сейчас там просто заготовка типа:

for a in $(find $reponame -maxdepth 2 -type f -name *.$EXT) ; do
      DATE='' ; SIZE='' ; VER='' ; REV='' ; MD5=''
      DATE=$(ls -la $a --time-style=+%F |cut -d " " -f6)
      SIZE=$(du -h $a |cut -f1)
      VER=
      REV=
      MD5=$(md5sum $a |awk '{print $1}')
      echo "$a VER=$VER REV=$REV DATE=$DATE SIZE=$SIZE MD5=$MD5 " >> $REPOLIST
done
Нужно чтоб парсер заполнил все переменные если смог, и присвоил пустое значение (или 0) если не смог. То есть по задумке работать будет с любыми именами, но корректно сортировать по версии, ревизии только для "правильного" формата, который и предлагаю обсудить.
 

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33996
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: pfs-get - консольный менеджер модулей.pfs .sfs
« Ответ #181 : 15 Май 2020, 12:39:51 »
"правильного" формата, который и предлагаю обсудить.
вики
Модуль начинается с заглавной буквы: составной модуль (можно разобрать pfsextract) - не прижилось

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8636
  • Репутация: +187/-2
  • Старый чайник
Re: pfs-get - консольный менеджер модулей.pfs .sfs
« Ответ #182 : 15 Май 2020, 12:46:34 »
не прижилось
Хреново :(
Моноблок 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

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33996
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: pfs-get - консольный менеджер модулей.pfs .sfs
« Ответ #183 : 15 Май 2020, 13:12:13 »

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: pfs-get - консольный менеджер модулей.pfs .sfs
« Ответ #184 : 22 Май 2020, 12:40:21 »
Раз вы так держитесь за свои имена модулей, пусть у каждого будут свои. Магосовские тоже, кстати, не удобные по тому и думал предложить единый формат.
В итоге вынес определение версии и ревизии в отдельные функции, которые получают имя модуля и возвращают версию (по умолчанию просто возвращают нули). Эти функции нужно переопределять в /etc/pfs.cfg под себя, ну или не трогать если сортировка только по дате устраивает.
Код
getVER() {
echo 00.00
}
getREV() {
echo 00


З.Ы. На счет ревизии у вас тоже немного не удобно, допустим есть модуль bla-bla-1.1-dd00.pfs, Sfs его правит и меняет ревизию на bla-bla-1.1-sf01.pfs. Только сортировка будет не по цифрам 00/01, а по буквам dd/sf что не правильно. Надо было делать 00dd, 01sf тогда бы сортировало как надо. 

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: pfs-get - консольный менеджер модулей.pfs .sfs
« Ответ #185 : 22 Май 2020, 12:54:17 »
Для подписи реполиста нужен gpg2. Ключи делаются так:
gpg2 --generate-key
После надо ответить на вопросы. В случае если установлен gpg2 и сгененрированы ключи у пользователя под которым делаете REPOLIST.
Этот самый реполист будет подписан автоматически. Если нет, то без подписи.
Для того чтоб проверялась подпись, у юзверей должен быть Ваш публичный ключ pubring.gpg. Ключ ищите в ~/.gnupg/  после генерации ключей. Его кладем в /etc/pfsget/ всем пользователям.

P.S. Sfs пересоберите пожалуйста наш тестовый реполист в новом формате, чтоб нормально проверить. Желательно подписанный, ключ просто здесь выложите. Я предполагаю работу с репой так. Локальная папка с модулями, запускаете pfsget --mkrepolist /путь/папка, создается новый реполист и  подпись. После синкаете всю папку на сервер. Теоретически должно сработать и в смонтированнной RW с сервера папке, тогда синкать не нужно.
« Последнее редактирование: 22 Май 2020, 13:08:42 от betcher »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33996
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: pfs-get - консольный менеджер модулей.pfs .sfs
« Ответ #186 : 27 Май 2020, 11:55:30 »
gpg2 --generate-key
# gpg2 --generate-key
gpg: недопустимый параметр "--generate-key"
пересоберите пожалуйста наш тестовый реполист
_REPOLIST.gz

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33996
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: pfs-get - консольный менеджер модулей.pfs .sfs
« Ответ #187 : 27 Май 2020, 16:07:42 »
Ок, спасибо. Посмотрю что с gpg, видимо с версиями что-то.
# gpg --gen-key
gpg (GnuPG) 1.4.20;

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: pfs-get - консольный менеджер модулей.pfs .sfs
« Ответ #188 : 28 Май 2020, 05:06:53 »
 $ gpg --version
gpg (GnuPG) 1.4.23

 $ gpg2 --version
gpg (GnuPG) 2.2.17-unknown
libgcrypt 1.8.5
NOTE: THIS IS A DEVELOPMENT VERSION!

Переписать на gpg?

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: pfs-get - консольный менеджер модулей.pfs .sfs
« Ответ #189 : 18 Сентябрь 2020, 11:44:41 »
Прикидываю как добавить режим обновления модуля в pfsget. И снова уперся в названия. К примеру в репе находится несколько файрфоксов
firefox-ru
firefox-lite
firefox-77
И так далее. Как при достаточно вольном именовании модулей не напороться на ситуацию, когда при обновлении firefox-77 будет заменен на firefox-ru только потому, что тот свежее. Как у вас сейчас работает?

Есть альтернативная мысль. А что если хранить нужные значения (имя, версия пакета, версия модуля, ревизия и проч.) не в названии модуля, а внутри модуля. Логичным кажется что-то вроде pfs.spec, но не понятно как быть с контейнерами. Там может оказаться много спеков. Соответственно при обновлении репы данные читаются из спеков и записываются в _REPOLIST. Конечно все это касается только модулей которые распространяются через репозитории. То есть спек не обязателен.

Хранение и получение этой информации - реальная проблема, давайте уже придем к общему знаменателю. Так чтобы работало то что есть сейчас и можно было при этом развивать функционал pfsget.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33996
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: pfs-get - консольный менеджер модулей.pfs .sfs
« Ответ #190 : 18 Сентябрь 2020, 12:33:50 »
Как у вас сейчас работает?
Там хитрый (не мой) код, который разбирает только названия
что если хранить нужные значения (имя, версия пакета, версия модуля, ревизия и проч.) не в названии модуля,
т.к. можно быстро его пимонтировать и посмотреть эту инфу - может быть
Но все равно надо будет мутитьт какие-то индексные файлы, чтобы каждый раз не перечитывать

Тут надо начать с начала проблемы
На выходе нужен легкий гуй. Консольный - неудобно подключать-отключать
Если по этой теме не договориться - не будет желания делать что-то промежуточное по pfsget

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: pfs-get - консольный менеджер модулей.pfs .sfs
« Ответ #191 : 18 Сентябрь 2020, 12:47:14 »
т.к. можно быстро его пимонтировать и посмотреть эту инфу - может быть
Но все равно надо будет мутить какие-то индексные файлы, чтобы каждый раз не перечитывать
Подключается и отключается модуль по имени файла. Зачем во время загрузки и подключения/отключения модулей остальная инфа? Единственное место где хранится информация помимо самих модулей это _REPOLIST. Зачем индексы, когда pfsinfo покажет нужное в любой момент.

На выходе нужен легкий гуй
Гуй это вторая часть задачи и не обязательно общая.


Консольный - неудобно подключать-отключать
Не соглашусь, дело привычки.
pfsget devx
что тут сложного?

Или даже можно так
pfsget git
а он предложит установить  DEVX

И из консольного скрипта сделать гуй можно, а вот наоборот... :)

Я взялся за pfsget, потому, что это следующий шаг для того чтоб скрипты были универсальными. Ни то что сейчас есть у вас ни наше даже близко не подходит.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33996
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: pfs-get - консольный менеджер модулей.pfs .sfs
« Ответ #192 : 18 Сентябрь 2020, 12:57:01 »
Гуй это вторая часть задачи и не обязательно общая.
Но у меня он есть. Не супер, но рабочий и переписывать его без существенного улучшения функционала не хочется
дело привычки.
pfsget devx
что тут сложного?
Тут ничего, а удобно ли отключить 5 модулей не подряд? см скрин
Будете руками точные названия набивать?
И из консольного скрипта сделать гуй можно, а вот наоборот... :)
Да - в идеале и то и другое, но без гуя в итоге мне не интересно
это следующий шаг для того чтоб скрипты были универсальными
Не понял -какие скрипты имеешь ввиду

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: pfs-get - консольный менеджер модулей.pfs .sfs
« Ответ #193 : 18 Сентябрь 2020, 13:06:34 »
Тут ничего, а удобно ли отключить 5 модулей не подряд?
При чем тут pfsget?
Если камень в сторону pfsunload, то он понимает не только имена но и номера слоев.
pfsunload 01 - отключит последний подключенный, например.
Кстати, можно в bash completion добавить pfs-utils. Хорошая мысля, надо подумать .

Не понял -какие скрипты имеешь ввиду
pfs-utils конечно.

но без гуя в итоге мне не интересно
Потому и делаю так чтоб не ломалось то что есть.

« Последнее редактирование: 18 Сентябрь 2020, 13:12:00 от betcher »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33996
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: pfs-get - консольный менеджер модулей.pfs .sfs
« Ответ #194 : 18 Сентябрь 2020, 13:12:59 »
pfsunload 01 - отключит последний подключенный например.
Согласитесь, что все равно гуй тут удобнее
pfs-utils конечно.
Ну так сейчас - норм везде
А pfs-get -у могут понадобиться только спек файлы внутри модулей или в репе
Т.е. можно это использовать, а можно нет

Вообще , конечно, в идеале бы про гуй договориться...
Я ничем кроме sh awk gtkdialog yad не владею
Тяжелых решений не хотелось бы