1. Выкачивает с репозитория список файлов.
Надо чтобы читал /etc/sfs-get/www.list
Пока в начале сделал
[ "`uname -m`" != "x86_64" ] && repo="http://www.puppyrus.org/~melvik/puppyrus/ftp/puppyrus/puppyrus
-a/pra03/pfs" \
|| repo="www.puppyrus.org/~melvik/puppyrus/ftp/puppyrus/puppyrus-a64/pfs-portable"
В итоге у меня в ПРА64 заканчивается
wget -O >(sed -n 's/.*href="\(.*\.pfs\)".*/\1/p' >repolist.txt) "$repo" 2>&1 \
./newmod.simple.yad.txt: line 36: syntax error near unexpected token `('
./newmod.simple.yad.txt: line 36: `wget -O >(sed -n 's/.*href="\(.*\.pfs\)".*/\1/p' >repolist.txt) "$repo" 2>&1 \'
Странно. У меня в pra1512game такая конструкция нормально воспринимается. В мануале bash такая подстановка процессов описана, так что вроде должна быть стандартной.
Хорошо, попробую упростить, как-нибудь через временные файлы сделаю. Не хотелось бы отказываться от возможности видеть лог работы wget, у нас тут tele2 сделал новогодний подарок - начиная с вечера 31 декабря интернет работает через раз, без лога сидишь и гадаешь - зацепился wget за сервер или нет.
/etc/sfs-get/www.list приспособлю. Надо только подумать, как обработать несколько репозиториев.
В ПРА32 так же , но выводит на экран 1 обновление
Вообще непонятно. Не скачав repolist этой самой 36 строчкой он вообще обновлений обнаружить не может - ибо негде.
Я с трудом читаю этот код
local ver sver - что это в начале splitname()?
Тут за исключением длинных регулярных выражений все просто. Это объявление двух локальных переменных
в ver потом помещаются куски имени файла, относящиеся к версии. Поскольку таких кусков может быть больше одного, ver может получиться многострочной.
Например, deadbeef-p-static-0.6.2-full-s04.pfs разберется на имя пакета deadbeef-p-static-.*-full-.*\.pfs и версию 0.6.2-s04
ver при этом содержит '-0.6.2-\n-s04.'
Потом эти кусочки подрезаются до '0.6.2' и 's04' и объединяются в единую строку локальной переменной sver,
одновременно с этим строится регулярное выражение для команды s/// sed, которое вырежет эти кусочки из полного имени файла, заменив их на .* Потом deadbeef-p-static-.*-full-.*\.pfs можно использовать как шаблон grep, чтобы найти все такие пакеты с разными версиями.
С wget тоже малопонятно
На всякий случай есть wget-progressbar3
Смотрел я его. Не сказал бы, что он проще
У меня там как раз ничего сложного нет:
wget -c --progress=dot "${repo}/${newmod}" 2>&1 - обычная команда wget <url>
"-с" - с докачкой, если файл уже лежит, перекачивать не будет, скажет, что готово
"--progress=dot" чтобы лог работы в более удобном для разбора формате выводил
2>&1 - лог не в sterr, а в stdout, для разбора в прогрессбар
|sed -nu 's/^/#/p;/%/s/^.* \+\([0-9]\+%\).*$/\1/p'
"-n" - не выводить ничего без команды p
"-u" - unbuffered, буфер по минимуму, чтобы по строчке выводил, а не пачкой
's/^/#/p' - все входные строчки закомментировать и отправить на выход, в yad --progress --enable-log эти строки попадут в окно лога
/%/s/^.* \+\([0-9]\+%\).*$/\1/p' - а если во входной строчке есть проценты, то вырезать и напечатать на выход еще раз, эти строки управляют прогрессбаром.
Вот и все навороты вокруг wget
При выкачивании списка там сложнее, поскольку надо разбирать не только лог, но и выкачиваемый файл, он же изначально html,
поэтому и попытался сделать через подстановку процесса >(...), у меня работало, не знаю, почему у вас не так, хоть бы еще кто попробовал запустить.
6. Смотрит директорию системы. Ориентируется при этом на ссылку /mnt/live/porteus/modules
Тут без вариантов придется привязываться к инитрд
Не знаю какие там Дядя Шурик стандарты напринимает, но у меня под них переписывать pra-porteus-initrd желания нет
Придется определять тип инитрд и для каждого по своему
Ну, обновлялка модулей дистрибутива по-моему принципиально не может быть дистрибутивонезависимой,
все равно особенности везде разные.