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

Автор Тема: Багтрекер PFS-utils  (Прочитано 48834 раз)

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

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Багтрекер PFS-utils
« : 27 Декабрь 2013, 14:14:05 »
Тема для сообщений об ошибках, найденных в PFS-utils.
« Последнее редактирование: 08 Февраль 2014, 22:44:47 от Zay »

Онлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33955
  • Репутация: +231/-0
    • PuppyRus-A
Re:Багтрекер PFS-utils
« Ответ #1 : 28 Декабрь 2013, 23:26:45 »
Код
pfsunload ot-baldy ; echo $?
Object "ot-baldy" not mounted.
0
При попытке отмонтировать немонтированый модуль получаем удачный код возврата
Надо в конце pfsunload
Код
echo "Object \"${fsname}\" not mounted." >&2 && exit 1
« Последнее редактирование: 28 Декабрь 2013, 23:36:40 от sfs »

Онлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33955
  • Репутация: +231/-0
    • PuppyRus-A
Re:Багтрекер PFS-utils
« Ответ #2 : 29 Декабрь 2013, 01:26:07 »
Код
  ###sfs busybox umount -d "${mountpoint}" >/dev/null 2>&1
  m="`busybox umount -d "${mountpoint}" 2>&1`"
  status=$?
  sync
  rmdir "${mountpoint}" 2>/dev/null
  [ ${status} -eq 0 ] && status=${stataufs}
  [ ${status} -gt 0 ] && echo "Unmount \"${fsname}\" failed!"
  sync
else
  echo "Object \"${fsname}\" not mounted.\n$m" && exit 1 ###sfs
fi
В pfsunload лучше ошибку обработать через переменную и вывести причину

Онлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33955
  • Репутация: +231/-0
    • PuppyRus-A
Re:Багтрекер PFS-utils
« Ответ #3 : 17 Февраль 2014, 16:59:44 »
pfsload
Модули ядра и glib - это не все что может быть в модулях
Добавил обновление mime, ttf и т.п. (при наличии)
Мои правки сделаны в файле из git. Отмечены ###sfs
« Последнее редактирование: 18 Февраль 2014, 16:00:47 от sfs »

Онлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33955
  • Репутация: +231/-0
    • PuppyRus-A
Re:Багтрекер PFS-utils
« Ответ #4 : 21 Февраль 2014, 12:49:55 »
http://forum.puppyrus.org/index.php/topic,12727.msg85140.html#msg85140 - недокостылили
Если сделать pfsextract например ftp://ftp.yandex.ru/puppyrus/puppyrus-a/pfs/Opera-12.16-s04.pfs и подключить opera - систему может вообще поклинить. Если растаковать - на центральной папке права не 755
Добавил chmod (в аттаче)

Онлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33955
  • Репутация: +231/-0
    • PuppyRus-A
Re:Багтрекер PFS-utils
« Ответ #5 : 31 Январь 2015, 10:33:56 »
PRA3-1501middle. Копирую в mc 1,4gb файл с винта ntfs на флэш fat32
Если при этом сделать open_pfs - долго висит сообщение о подключении
pfsload - просто висит
через несколько минут "расклинивается" само
Итог подключения нормальный
В процессах
Код
23179 pts/4    S      0:00 /usr/bin/sudo open_pfs lxappearance-0.6.1-1-i686.pfs
23181 pts/4    S      0:00 /bin/bash /usr/local/bin/open_pfs lxappearance-0.6.1-1-i686.pfs
23278 pts/4    S      0:00 gtkdialog3 --program=DIALOG_INFO --center
23282 pts/4    S      0:00 /bin/sh /usr/local/bin/pfsramload -u /mnt/sda7/pra3/150129/lxappearance-0.6.1-1-i686.
24620 pts/4    S      0:00 /bin/sh /usr/local/bin/pfsload -u /tmp/.mountRAM/lxappearance-0.6.1-1-i686.pfs/lxappe
Откуда тормоз?
« Последнее редактирование: 31 Январь 2015, 10:44:58 от sfs »

Онлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33955
  • Репутация: +231/-0
    • PuppyRus-A
Re:Багтрекер PFS-utils
« Ответ #6 : 31 Январь 2015, 10:51:54 »
Запуск c sh -vx дал ответ: тормоза в момент выполнения sync
Остается вопрос - как это обойти?

Ключей у него нет
Убрать вообще...

Онлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33955
  • Репутация: +231/-0
    • PuppyRus-A
Re:Багтрекер PFS-utils
« Ответ #7 : 21 Апрель 2015, 14:09:57 »
По итогу разбора этих полетов
Я давно пропатчил (помечено ###sfs) pfsload - сделал копирование ярлыка из aufs в changes
Только это дает гарантированное появление его в меню. С Дядей Шуриком пробовали даже inode - не поймать событие
Причем в разных DE формирование меню разное
Думал menu-cached сам разрулит и приблокировал MENUC - не прокатило
Вернул
Этот же патч решает проблему иконок , mime и т.п.
Выяслил, что в lxpanel не обновляются иконки в меню, если они в модуле в pixmaps, а не в icons
Решений кроме lxpanelctl restart не нашел
Надо бы все описанное проверить в XFCE

Онлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33955
  • Репутация: +231/-0
    • PuppyRus-A
Re:Багтрекер PFS-utils
« Ответ #8 : 21 Апрель 2015, 14:34:32 »
Не баг, но очень неприятная и недокументированная фича
Код
pfsmerge
При объединении модулей из папки слои - против алфавита: верх -a z-низ
Если распаковать такой модуль и автоподключить в распакованном виде , например в porteus-initrd - слои будут по алфавиту - в итоге получим другое перекрытие файлов
Сделал везде по алфавиту (метка ###sfs)
Сами поправите доку или я?

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Багтрекер PFS-utils
« Ответ #9 : 21 Апрель 2015, 15:27:13 »
За время перерыва в работе немного подзабылось, что к чему.
Порядок слоев очевидно нужно изменить, остальное - проверить...

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Багтрекер PFS-utils
« Ответ #10 : 26 Апрель 2015, 12:53:30 »
Промежуточное обновление.

Исправлена проблема с losetup / losetup-FULL, теперь скрипты должны работать в любой системе.
Скрипты отвязаны от вызова busybox [u]mount (если busybox отсутствует вызывается [u]mount).

Добавлена "недокументированная" возможность, ключ --gzip (в скриптах mkpfs, pfsmerge, pfsextract, pet2pfs).
Собирать такие пакеты, тем не менее, крайне не рекомендуется, поэтому в GUI и в справке этой функции нет.

Исправление ошибок - код возврата pfsunload и порядок слоёв в pfsmerge.

Вот здесь не разобрался. Предложенный код, как я понимаю, меняет права для всех объектов. По идее не правильно...
Копирование ярлыков, MIME и т.д. лучше привязать к GUI, как мне кажется.

Update: В версии 1.1.2 найдены ошибки, вложение удалено. См. ниже.
« Последнее редактирование: 26 Апрель 2015, 20:35:41 от Zay »

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Багтрекер PFS-utils
« Ответ #11 : 26 Апрель 2015, 20:34:27 »
Обновил наконец GitHub: https://github.com/pfs-utils/pfs-utils
Были мелкие ошибки, лишние коммиты, но в целом вроде работает.

Добавил скрипт автоматической сборки пакета для PuppyRus.
(Можно сделать такие же скрипты и для других систем).

В процессе обнаружил ошибки в пред. версии, выкладываю новую.
Кто скачал версию 1.1.2 - перекачайте.

Онлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33955
  • Репутация: +231/-0
    • PuppyRus-A
Re:Багтрекер PFS-utils
« Ответ #12 : 27 Апрель 2015, 10:07:22 »
Добавлена "недокументированная" возможность, ключ --gzip (в скриптах mkpfs, pfsmerge, pfsextract, pet2pfs).
Собирать такие пакеты, тем не менее, крайне не рекомендуется,
Почему?
Вот здесь не разобрался. Предложенный код, как я понимаю, меняет права для всех объектов. По идее не правильно...
Не для всех - только для верхней папки.
Копирование ярлыков, MIME и т.д. лучше привязать к GUI, как мне кажется.
Чем это лучше?
Вроде - по замыслу, консольные утилиты не должны отличаться по функционалу от их gui...

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Багтрекер PFS-utils
« Ответ #13 : 27 Апрель 2015, 10:34:10 »
Почему?
Потому что спецификацию не просто так писали.
Раз уж эта функция так нужна - пусть будет для "личного" использования, при пересборках и т.д.
Согласно спецификации некоторые скрипты по умолчанию считают что в файлах .pfs сжатие XZ.
При попытке подключить их на старых ядрах будет выведен текст о несовместимости ядра с PFS.
Известные мне утилиты не позволяют узнать тип сжатия в SFS, а непонятные ошибки - это плохо.

Не для всех - только для верхней папки.
Вот этот фрагмент:
Код
find "${tmpdir}/files/${namepack}" -type d | while read chfile; do
  chfp="$(echo "${chfile}" | sed 's#'${tmpdir}'/files/'${namepack}'#'${tmpdir}'/pmount#')"
  chown "$(ls -ld "${chfp}" | sed -n 's/^[^ ]\+ [^ ]\+ \([^ ]\+\) \([^ ]\+\) .*$/\1:\2/p')" "${chfile}"
  chmod "$(ls -ld "${chfp}" | sed -n 's/^.\(...\)\(...\)\(...\).*$/u=\1,g=\2,o=\3/; s/-//g; p')" "${chfile}"
  chmod 755 "${chfile}" ###sfs
done
Уже немного забыл, как всё это работает, но попробуем разобраться.
find "${tmpdir}/files/${namepack}" -type d выдает список всех каталогов в конкретном пакете (в т.ч. вложенных).
Дальше цикл, в котором перебираются все каталоги, в теле цикла название каталога - это переменная ${chfile}.
Если в конце делать chmod 755 для ${chfile} - получится что все каталоги внутри пакета получат права 755.
Но код это писал не я, может логика тут была другая?

Чем это лучше?
Вроде - по замыслу, консольные утилиты не должны отличаться по функционалу от их gui...
Обновление меню (раньше использовался скрипт fixmenus) и проч. - это вроде как функции, специфичные для WM.
Но там ещё нужно разобраться, какой код что  делает. Универсальные команды можно будет и в утититы добавить.

Онлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33955
  • Репутация: +231/-0
    • PuppyRus-A
Re:Багтрекер PFS-utils
« Ответ #14 : 27 Апрель 2015, 11:05:16 »
gz - тоже не знаю как определить тип в готовом сквоше
Из идей - только писать что-то внутрь сквоша. Как минимум для перепаковки очень полезен - юзаю
Думаю - вопрос для продвинутых пока оставить в текущем виде и все останутся довольны

chmod 755 "${chfile}" ###sfs - только на указанную . Больше ничего не менял. Остальной код решает другую проблему
chmod -R - на все внутренние папки. Этого нет
Если на папке tmp не 755 - то mkpfs tmp дает модуль, который при монтировании в верхний слой убивает систему
Проявлялось только при перепаковке хромоподобных, но лучше подстраховаться. Разобрались не сразу

Все что я дописал - необходимо в любом DE. Проверено во всех версиях ПРА. Оптимально этот код выполнять здесь