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

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

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

Оффлайн Zay

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

Все что я дописал - необходимо в любом DE. Проверено во всех версиях ПРА. Оптимально этот код выполнять здесь
Можно ли это оформить в стиле остальных скриптов, т.е. без функций? Чтобы легче было понять суть.
« Последнее редактирование: 27 Апрель 2015, 12:03:08 от Zay »

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Багтрекер PFS-utils
« Ответ #16 : 27 Апрель 2015, 12:05:20 »
chmod 755 "${chfile}" ###sfs - только на указанную
Ещё раз обращаю внимание на то, что эта строка добавлена в тело цикла.
Тут не chmod -R а find * -type d заходит в подкаталоги.

Если я правильно понял, нужно что-то вроде этого (строка внизу):
Код
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}"
done
find "${tmpdir}/files/${namepack}" -type d -maxdepth 1 | chmod 755

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re:Багтрекер PFS-utils
« Ответ #17 : 27 Апрель 2015, 13:26:35 »
Цитата
Если на папке tmp не 755 - то mkpfs tmp дает модуль, который при монтировании в верхний слой убивает систему
Проявлялось только при перепаковке хромоподобных, но лучше подстраховаться. Разобрались не сразу
Посмотрел - да. chmod 755 "${chfile}" ###sfs  надо убирать в pfsextract
а добавить надо в mkpfs 29ю строку
« Последнее редактирование: 27 Апрель 2015, 13:38:12 от sfs »

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Багтрекер PFS-utils
« Ответ #18 : 27 Апрель 2015, 17:04:00 »
Значит в pfsextract всё нормально и такая строка не нужна?
Код
find "${tmpdir}/files/${namepack}" -type d -maxdepth 1 | chmod 755

а добавить надо в mkpfs 29ю строку
Можно, но получается что меняется исходный каталог, это не совсем правильно.
Надо бы проверить просто mksquashfs'ом упаковать такую программу.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re:Багтрекер PFS-utils
« Ответ #19 : 27 Апрель 2015, 17:17:39 »
Значит в pfsextract всё нормально и такая строка не нужна?
Нет - это мои запутки
Можно, но получается что меняется исходный каталог, это не совсем правильно.
Можно по итогу вернуть права. Они же только на верхнюю папку

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Багтрекер PFS-utils
« Ответ #20 : 28 Апрель 2015, 13:03:17 »
Хорошо, думаю можно внести эту строку в mkpfs.
Только куда, после 29 или после 56?

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re:Багтрекер PFS-utils
« Ответ #21 : 28 Апрель 2015, 13:13:17 »
29

Оффлайн Zay

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

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re:Багтрекер PFS-utils
« Ответ #23 : 03 Июнь 2015, 13:14:21 »
Продолжение темы с правами
Напомню начало: pfsextract не переносит права на директории, т.к. они делаются командой mkdir
Я написал костыль, который адским циклом их проставляет
Выяснилось, что права 777 не переносятся таким методом - на выходе получается 776

Переделал и вроде ускорил выполнение
Код
find "${tmpdir}/pmount${file}" -type d -printf "[ -e '%p' ] && { chmod %m '%p'; chown %U:%G '%p';}\n" | sed 's#'${tmpdir}'/pmount#'${tmpdir}'/files/'${namepack}'#g' | ash ###sfs
В pra1505 уже исправленный

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Багтрекер PFS-utils
« Ответ #24 : 03 Июнь 2015, 15:28:57 »
Тема с правами важная.

Вопрос, какой точно код заменить на приведённый выше?
По сравнению с http://github.com/pfs-utils/pfs-utils/blob/master/usr/sbin/pfsextract

Или может быть сами сделаете коммит в Git? Это легко сделать из браузера.
Только очень желательно указывать в комментариях суть изменений.
(+ Можно дать ссылку на сообщение в форуме).

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re:Багтрекер PFS-utils
« Ответ #25 : 03 Июнь 2015, 15:40:48 »
Вопрос, какой точно код заменить на приведённый выше?
По сравнению с http://github.com/pfs-utils/pfs-utils/blob/master/usr/sbin/pfsextract
116-120 удалить :
Код
        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}
          done"
именно поэтому - для наших разработок я против гит
Из-за одной строчки сейчас с ним разбираться чтобы следующий раз через полгода опять все забыть

А вообще вместо этого костыля не мешало бы подумать о
Код
rsync -⁠a -⁠v -⁠-⁠files-⁠from="filelist" srcdir/⁠ dstdir

« Последнее редактирование: 03 Июнь 2015, 15:42:33 от sfs »

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Багтрекер PFS-utils
« Ответ #26 : 04 Июнь 2015, 19:10:34 »
Поправил, верно?
http://github.com/pfs-utils/pfs-utils/blob/master/usr/sbin/pfsextract

именно поэтому - для наших разработок я против гит
Из-за одной строчки сейчас с ним разбираться чтобы следующий раз через полгода опять все забыть
Для правки скриптов Git, ИМХО, отличная штука.
Можно править отдельные скрипты и делать коммиты прямо из браузера.
Принцип работы похож на правку Wiki, только функциональнее.
Последний коммит я сделал вообще из под Windows.

А вообще вместо этого костыля не мешало бы подумать о
Код
rsync -⁠a -⁠v -⁠-⁠files-⁠from="filelist" srcdir/⁠ dstdir
Возможно, но тянуть в зависимости rsync как-то не хочется...
Есть и другой путь - сделать pfsextract обёрткой для pfsmerge (удалять все пакеты кроме нужного).

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re:Багтрекер PFS-utils
« Ответ #27 : 05 Июнь 2015, 09:11:41 »
Поправил, верно?
да
Для правки скриптов Git, ИМХО, отличная штука.
Проблема не в гит, а в отсутствии активной коллективной работы

rsync - да, только из-за этого скрипта не хотелось бы
pfsextract - боюсь будет ощутимо медленнее

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re:Багтрекер PFS-utils
« Ответ #28 : 15 Июнь 2015, 14:08:40 »
Поймал баг
http://www.puppyrus.org/~melvik/puppyrus/ftp/puppyrus/puppyrus-a64/pra64-04/pfs-test/040-Xfce-4.12-s02_64.pfs
После pfsextract в z-xfce4_64 теряются файлы (например в /usr).
В исходном модуле они есть физически и в списках. pfsextract ошибок в консоль не выдает
Проверял в пра32. В чем проблема понять не удалось.
Повторить баг не удалось (после ручного восстановления z-xfce4_64) все ок
Хочется верить что проблема в самом модуле, а не в скриптах
« Последнее редактирование: 15 Июнь 2015, 14:10:41 от sfs »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re:Багтрекер PFS-utils
« Ответ #29 : 16 Сентябрь 2015, 17:19:27 »
Если сделать pfsextract не_составной.pfs  = папка и в ней этот же модуль с полной перепаковкой (поэтому долго)
Хорошо бы это детектить и сразу выдавать ошибку, т.к. совершенно бесполезное действие