Sfs-get умеет консольно?Нет. Но часть его модулей консольные
Для консоли нужно типа ncurses.Для консоли надо что-то типа ключей :)
"локальные репы" подразумеваются?Да пока просто идеи набрасываю.
Давайте попробуем порассуждать как это могло бы выглядеть со стороны пользователяТогда переписать на dialog
должен быть конфиг со списком зеркал.Есть : /etc/sfs-get
где-то должны храниться уже полученные списки файлов на зеркалах./tmp/mod_update
ftp, http, rsync (потому что есть у яндекса) и webdav, чтоб подключать свои репы с личных файлопомоек.Почти все есть, но надо будет парсеры подпиливать
Чет типа такого.Все реализовано, но т.к. гуй - по принципу - задал что искать - нашлсь - выбрал что надо и как подключать (это отдельный гуй)
# losetup -a
/dev/loop0: 0 /mnt/sda1/BB_64/base/Richy64F-base.xzm
/dev/loop1: 0 /mnt/sda1/BB_64/base/Richy64F-save.xzm
/dev/loop2: 0 /mnt/sda1/BB_64/base/kernel-4.14.77-pf10.xzm
/dev/loop3: 0 /mnt/sda1/BB_64/modules/Office.xzm
/dev/loop4: 0 /mnt/sda1/BB_64/modules/python-2.7.16.xzm
/dev/loop5: 0 /mnt/sda1/BB_64/modules/gtk+3-3.24.14_64.xzm
/dev/loop6: 0 /mnt/sda1/BB_64/modules/isomaster-1.3.14.xzm
/dev/loop7: 0 /mnt/sda1/BB_64/modules/IceWM-1.6.2.xzm
/dev/loop8: 0 /mnt/sda1/BB_64/modules/Bluez-5.50.xzm
/dev/loop9: 0 /mnt/sda1/BB_64/modules/rox-filer-2.11p.xzm
/dev/loop10: 0 /mnt/sda1/BB_64/modules/gpicview-0.2.5.xzm
/dev/loop11: 0 /mnt/sda1/BB_64/modules/chromium-80.0.3987.132_64.xzm
/dev/loop12: 0 /mnt/sda1/BB_64/modules/xpdf-3.04_64.xzm
/dev/loop13: 0 /mnt/sda1/BB_64/modules/jwm-2.4.0.xzm
/dev/loop14: 0 /mnt/sda1/BB_64/modules/mplayer-1.4-7.2.0.xzm
/dev/loop15: 0 /mnt/sda1/BB_64/modules/dunst-1.4.1.xzm
/dev/loop16: 0 /mnt/sda1/BB_64/modules/seamonkey-gtk2-2.49.3.xzm
/dev/loop17: 0 /mnt/sda1/BB_64/modules/flashplugin-32.0.0.330.xzm
/dev/loop18: 0 /mnt/sda1/BB_64/modules/cdrtools-3.01.xzm
Посмотреть список подключенных модулей с путями:да. так и определяется
Тогда переписать на dialog
Только смысл? Это будет менее удобно чем в Х
В зависимостях только yad и gtkdialog (есть gtk2 и 3)
Давайте тогда уж полностью причешем и сделаем 2 версии - гуй и консоль
- есть набор модулей ( например для к.-либо ДЕ).Это нормальная идея. У ПМ это называется мета пакеты, то есть пакет у которого нет ничего кроме списка зависимостей. Надо подумать в каком виде можно интегрировать сюда.
- этот набор - "просто как изначальный список"( и он известен разработчику)
Переписывать на dialog точно нет смыслаДумаю - да
Если делать то поновой чисто консольную утилиту.Кому она может быть нужна при наличии гуй аналога. Здесь как раз тот случай , когда надо выбирать и т.п
куски кода из sfs-get там где не прибито гвоздями к puppy, pacman, sudo, диалогам и проч.Многие куски уже отдельными чисто консольными утилитами
Сейчас читается тяжело.sfs-get - да. Код исторический . Латаный перелатаный
подумать в каком виде можно интегрировать сюдаУ меня - пустой модуль , в котором в /start.sh : sfs-get-dep первый модуль, второй ...
У меня - пустой модуль , в котором в /start.sh : sfs-get-dep первый модуль, второй ...Можно гораздо проще. Научить sfs-get читать списки и складывать их в репы. lxde.lst а в нем список из той же репы.
Не думаю , что это надо.
В основном в зависимостях ТК, который уже подключен вместе с ДЕ
И не думаю что юзер прямо каждые 5 минут подключает- отключает
Кому она может быть нужна при наличии гуй аналога.Я бы использовал исключительно консольно. Не из красноглазой вредности, а из-за того что в гуе нихрена не понятно что происходит, особенно когда что-то идет не так.
И главное - зависимости.Тут надо понять как это впринципе должно быть устроено. Что делать, например, если при загрузке не достатет зависимости? Не грузить?
C ПМ и пупи нет никакой связи. Без sudo не подключитьПро пакман и про пуппи есть в коде, а sudo в консольную утилиту пихать не нужно. Используйте снаружи, либо su. Зачем ограничивать?
Научить sfs-get читать списки и складывать их в репы. lxde.lst а в нем список из той же репы.Главное не изобрести сложный и ненужный функционал
Смотрел конфиги, не понял что для чего используется. Поясните пожалуйста.Вдруг не заметил :)
..../links/* там списки url до конкретных файлов, тут поиск идет или всеже в самих репах?
..../list/* как эти файлы использются и чем обусловлен такой странный формат?
.../pra-links.txt по виду как в .../links/* он к ним добавляется или как?
.../www.list похоже на список реп, Почему не указан протокол, или для ftp будет ftp.list?
Где указаны локальные репы?
Какова полная последовательность поиска?
Где пути куда сохранять?
Репы сканируются или в них есть готовый файл со списком содержимого репы?
Я пока пользы от консольного варианта вообще не понялЯ тоже пока не уверен. Посмотрим.
..../list/* как эти файлы использются и чем обусловлен такой странный формат?Однако понял :) Это чтоб
browser браузер ie opera опера
_browser midory firefox palemoon
fm ФМ fm файловый
_fm pcmanfm-qt krusader golphin
FIND=$(grep -w "$1" ./alias.cfg | awk '{print $1'})
LIST=$(grep _$FIND ./alias.cfg |sed 's/^_[^\ ]*\ //')
echo "Похоже вы ищете: $FIND"
echo "Попробуйте: $LIST"
чтобДа. Это все нескольколетней давности
sfs-get браузер
и установится firefox например, так?
Пример:Тот кто с этим не разберется точно в консоль не полезет
./pfsget operaНе разберется с этим? У вас сборки для дебилов? :))
Похоже вы ищете: browser
Попробуйте: midory firefox palemoon
У вас сборки для дебилов?Мы называем "новички". Их много
- есть набор модулей ( например для к.-либо ДЕ).-- тогда получается немного промахнулся темой с размещением сообщения ( может и не зря).
- этот набор - "просто как изначальный список"( и он известен разработчику) - выглядит возможно проще, чем последующая обработка "к.-либо конструкций"( в том числе"загрузочной конструкции")...
проверяем в выхлопе aufs-n, если есть nano выводим предупреждение с вопросом: "продолжить?"Тут скорее ошибка : модуль уже подключен
Если нет списка или не найдено nano в списке получаем новый список из репы и ищем там.Тут лучше через вопрос
Поиск идёт до первого найденногоНадо все + выбор из них.
что делать с модулем дальше зависит от ключей.http://wiki.puppyrus.org/puppyrus/pr218/pfs3#open_pfs
Нормально?C учетом замечаний - да
Гуй вижу просто как окошко с вопросами,Можно и ntf (http://wiki.puppyrus.org/soft/notify#%D0%B8%D1%82%D0%BE%D0%B3ntf) , но вряд ли будет удобно
Можно опционально запускать с xterm -e pfsget... Тогда будет видно весь процесс.У меня для этого есть гуй скрипт wt - выполняет скрипт и выводит результат
Тут скорее ошибка : модуль уже подключенМожет версия новее в репах.
Тут лучше через вопросЭто стандартное поведение urpmi, если не нашёл обновлять источники.
Если репа только что обновлена - перечитывать смысла нет
Надо все + выбор из них.Вариант с первым найденным быстрее. Если смотреть на пакетные менеджеры, то обычно ставит без вопросов самый свежий. Надо подумать, возможно не один вариант оставить.
а сразу список?Как в Slackware
У меня сейчас так и сделано :В списке реп не файлы, а папки. У списков просто постоянное имя?
А его обновление - отдельная задача и тут опять под каждый ресурс свой парсерНе пойму суть проблемы. Что пасрсить надо?
Как в Slackware
Предлагаю с полными путями сразу писать.Смысл? $REPO должна уже быть в сборке. Остаётся добавить имя модуля.
В списке реп не файлы, а папкиИх читает mod-up , парсит папки и создает /tmp/mod_update/repolist.txt - c которым далее и работает sfs-get
Что пасрсить надо?надо из http://mirror.yandex.ru/puppyrus/roll/1912/ сделать /tmp/mod_update/repolist.txt
Их читает mod-up , парсит папки и создает /tmp/mod_update/repolist.txt - c которым далее и работает sfs-getЗначит вы меня совсем не поняли. Этот список должен лежать в репе. Сразу. По сути список и есть репа, а сами модули могут лежать где угодно, хоть на этом сервере, хоть на другом, хоть вообще дома если с битторентом заморочиться. Это, и Вам DdShuric ответ на:
Смысл? $REPO должна уже быть в сборке. Остаётся добавить имя модуля.
надо из http://mirror.yandex.ru/puppyrus/roll/1912/ сделать /tmp/mod_update/repolist.txt
# curl -l ftp://mirror.yandex.ru/puppyrus/roll/1912/
001-a-1912-sf04.pfs
001-a-1912-sf05.pfs
030-gtk3-1912-sf06.pfs
030-gtk3-1912-sf07.pfs
040-de-lxde-gtk3-1912-sf04.pfs
045-tint2-graph-gtk3-16.7-3-1912-sf01.pfs
045-vala-panel-gtk3-0.4.91.r4.gf300f22-1912-sf01.pfs
070-prar-1912-sf02.pfs
089-upd-1912-sf11.pfs
089-upd-1912-sf12.pfs
089-upd-1912-sf15.pfs
089-upd-1912-sf16.pfs
DEVX-prar-1912-sf02.pfs
DEVX-prar-1912-sf05.pfs
ffmpeg-light-4.0-1912-sf01.pfs
mesa-19.2.4-1-1912-sf04.pfs
pkg-prar-1912-sf01.pfs
polkit-0.116-3-1912-sf01.pfs
pulseaudio-13.0-1912-sf01.pfs
python-3.8.0-1912-sf01.pfs
uird-r542_64-sf01.pfs
vlc-light-qt5-3.0.1-d10-sf01.pfs
curl -l ftp://mirror.yandex.ru/puppyrus/roll/1912/С фтп на яндексе проблема. Надо http
Заливать в репу готовый список модулей - хорошая идея. Тогда ничего парсить не надоВот. Теперь похоже мы на одной волне :)
Создать его проще , чем потом парсить html. Надо сразу с датой и размером
http://mirror.yandex.ru/puppyrus/2a-aarch64/2a/2a2002/pfs/palemoon-p-28.8.4_a-sf01.pfs 14-Mar-06:02 48.41M
И получаем отвязку от места хранения
С фтп на яндексе проблема. Надо httpПо тому видимо и curlftpfs с ним криво работает.
На ум приходит альтернативный путь. Тот же модуль на другом сервере или там же но с другим протоколом.Если только вторым этапом
Если только вторым этапомНаоборот. Нужно продумать сразу иначе потом будут костыли.
Не надо сходу усложнять
Самый свежий надо определять не по дате, а по версииМы же себе формат изобретаем. Нужно чтоб удобно парсился. Давайте версию вперед писать :)
Давайте версию вперед писатьЕсли Вы уже полностью переписываете - делайте как Вам удобнее
Ни в каких сриптах у вас нет такого кода?splitname в mod-up
splitname(){
local ver sver
ver=$(echo "$1" \
|sed 's/i[3-6]86\|x86[_-]64\|x64\|[Xx][Ff][_-]\?86\|[Qq][Tt]4/masq/g
s/_64/_masq/g' \
|grep -oE '[_-]([A-Za-z]{0,2}[0-9][a-z0-9]*[_.+-])+')
local re1='\(.*\)' re2='\1' n=1 partver
for partver in $ver ; do
n=$(($n+1))
partver=${partver%?}
partver=${partver#?}
re1="${re1}$partver\\(.*\\)"
re2="${re2}.*\\$n"
sver="${sver}${sver:+-}$partver"
done
declare -g $2=$(echo "$1" |sed 's/'$re1'\.pfs/'$re2'\\.pfs/')
declare -g $3=$sver
}
Версия всегда три чмсла через точку?нет.
google-chrome-gtk3-66.0.3359.139-180101-sf01.pfs
xf86-video-intel-2.99.917-1801-sf01.pfs
lxqt-archiver-git-r6-180101-sf02.pfs
vipole-180419-180101-sf01.pfs
viber-7.0.0.1035-1-180101-sf01.pfs
teamviewer-14.1.3399-1801-sf02.pfs
skypeforlinux-gtk3-8.36.76.38-1801-sf01.pfs
mplayer-light-vdpau-38139-1801-sf01.pfs
Стандарты все же присутствуют,Я ж не говорю что их нет. Мне нужен код чтоб отловить версию. Если версии нет или не распарсилось то буду писать в это поле 0, получится что это самый старый пакет :)
Мне нужен код чтоб отловить версию.Не знаю в чем заключается идея и задача этой темы, но желание отловить версию пакета и выдать пользователю самую новую, положительно. Чтобы юзер не пребывал в муках выбора. :)
Проблема не в регекспах, я логики не понимаюГлавная задача - обновлятор
000-kernel-5.4.12-1-MANJARO.pfsЯдра не автообновляются. Там отдельная история с привязкой к инитрд (не обязательно). Короче - ядрами не надо заморачиваться
001-a-1912-sf05.pfsПоявится 001-a-1912-sf06.pfs и автообновится
че делать?Передрать у ander
Может уже по датеМожно и так
Передрать у anderТам тоже не 100%
Пожалуй проще переименовать все модули по стандарту, чем так мучиться.Если серьёзно обсуждать то пожалуй вроде такого:
префиксСколько можно говорить, что не нужен префикс. База - псевдомонолит, в неё входит не так уж много модулей. В modules и optional тем более префикс не нужен.
Если pfsget планируем в pfs-utils, то мы не можен навязывать правила для именования модулей.Хорошо бы. Но тогда получится только :
Для гуя может быть такая комбинация:Простые диалоги легко сделать на моем ntf. В том числе выбор из списка
создавать скриптом после каждого изменения репыБез проблем - какой формат?
нужны более четкие стандарты для именованияГотов переименовывать свою репу только по итогу получения результата, лучше чем у меня
Без проблем - какой формат?https://github.com/pfs-utils/pfs-utils-cli/blob/pfsget/pfsget/httprepolist.lst
Простые диалоги легко сделать на моем ntf. В том числе выбор из спискаКонечно, сделать можно как угодно.
Пока так и не понял - что будет на выходеНа выходе консольная качалка модулей из реп, Без привязки к прар, гуям и проч. На счет зависимостей надо думать, пока не знаю как это может выглядеть.
Готов переименовывать свою репу только по итогу получения результата, лучше чем у меняКак минимум имена кторые легко парсить. Только формат заренее продумать.
https://github.com/pfs-utils/pfs-utils-cli/blob/pfsget/pfsget/httprepolist.lstНадо еще размер
На счет зависимостей надо думать, пока не знаю как это может выглядеть.Как список без версии
А размер?Забыл про него. Добавлю, добавлять не сложно.
Как список без версииЯ не об этом. Список зависимосте же внутри модуля. Пока не качнешь не узнаешь.
Забыл про него. Добавлю, добавлять не сложно.Добавил. Там сколько колонок проименуете столько и будет работать. Колонки можно не указывать в списке начиная с хвоста, на работоспособность не повлияет.
Список зависимосте же внутри модуля. Пока не качнешь не узнаешь.Можно формировать при обновлении репы
ДобавилНе вижу изменения https://github.com/pfs-utils/pfs-utils-cli/blob/pfsget/pfsget/httprepolist.lst
Не вижу измененияВ код добавил.
Чтобы не ковырять код - наверное есть конвертер ls -l в httprepolist.lstИ его удобнее _httprepolist.lst назвать - чтобы в начале был
Можно формировать при обновлении репыДа. Это вариант. Надо подумать. Возможно такой файл удобнее будет делать для каждого модуля, В нем описание, зависимости, еще что-то. Но чтоб без этого файла тоже работало, для простых модулей.
Например отдельным файлом (так же - 1 файл в корне репы)
имя_модуля.pfs завис1 завис2 ...
И его удобнее _httprepolist.lst назвать - чтобы в начале былНазвания чисто для меня сделаны. _REPOLIST например можно.
И http - убрать. Может и атп быть
_REPOLIST например можно.ок
Чтобы не ковырять код - наверное есть конвертер ls -l в httprepolist.lstЕсть код или самому писать?
Есть код или самому писать?Кода нет. Говорю же там жесть с именами. Заменял sid -i по списку по частям. Пути добавил, затем одинаковую дату, версию 0 и sf01. Остальное руками.
размер - в какое по счету поле?Последнее. 2,3,4 участвуют в сортировке 5 и далее уже нет.
путь/файлмноговато файлов будет. лучше в 1 : 1 модуль - 1 строка
многовато файлов будет. лучше в 1 : 1 модуль - 1 строкаА описание?
А если строка то как ее искать. По имени модуля?да
ls -oh --time-style=+%Y-%m-%d "$d" |awk '{print "'$w'/'$d'/"$6" "$5" 0 sf01 "$4}' >"$r"/"$d"/_REPOLIST
_REPOLIST - норм?Вместо версии везде 0? А ревизия sf01?
А если строка то как ее искать. По имени модуля?Все же с отдельным файлом будет удобнее. Один файл на несколько модулей. А там версия сменилась и все пиши новую строку. И вообще у вас же явно не каждый модуль будет зависимости иметь. А штук 10 файлов можно и в отдельную папочку в той же репе сложить.
да
Вместо версии везде 0? А ревизия sf01?Потом доделаем, если приживется
Все же с отдельным файлом будет удобнее. Один файл на несколько модулей. А там версия сменилась и все пиши новую строкуДумал - эта инфа в модуле и извлекается оттуда при пересоздании
Потом доделаем, если приживетсяОк, так можно. Или мой взять и дописать в него размеры.
скачивать модуль и проверять звисимости в самом модулеУ меня так сейчас и сделано. После подключения предлагает подключить зависимости
У меня так сейчас и сделано. После подключения предлагает подключить зависимостиДавайте так и сделаем тогда. Получаем список зависимостей. Грепаем их в ауфс-н и в папке куда скачиваются модули. Если не найден, то качаем. И так по кругу.
В каком из модулей в репах есть зависимости?https://mirror.yandex.ru/puppyrus/puppyrus-a64/pfs-portable/chromium-bin-gtk3-p-79.0.3945.130_64-sf01.pfs
..chromium-bin-gtk3-p-79.0.3945.130_64-sf01.pfs % cat start.sh
#!/bin/sh
[ "`uname -m`" = i686 ] && sfs-get-dep Gtk3 || sfs-get-dep 030-gtk3
#[ -f /usr/lib/*/libnss3.so ] ||
[ "`find /usr/ -maxdepth 2 -type f -name libnss3.so`" ] || sfs-get-dep nss-%
..ory/images/mesa-19.2.4-1-1912-sf04.pfs % cat start.sh
ntf -q "После горячего подключения mesa" "требуется перезагрузка Х-сервера
Перезагрузить?" && sfs-shutdown%
pfsinfo -s МОДУЛЬ |grep ^DependensesЭтот стандарт был продекларирован и на этом все кончилось. Поэтому я прикрутил свой костыль с зависимостями. Что "сделано красиво " никогда не говорил, но работает
А в mesa чисто информационный start.sh:да
Делайте через DependensesОк.
Делайте через DependensesГотово. Самое сложное сделать модуль с такими зависимостями. У нас этот момент вообще не продуман.
_REPOLIST.??
bash-4.4# mount -o remount,append:curlftpfs-0.9.2/ /
bash-4.4# mkdir /mnt/repo
bash-4.4# curlftpfs ftp://mirror.yandex.ru/puppyrus/ /mnt/repo
bash-4.4# find /mnt/repo ! -type d
В идеале чтоб модули которые у него в зависимостях тоже зависимости имели.ffmpeg от слаки
И пошло - поехалоПочитайте выше, там не просто список файлов.
ffmpeg от слакиНужен модуль, у которого есть зависимость, у которой тоже есть зависимость. Для тестов. Как здесь поможет ффмпег?
Как здесь поможет ффмпег?Как раз то, что вы хотели. Куча зависимостей, которые тянут свои зависимости.
_REPOLIST можно пожать gz._REPOLIST.gz (http://mirror.yandex.ru/puppyrus/puppyrus-a64/pfs-portable/_REPOLIST.gz)
curlftpfs ftp://mirror.yandex.ru/puppyrus/ /mnt/repoМонтировать плохо на уровне идеи
чтоб модули которые у него в зависимостях тоже зависимости имели.smplayer - mpv-light - ffmpeg
smplayer - mpv-light - ffmpegЛюбой пример, можно и этот, можно вообще фейковый, но нужно, чтоб зависимости отображались в Dependenses у pfsinfo.
нужно, чтоб зависимости отображались в Dependenses у pfsinfo.Что в какой файл прописать и в каком виде?
по зависимости на строку.достаточно маски или нужно полное название модуля .pfs ?
Пришлось собирать с --mklist, распаковывать добавлять файлВыложите фэйковые сюда - переложу в репу
достаточно маски или нужно полное название модуля .pfsМожно маску, но чтоб по ней лишнее не словилось. Поиск у меня везде с grep -w, то есть слово целиком.
Не понимаю, зачем в _REPOLIST писать полный путь? Вот этоПути могут быть разными. Лист может лежать на другом сервере или находиться в сборке, а в нем список файлов и у каждого свой путь.
зачем в _REPOLIST писать полный путь? Вот это "http://mirror.yandex.ru/puppyrus/puppyrus-a64" можно вынести "за скобки".Да. Если будут зеркала так удобнее. Переделать?
1.pfs (http://mirror.yandex.ru/puppyrus/puppyrus-a64/pfs-portable/1.pfs)Посмотрю с компа. Но имена не удачные, кмк. Как потом искать модули 2 и 3 в репе ;)
2.pfs (http://mirror.yandex.ru/puppyrus/puppyrus-a64/pfs-portable/2.pfs)
3.pfs (http://mirror.yandex.ru/puppyrus/puppyrus-a64/pfs-portable/3.pfs)
у каждого свой путьТолько начало пути - дальше одинаково
Да. Если будут зеркала так удобнее. Переделать?На счёт зеркал надо думать. Не учел.
имена не удачные, кмк. Как потом искать модули 2 и 3 в репеДумаю здесь маски неуместны. Искать ТОЛЬКО по полному совпадению всего названия
Думаю здесь маски неуместны. Искать ТОЛЬКО по полному совпадению всего названияТак надёжно, но не очень удобно. При обновлении версии модуля нужно будет пересобирать все модули у которых он в зависимостях.
Сложный вопросЗначит нужно, чтоб работало ffmpeg-[4-9].*
Разные версии , например ffmpeg подойдут не ко всем mpv
Поправился. Вот так.Не лишняя. Если убрать то мы лишимся возможности делать собственные списки и прописывать там модули с разных серверов.
mirror:// - лишняя деталь. В остальном то же
005-xorg-1.17.4-2_64-s03.pfs 2018-03-19 0 sf01 3,6MИмел ввиду , что в списки только названия модулей без путей
Оставить в _REPOLIST
Если убрать то мы лишимся возможности делать собственные списки и прописывать там модули с разных серверов.Это будет реже. У меня вообще не прижилось
Вот там и прописывать полные пути, а различать по http:// ftp:// в началеЕщё могут быть локальные файлы. Можно по идее наоборот их помечать как file://
Чем плохо?
помечать как file://Может file:
Как оставим?egrep '^http:|^ftp:|^file:'
При поиске ругался на gz - см .скринПопробуйте zcat _REPOLIST.
При поиске ругался на gz - см .скринМне кажется не прочитался _REPOLIST, а а firefox установился по ./local.lst
нашел и скачалКак то иначе выкладывать?
Попробуйте zcat _REPOLIST.работает
Проверьте в .../pfsget/pfsget_work_dir/lists второй список.есть
Как то иначе выкладывать?В таком виде вряд ли юзерам будет интересно
устанавливать локальные модулиВ смысле - подключать (к aufs ?) или распаковывать в корень (у нас , вроде это имелось всегда ввиду под установкой)
mkpfs ./папка --depends req1,req2,req3Т.е. просто прописывает перечисленные зависимости в конфиг?
устанавливать локальныеВ первую очередь это скачать зависимости. Остальное зависит от ключей. Работает так будто это модуль найденный в репе то есть.
А если модуль составной и в нем уже есть разные зависимости для каждого подмодуля?Пфсинфо вернет общий список. Между списками из разных модулей будет пробел, а не запятая. Но для гетпфс это не важно. Повторяющиеся зависимости тоже не помешают, решение качать или нет принимается всякий раз на основе поиска зависимости в ауфс-н и папке куда качаются модули.
Проверяю в прар. Не работают зависимости. Оказалось в pfsinfo то что раньше выводилось со строчкой Dependenses: , теперь почему-то Includes submodules: Что Вы имели ввиду этой правкой? Там же зависимости.Это я правил, до того, как Вы добавили Dependenses
В моих дистрах до сих пор в.3.Именно пфсинфо новый. Новей чем в магос :) Надо вернуть Dependenses,
Includes submodules:не соответствует смыслу. Там список именно из файлов pfs.depends.
browser браузер броузер ie opera опера мидори палемун интернет
_browser midory firefox palemoon
files-manager ФМ fm файлы files far
_files-manager pcmanfm-qt krusader dolphin
Здесь интереса тоже похоже нетЯ еще и на в4 не перешел. "Работает не трогай" . Отличий мало и они у меня не особо востребованы, а остальные вообще перестали делать модули
добавить возможность работы с репами без реполистовКак отвязаться от особенностей конкретных ftp \http?
добавить pfsget в основную гитрепу pfs-utils, если конечно никто не против.Я не против.
Как отвязаться от особенностей конкретных ftp \http?Думаю что никак. Для особенных есть _REPOLIST. Это как дополнительная возможность.
Чем _REPOLIST. не устраивает? Наоборот самое ценное из последнегоУстраивает. Это и должен быть правильный способ. Но хочу чтоб работало и с папкой тоже. Чтобы было :)
Генерится проще, чем потом парсить
из папки это дополнительная возможностьC фтп там просто - см. выше. Но на яндексе он сейчас глючит
Мы можем добавить к каждой строке в _REPOLIST контрольную сумму для модуля.Без проблем. Только при нынешнем качестве инета есть ли проблема целостности...
сам _REPOLIST подписать.gpg? Я для ПМ его специально выпиливал. Если делать - отключаемым, а в дистр отдельным модулем для параноиков
Только при нынешнем качестве инета есть ли проблема целостности...При записи на невполне здоровую флешку вполне возможны ошибки.
Мы можем добавить к каждой строке в _REPOLIST контрольную сумму для модуля.Наверное надо будет писать генератор для реполиста еще. И опять упремся в имена модулей :(
надо будет писать генератор для реполистада. выше вроде уже была заготовка без md5
упремся в имена модулейгенератору то какая разница. Ему же не искать по именам
генератору то какая разница. Ему же не искать по именамОделять версию от имени пакета. Все что и было. Контрольные суммы тут проблем не добавят.
сделать отдельным скриптом - каждый под свое подправитЯ думаю надо сделать так чтоб генератор реполиста пытался парсить по жестким правилам имена. Если имя удовлетворяет правилам, то заполняются все поля. Если нет то имя, размер и дата модификации. Так постепенно новые модули с "правильными именами" вытеснят старые. Только надо эти самые правла придумать еще.
в самом реполисте не по полям разделять, а например так:да
"правильного" формата, который и предлагаю обсудить.вики (http://wiki.puppyrus.org/puppyrus/pfs?s[#%D1%81%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D1%8B_%D0%BD%D0%B0%D0%B7%D0%B2%D0%B0%D0%BD%D0%B8%D0%B9_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D0%B5%D0%B9)
не прижилосьХреново :(
Хреново :(А смысл? http://wiki.puppyrus.org/puppyrus/pr218/pfs4#pfsextract сам с этим разберется
getVER() {
echo 00.00
}
getREV() {
echo 00
}
gpg2 --generate-key# gpg2 --generate-key
пересоберите пожалуйста наш тестовый реполист_REPOLIST.gz (http://mirror.yandex.ru/puppyrus/puppyrus-a64/pfs-portable/_REPOLIST.gz)
Ок, спасибо. Посмотрю что с gpg, видимо с версиями что-то.# gpg --gen-key
Как у вас сейчас работает?Там хитрый (не мой) код, который разбирает только названия
что если хранить нужные значения (имя, версия пакета, версия модуля, ревизия и проч.) не в названии модуля,т.к. можно быстро его пимонтировать и посмотреть эту инфу - может быть
т.к. можно быстро его пимонтировать и посмотреть эту инфу - может бытьПодключается и отключается модуль по имени файла. Зачем во время загрузки и подключения/отключения модулей остальная инфа? Единственное место где хранится информация помимо самих модулей это _REPOLIST. Зачем индексы, когда pfsinfo покажет нужное в любой момент.
Но все равно надо будет мутить какие-то индексные файлы, чтобы каждый раз не перечитывать
На выходе нужен легкий гуйГуй это вторая часть задачи и не обязательно общая.
Консольный - неудобно подключать-отключатьНе соглашусь, дело привычки.
Гуй это вторая часть задачи и не обязательно общая.Но у меня он есть. Не супер, но рабочий и переписывать его без существенного улучшения функционала не хочется
дело привычки.Тут ничего, а удобно ли отключить 5 модулей не подряд? см скрин
pfsget devx
что тут сложного?
И из консольного скрипта сделать гуй можно, а вот наоборот... :)Да - в идеале и то и другое, но без гуя в итоге мне не интересно
это следующий шаг для того чтоб скрипты были универсальнымиНе понял -какие скрипты имеешь ввиду
Тут ничего, а удобно ли отключить 5 модулей не подряд?При чем тут pfsget?
Не понял -какие скрипты имеешь ввидуpfs-utils конечно.
но без гуя в итоге мне не интересноПотому и делаю так чтоб не ломалось то что есть.
pfsunload 01 - отключит последний подключенный например.Согласитесь, что все равно гуй тут удобнее
pfs-utils конечно.Ну так сейчас - норм везде
Т.е. можно это использовать, а можно нетименно.
pfsget --help
/usr/local/bin/pfsget: строка 210: HLP: команда не найдена
мне нравится наличие " -l | --load",Это реализовано и в sfs-get, забыл. Но все равно я за консольный обеими руками.
"-u" | "--updAte-media" обновить реполистыА то так и в help попадет. :)
есть тестовая репа, чтобы проверить?http://mirror.yandex.ru/puppyrus/puppyrus-a64/pfs-portable/_REPOLIST.gz , но ,возможно старый
Есть альтернативная мысль. А что если хранить нужные значения (имя, версия пакета, версия модуля, ревизия и проч.) не в названии модуля, а внутри модуля. Логичным кажется что-то вроде pfs.spec, но не понятно как быть с контейнерами. Там может оказаться много спеков. Соответственно при обновлении репы данные читаются из спеков и записываются в _REPOLIST. Конечно все это касается только модулей которые распространяются через репозитории. То есть спек не обязателен.С контейнерами действительно беда. Там у нас получается вообще нет места куда складывать то, что относится именно к контейнеру, а не к его подмодулям. Есть идеи? Может вообще спецификацию pfs файла переделать? Я бы папки mount/install упразднил докучи.
С контейнерами действительно беда. Там у нас получается вообще нет места куда складывать то, что относится именно к контейнеру, а не к его подмодулям/etc/packages/mount/имя_контейнера.spec ?
Может вообще спецификацию pfs файла переделать?C потерей совместимости?
Я бы папки mount/install упразднил докучиУ себя не нашел
по обновлению isoКак-то сложно и так же не понятно, чем это лучше обычной фругал установки с обычным автообновлением...
Есть наработки и по полной сборке дистрибутива скриптами.Дистры старее прар2008 у меня достаточно рукодельные. В прар я постепенно иду к этому - все уже опакечено
Если выложить скрипты в гит получится совместная работа,не с кем, к сожалению
не перекидывание каждой минимальной правки через форум и sfs.Чем плохо автообновление модуля и как тут поможет гит...
С контейнерами действительно беда.Мне мыслится так: атомарный модуль - pfs.files, контейнер - pfs.list (список вложенных атомарных модулей). Тогда всё логически решается.
/etc/packages/mount/имя_контейнера.spec ?Возможно. Надо смотреть что произойдет при склейке контейнеров с такими спеками и еще мне не нравится, что у атомарного модуля со спеком для репы и у контейнера со спеком эти спеки будут в разных местах.
C потерей совместимости?Вероятно да.
У себя не нашел/etc/packages/mount/
Как-то сложно и так же не понятно, чем это лучше обычной фругал установки с обычным автообновлением...У вас есть автообновление сборки? Не знал. Думал только модули обновляются.
Чем плохо автообновление модуля и как тут поможет гит...Гит помогает не в автообновлениях, а во внесении изменений в код командой. Найдя небольшую ошибку можно просто исправить в гит и со следующим обновлением все получают исправленное. При этом не надо писать в форум, напоминать и т.д.
Мне мыслится так: атомарный модуль - pfs.files, контейнер - pfs.list (список вложенных атомарных модулей). Тогда всё логически решается.Логично решается пока уровень вложенности один, когда начинаешь склеивать контейнеры с контейерами, или контенеры с атомарными становится совсем не так гладко. Получается нужно хранить древообразную структуру в этом файле плюс все остальные файлы от подмодулей списки и т.д.
/etc/packages/mount/Вспомнил. Это установленные (т.е. распакованные). Поэтому у меня и нет
/etc/packages/install/
Зачем эти папки? Почему нельзя сразу в /etc/packages?
инсталленые модули помечать меткойчем это по итогку будет лучше? Искать неудобно
/etc/packages/имя_модуля/.installed
У вас есть автообновление сборки?автообновления исо нет. Есть только модулей для фругал и pacman -Suy для фул
чем это по итогку будет лучше? Искать неудобноДа эта инсталляция вообще побочный функционал, лучше будет тем что структура каталогов проще. На самом деле мешает не особо, заморачиваться такими "улучшениями" стоит только если будет реальный повод для изменения спецификации с нарушением совместимости. Короче пусть живет пока :)
пусть живет покаДа. Как-то маловато плюсов на выходе...
А то пока на всех ключиках, толькоПодумал, что PRAR расово неправильный "дистрибутив" и запустил pfsget в MagOS. Но тоже самое, висит без признаков жизни (скрин). Даже стало интересно, на чем таком тестируется pfsget. :)
########################################
и тишина.
MagOS_2016.64_20200822.iso в ВМ (i3wm)Не совсем так. Что вы ожидали от пфсгет в отсутствии репозитория :)
urpmi git
git clone https://github.com/pfs-utils/pfs-utils-cli
git checkout pfsget
cp pfsget /usr/local/bin/
pfsget
Чет сложненькоПотому, что это должно быть настроено в дистрибутиве. У нас этого пока нет. Когда будет тогда будет проще чем гуй :)
(git)-[pfsget] $ lsЭти все и так есть в PRAR, думал не надо. Уже был создан /etc/pfsget/mirror.lst, докинул на всякий случай и aliases.cfg.
addmemory mountfile pfsfind pfsload runpfsload-example umountfile
aufs-n pfs pfsfindlibs pfsrebuild runpfsunload-example
chroot2pfs pfsdepends pfsget pfsuninstall sync2layer
mkpfs pfsextract pfsinfo pfsunload syschanges
pfsget -s deadbeef
Вероятно вы искали этот модуль:
==> http://127.0.0.1:8000/deadbeef-static-p-0.7.2-3-sf02.pfs
VER=0
REV=0
DATE=2018-03-25
NAME=deadbeef-static-p-0.7.2-3-sf02.pfs
ALIASES=deadbeef-static-p-0.7.2-3-sf02.pfs
AUTHOR=unknown
SIZE=6,0M
MD5=8408e1f7b99ef39a112f0af856419207
Эти все и так естьЕсть отличия.
pfsget -s deadbeefВыглядит как и должно.
Вероятно вы искали этот модуль:
==> http://127.0.0.1:8000/deadbeef-static-p-0.7.2-3-sf02.pfs
VER=0
REV=0
DATE=2018-03-25
NAME=deadbeef-static-p-0.7.2-3-sf02.pfs
ALIASES=deadbeef-static-p-0.7.2-3-sf02.pfs
AUTHOR=unknown
SIZE=6,0M
MD5=8408e1f7b99ef39a112f0af856419207
$ pfsget -s celluloid
Вероятно вы искали этот модуль:
==> file://home/live/local/celluloid-int-gtk3-p-0.19_64-sf05.pfs
VER=0
REV=0
DATE=2020-08-10
NAME=celluloid-int-gtk3-p-0.19_64-sf05.pfs
ALIASES=celluloid-int-gtk3-p-0.19_64-sf05.pfs
AUTHOR=unknown
SIZE=6,7M
MD5=26b758341201dcccf2b6feed21f55e85
Для подписи реполиста нужен gpg2. Ключи делаются так:В Арче gpgme (https://www.archlinux.org/packages/core/x86_64/gpgme/)
gpg2 --generate-key
После надо ответить на вопросы. В случае если установлен gpg2 и сгененрированы ключи у пользователя под которым делаете REPOLIST.
Этот самый реполист будет подписан автоматически. Если нет, то без подписи.
Для того чтоб проверялась подпись, у юзверей должен быть Ваш публичный ключ pubring.gpg. Ключ ищите в ~/.gnupg/ после генерации ключей. Его кладем в /etc/pfsget/ всем пользователям.
~/.gnupg $ ls **
pubring.kbx~ pubring.kbx trustdb.gpg
openpgp-revocs.d:
CCB043B80643BD78F9E776E32C6B4453E994F8AD.rev
private-keys-v1.d:
215CE276EE382C9983324071198351C431AAE1FC.key
302A494A75FFCE1801F489855186BB1D2E2C9475.key
gpg --versionПосле этого решил, что правильнее gpg.
gpg (GnuPG) 1.4.23
$ gpg2 --version
gpg (GnuPG) 2.2.17-unknown
libgcrypt 1.8.5
NOTE: THIS IS A DEVELOPMENT VERSION!
Переписать на gpg?
#==> chroot2pfs -o firefox.xzm -c nspawn -f --script ./firefox.shТак конечно лучше, чтобы параметры были перед глазами. А то я когда составлял строку chroot2pfs для темы JWM (http://forum.puppyrus.org/index.php?topic=17646.msg172090#msg172090), поднимал документацию, ибо подзабыл все.
У нас же есть chroot2pfs и мы можем делать репозитории со скриптами для него.1. Скрипты будут дистрозависимыми, т.к. одинаковые пакеты в разных дитстрах называются по разному
я когда составлял строку chroot2pfs для темы JWM, поднимал документацию, ибо подзабыл все.Вот - уже местами сложно до необходимости чтения док. многие это будут делать?
Запустил pfsget opera.получил оперуВ любом линуксе? А как с зависимостями?
по лицензионным соображениямможно подробнее
Вот - уже местами сложно до необходимости чтения док. многие это будут делать?Есть множество вполне стандартных утилит, синтаксис которых я ищу в доках всякий раз как понадобится. Просто потому, что они не каждодневно используются. Iptables например. Да теже sed и awk, если задача чуть сложнее обычного лезу в доки.
В любом линуксе? А как с зависимостямиПричем здесь любой линукс? В конкретной репе, конкретного прар лежат конкретные модули. Я предлагаю расширить функционал и добавить в эту репу конкретные скрипты для установки конкретного софта для конкретно этого же прар.
можно подробнееОписывал выше уже. Пример скайп, вы не можете согласно его лицензии распространять скайп. Но вполне можете распространять скрипт, который качает официальный скайп и пакует в модуль.
расширить функционал и добавить в эту репу конкретные скрипты для установки конкретного софтаА не проще сделать мета пакет - пустой , только со списком модулей в зависимостях и pacman2pfs его
не проще сделать мета пакет - пустойС метапакетами задачи пересекаются лишь частично.
скайп, вы не можете согласно его лицензии распространять скайпhttps://pkgs.org/search/?q=skype
С метапакетами задачи пересекаются лишь частично.А в чем будет разница? На выходе, то одно и то же
Ничего не путаете?Могу конечно и путать конкретно по скайпу. Но такой софт есть и его дохрена. Сам бесплатный, но качать надо с оф.сайта. Распространять запрещено. Обычно в репы это попадает get пакетами. Типа get-telegram, которые при установке также качают сф.сайта.
А в чем будет разница? На выходе, то одно и то жеНа выходе, да. А на входе у метапакета, только пакеты, а у скрипта для чрут2пфс что угодно, например исходники софтины + зависимости из репы.
на входе у метапакета, только пакеты, а у скрипта для чрут2пфс что угодно, например исходники софтины + зависимости из репы.Такое (сценарий сборки пакета) тоже есть в любом дистре. В арче AUR и ABS.
Такое (сценарий сборки пакета) тоже есть в любом дистре. В арче AUR и ABS.Если все сваливать на ПМ, то откуда у вас вообще репы модулей? В магос например их нет, все собираем urpm2xzm.
Зачем переизобретать...
Если все сваливать на ПМ, то откуда у вас вообще репы модулей?Я совсем недавно стал стараться опакечивать все. Причем это не очень удобно - двойная работа, но оно стоит того. Т.к. "задача свелась к предыдущей" - делаем из пакетов модуль + доп. плюс - можно юзать в фул без модулей
В магос например их нет, все собираем urpm2xzm.Зачем тогда вообще pfs-get. С чем работать будет?
у дистра может и не быть ПМКак в таком прописать зависимости?
Зачем тогда вообще pfs-get. С чем работать будет?Некогда о себе думать, все для вас, все для вас :)
Как в таком прописать зависимости?У модулей есть возможность иметь зависимости. И пфсгет их установит, если прописаны. Просто пока мы это не используем.
Почему мы рассматриваем репозитории только для модулей. У нас же есть chroot2pfs и мы можем делать репозитории со скриптами для него. Ну или смешанные.Может не в поддержку этой идеи, а как отдельная мысль:
(редактирование mirrors, обновление баз *.db, потом все повторять в обратном порядке, иначе все сломается), плюс полученные пакетыскорее всегопридется устанавливать в /opt.
Так же обязателен запуск trim и и.д.
PRA сильно привязан к определенной дате своей репыНе более, чем любой другой линукс. Доказал на примере LFD DDR
Непросто выйти за ее пределы и при этом не поломать всю систему.Выкрутился портированием
При необходимости поддерживать какое-то приложение в актуальном состоянии, придется совершать слишком много ручного труда (редактирование mirrors,Простые проги проще перекомпилить под свой срез
Делает по большей части ручками.Прог для дома надо мало. Это не сложно
идея некой замороженной (статичной в течении длительного времени) базы и современных постоянно обновляемых приложений, собранных с chroot2pfs --script возможно имеет смысл.Ну так именно это и реализовано, но перекомпиляцией. Это универсальное решение. chroot2pfs будет сложнее и менее предсказуем. В PKGBUILD можно описать любой сценарий. Ничего изобретать не надо
На самом деле я понимаю, что настоящий PRA и представляет из себя описанное в предыдущем абзаце. :) В плюсах была бы в первую очередь автоматизация - записанные в скриптах часто повторяющиеся действия:Не совсем. Вы скорее magos описали, как я его понял. Поправьте, что не так
Модульность. MagOS Linux состоит из независимых друг от друга модулей,Раньше нельзя было выдергивать модули ниже по списку и зависимостей в модулях не было. Что-то изменилось?
речь не о множестве скриптов, как было в первоначальной идее, а об одном, где меняется только название приложения. И кратковременно размораживается репа на текущую дату.Теоретически такое сделать можно, но...
Или не понимаю, к чему вы клоните?
Так что идея некой замороженной (статичной в течении длительного времени) базы и современных постоянно обновляемых приложений, собранных с chroot2pfs --script возможно имеет смысл. Правда размер системы, в таком случае, будет постоянно расти за счет дублирования файлов разных версий.Это похоже на использование системы с пакетами snap или flatpak, или даже пакетного менеджера Nix.
upd. По сути, речь не о множестве скриптов, как было в первоначальной идее, а об одном, где меняется только название приложения. И кратковременно размораживается репа на текущую дату.
Ну так почему тогда не фул?Слишком часто произносится "почему не фулл". И мне кажется нет понимания с чем столкнется пользователь на самосборке под свои причудливые хотелки. И как часто ему придется чинить свою сборку после очередного вынужденного (частого) обновления системы. Частого, иначе если это дело задержать, потом можно столкнуться с нерешаемыми проблемами.
причудливые хотелкиМожно примеры, чтобы понять что обсуждаем
нет понимания с чем столкнется пользователь на самосборкеУ меня больше года стоял фул прар 1801 lxde. Все обновлялось без проблем
Частого, иначе если это дело задержать, потом можно столкнуться с нерешаемыми проблемами.Почитайте форум арча. Нет таких проблем у юзеров со средней подготовкой
Когда sfs говорит "почему не фулл", мне кажется он видит именно Mangaro, которую готовит 'посторонний дядя', решая сопутствующие проблемы и выпуская обкатанные обновления.1. Ну так перейдите на репу манджары. В вике прар описано
сколько 'обновленченского ада' испытает/испытывает самосборщик?Можно примеры
Про проблемы расказывал RoDoN, когда перевел какой-то из pra-retro в фуллЭто проблемы pra-retro (не предназначен для фул), а не арча.
С проблемами однажды столкнулись и в IceArch, когда пришлось временно заморозить репу, иначе перестало собиратьсяЧто именно и как решили?
Наверно не на пустом месте возникли такие пакетные системы как snap, flatpak, AppImage, nix.А вот это (система в системе) как раз верный путь запутаться
А чем фул не устраивает?
сторонник фругалЯ тоже. см выше. Спор не про то, что лучше , что хуже. Надо оба применять по назначению
каждый раз мне почему-то задается вопроспотому что вы хотите от фругала то, что проще получить от фул
такие пакетные системы как snap, flatpak, AppImage, nix.Есть еще OSTree, напоминающая git. Применяется в Fedora 33 (https://www.opennet.ru/opennews/art.shtml?num=53971).
Есть еще OSTree, напоминающая git. Применяется в Fedora 33.Вероятно подобное интересно юзерам LTS посмотреть свежий софт... Нам -то зачем?
pacman2pfs `pfspkg старый.pfs`