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

Голосование

Нужно?

Нужно
10 (71.4%)
Не нужно
4 (28.6%)

Проголосовало пользователей: 14

Автор Тема: mod-up. Обновление загруженных модулей.pfs из репозитория  (Прочитано 66913 раз)

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

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33967
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Я имел ввиду скрипт, который
1. сверяет версии автозагруженных модулей с репой,
2. выводит предложение обновить
3. скачивает и старые переименовывает в .old
4. перегружает комп
5. Его можно поставить в автозагрузку

Итоговый принцип работы
Стандарты названий модулей.pfs
https://github.com/andreyrogojin/newmod/network
« Последнее редактирование: 15 Февраль 2016, 15:29:41 от sfs »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33967
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:PFS-utils на github
« Ответ #1 : 21 Декабрь 2015, 11:26:32 »
Вот такой скрипт не помешал бы, лишь бы не все на автомате.
Мы же не микрософт  :D

ander - не вдохновляет идея? Самому пока некогда - надо поделывать пра64 и новое оформление
« Последнее редактирование: 21 Декабрь 2015, 11:28:20 от sfs »

Оффлайн ander

  • Активный участник
  • Старожил
  • ****
  • Сообщений: 300
  • Репутация: +16/-0
Re:PFS-utils на github
« Ответ #2 : 24 Декабрь 2015, 17:06:16 »
Я имел ввиду скрипт, который
1. сверяет версии автозагруженных модулей с репой,
2. выводит предложение обновить
...

Попробовал сверять версии...  Плохо получается, больно уж разнообразно они могут указываться.
Например, по локальному teamviewer-10.0.37742-s02.pfs нетрудно найти в репе teamviewer-11.0.52520-s02.pfs,
А вот при локальном Vlc-p-2.2.1-s03.pfs сложновато объяснить программе, что Vlc-p-2.2.1-lt+.pfs и Vlc-p-2.2.1-lt.pfs - это другие пакеты, а не отличающиеся версии.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33967
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:Автообновление автозагрузаемых модулей.pfs
« Ответ #3 : 24 Декабрь 2015, 17:24:51 »
Я же писал - что начинать надо со стандартизации названий
Если планируете продолжать этот скрипт - попереименовываю
C гуй помогу. Мой спец по тяжелым случаям regex и sed в январе будет в отпуске
[Pp]rogram-такая-то-p?-1.2.1-s09.pfs
До цифр достаточно отследить [Pp] (больш. мал.)
Надо ли морочиться -p- (портированная) не уверен. ltp sp и т.п. поубираю. А может это в конец названия перенести и вообще не обрабатывать...
С цифрами могут быть сюрпризы типа 9 10
Может быть код автора "s" сделать "sf" или "sfs" - уже есть проблема : pro paulus

Разделил тему. Скрипт будет универсальным или с привязкой к Initrd (тогда хорошо бы porteus uird)?
« Последнее редактирование: 24 Декабрь 2015, 18:07:25 от sfs »

Оффлайн ander

  • Активный участник
  • Старожил
  • ****
  • Сообщений: 300
  • Репутация: +16/-0
Re:Автообновление автозагрузаемых модулей.pfs
« Ответ #4 : 24 Декабрь 2015, 17:58:59 »
Привязка к initrd не нужна, в /sys/fs/aufs/*/br[0-9]* в любом случае перечислены все слои aufs, куда бы их не монтировали.

Некоторые файлы в названии вообще не имеют номеров версии, например softmaker-office-bin.pfs
Может, имеет смысл держать в репозитории md5sum.txt и действовать примерно как с 089-pra-up.pfs - не совпала сумма с локальным файлом - значит, он обновился?

upd.  Нет, подумал, так тоже неудобно.  Тогда возникнут сложности уже у файлов, содержащих номер версии - появилась новая версия, и файл-то уже другой.
« Последнее редактирование: 24 Декабрь 2015, 18:08:21 от ander »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33967
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:Автообновление автозагрузаемых модулей.pfs
« Ответ #5 : 24 Декабрь 2015, 18:04:20 »
Некоторые файлы в названии вообще не имеют номеров версии, например softmaker-office-bin.pfs
Переименуем. Под такое не надо пилить
Может, имеет смысл держать в репозитории md5sum.txt и действовать примерно как с 089-pra-up.pfs - не совпала сумма с локальным файлом - значит, он обновился?
У 089 имя не меняется. А тут сначала надо по любому имя сверить. А раз с именем ясно - тогда можно и без md
Для начала надо очень простой консольный вариант. А там практика подскажет

Оффлайн ander

  • Активный участник
  • Старожил
  • ****
  • Сообщений: 300
  • Репутация: +16/-0
Re:Автообновление автозагружаемых модулей.pfs
« Ответ #6 : 24 Декабрь 2015, 20:09:25 »
Совсем простой тестовый скрипт.
Смотрит подключенные модули и пытается разобрать их имена на собственно имя и версию.
По крайней мере видно, на чем будет спотыкаться.
Код
ls -1 /sys/fs/aufs/*/br[0-9]* \                                                 
 | while read branch ; do                                                       
      branchDir=$(cat $branch)                              # /mnt/live/memory/images/050-mc-p-4.8.15-s02.pfs=rr+wh                                 
      pfsname=$(basename ${branchDir%=r*})                  # 050-mc-p-4.8.15-s02.pfs                             
      pfsname=${pfsname#.}                                  #  /mnt/.python2-2.7.8-2.pfs --> python2-2.7.8-2.pfs                     
      modname=${pfsname%%[_-][0-9]*}                        # python2-2.7.8-2.pfs  -->  python2                 
      modver=${pfsname#$modname}                            # sdl_sound-1.0.3-5_DEV.pfs -->  -1.0.3-5_DEV.pfs                     
      modver=${modver#[_-]}                                 # -1.0.3-5_DEV.pfs -->  1.0.3-5_DEV.pfs                     
      modver=${modver%.pfs}                                 # 1.0.3-5_DEV.pfs -->  1.0.3-5_DEV               
      modver=${modver%%[-_][^0-9.-_]*}                      # 1.0.3-5_DEV  -->   1.0.3-5                             
      printf "%-40s %-25s %-10s\n" $pfsname $modname $modver
   done

Оффлайн ander

  • Активный участник
  • Старожил
  • ****
  • Сообщений: 300
  • Репутация: +16/-0
Re:Автообновление автозагружаемых модулей.pfs
« Ответ #7 : 26 Декабрь 2015, 17:33:37 »
Немного доработанный тестовый скрипт.  Уже достаточно терпимо разделяет имя файла на собственно имя и версию,
потом сравнивает с содержимым репозитория и выводит те имена файлов, где имя совпадает, а версия различается.
Можно позапускать для экспериментов, поскольку ничего, кроме вывода имен он не делает, то ничего и не поломает.
Если в середину вписать тестовый вывод промежуточных значений, будет видно, на какие части имена файлов разбирает и, соответственно, какие разбирает плохо.
Код
repo="http://www.puppyrus.org/~melvik/puppyrus/ftp/puppyrus/puppyrus-a/pra03/pfs"
[ -f repolist.txt ] \
  || wget -q -O - "$repo" \
      |sed -n 's/.*href="\(.*\.pfs\)".*/\1/p' \
      >repolist.txt
splitname(){  # Vlc-p-2.2.1-s03.pfs -> Vlc-p-.*.pfs 2.2.1-s03
  local name ver
  ver=$(echo "$1" |grep -oE '[_-]([A-z]?[0-9]+[_.+-])+')
  ver=${ver%?}
  ver=${ver#?}
  ver=$(echo $ver |sed 's/ /.*/g')
  export $2=$(echo "$1" |sed 's/\(.*\)'$ver'\(.*\)\.pfs/\1.*\2\\.pfs/')
  export $3=$ver
}

ls -1 /sys/fs/aufs/*/br[0-9]* \
 | while read branch ; do
      branchDir=$(cat $branch)
      pfsname=$(basename ${branchDir%=r*})
      pfsname=${pfsname#.}
      splitname $pfsname modname modver
# echo -e "${pfsname}\n${modname}\n${modver}\n-+--+--+-"
      grep "$modname" repolist.txt |grep -v "$pfsname" \
       | while read similarpfs ; do
           splitname "$similarpfs" rname rver
           if [ "$modname" == "$rname" -a "$modver" != "$rver" ] ; then
             echo "$pfsname"
             echo "$similarpfs"
             echo -----------
           fi
         done
   done
« Последнее редактирование: 26 Декабрь 2015, 17:43:24 от ander »

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re:Автообновление автозагружаемых модулей.pfs
« Ответ #8 : 27 Декабрь 2015, 04:40:36 »
Работает!!!
Вспоткнулся скрипт на firefox-light*profile, если есть два более новых пакетов, то выводит два раза что надо обновлять.

- Мне кажется каталог base трогать ненадо, хотя не факт.
- repolist.txt после окончания работы может удалять?
- раскраску в терминале сложно сделать? новый пакет из base рисовать красным, новый пакет из modules рисовать зеленым.
- Надписи перед названием наверное добавить "Новый:" "Существующий:"
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33967
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:Автообновление автозагружаемых модулей.pfs
« Ответ #9 : 27 Декабрь 2015, 08:56:07 »
- Мне кажется каталог base трогать ненадо, хотя не факт.
Код
ls -1 /sys/fs/aufs/*/br[0-9]* \
Сравниваются все подключенные.pfs
Так хорошо. Отвязка от специфики initrd - это дорогого стоит
Итоговые решения по обновлению все равно  будет принимать юзер
- раскраску в терминале сложно сделать? новый пакет из base рисовать красным, новый пакет из modules рисовать зеленым.
- Надписи перед названием наверное добавить "Новый:" "Существующий:"
Не надо вылизывать вывод в консоль. В итоге все равно надо писать гуй

Начало положено. Удобно. Спасибо +

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Re:Автообновление автозагружаемых модулей.pfs
« Ответ #10 : 27 Декабрь 2015, 09:09:28 »
Начало положено.
Конец предсказуем - головная боль у разработчиков из-за обратной совместимости. Потому что
Итоговые решения по обновлению все равно  будет принимать юзер


Моноблок 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

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33967
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:Автообновление автозагружаемых модулей.pfs
« Ответ #11 : 27 Декабрь 2015, 09:23:44 »
Конец предсказуем - головная боль у разработчиков из-за обратной совместимости. 
Какие варианты решения проблемы?

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re:Автообновление автозагружаемых модулей.pfs
« Ответ #12 : 27 Декабрь 2015, 15:17:56 »
Конец предсказуем - головная боль у разработчиков из-за обратной совместимости. 
Какие варианты решения проблемы?
или в спортлото, или звонить ddshurick
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн ander

  • Активный участник
  • Старожил
  • ****
  • Сообщений: 300
  • Репутация: +16/-0
Re:Автообновление автозагружаемых модулей.pfs
« Ответ #13 : 27 Декабрь 2015, 16:32:43 »
Работает!!!
Вспоткнулся скрипт на firefox-light*profile, если есть два более новых пакетов, то выводит два раза что надо обновлять.

- Мне кажется каталог base трогать ненадо, хотя не факт.
- repolist.txt после окончания работы может удалять?
- раскраску в терминале сложно сделать? новый пакет из base рисовать красным, новый пакет из modules рисовать зеленым.
- Надписи перед названием наверное добавить "Новый:" "Существующий:"

Да это вообще пока исключительно для тестов.  Выяснить, на чем будет спотыкаться и по итогам либо разбор имен тщательнее делать, либо некоторые модули с самыми заковыристыми названиями переименовать более стандартно.  Поэтому и выводит как попало и временные файлы не удаляет - чтобы при десятках запусков каждый раз на сервер за списком не лезть.
Потом, действительно, надо будет делать что-то с графическим интерфейсом, типа списка с чекбоксами.
Головную боль тоже считаю вероятной, поэтому, думаю, обновление в автозапуске - это лишнее.  Другое дело, если, к примеру, обнаружилось, что gimp плохо работает - запустил обновлялку и посмотрел, нет ли новой версии.  В таком случае если выяснится, что с новой версией вообще не работает, несложно и старую вернуть, хоть из *.old обратно переименовав, хоть из репозитория еще более старую скачав.  В расчете на это и тестовый скрипт выводит любые отличающиеся от текущей версии, необязательно только новее.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33967
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:Автообновление автозагружаемых модулей.pfs
« Ответ #14 : 27 Декабрь 2015, 19:00:07 »
некоторые модули с самыми заковыристыми названиями переименовать более стандартно. 
Именно так. После выпуска 1512 готов плотно заняться
С острой болью - пишите - раньше сделаю
Потом, действительно, надо будет делать что-то с графическим интерфейсом, типа списка с чекбоксами.
Код
ntf -k
Одна строка - один модуль (2 колонки - старый + новый)
Головную боль тоже считаю вероятной, поэтому, думаю, обновление в автозапуске - это лишнее. 
По любому запретить его автозапуск тоже не сможем  ;)
По опыту - отключившие 089 обновления имеют больше проблем