pfsrebuild youtube-dl_any-sf02.pfsТак же и с профилем браузера:
pfsrebuild 083-firefox-profile_any.pfs
сделать, чтобы pfsrebuild сам выстроил этот список при первом запуске.так бы лучше
Поясните о каком списке речь. Что-то не пойму.Конечно, может я как-то не так выразил мысль. Скажу проще - pfsrebuild не работает.
По ошибкам судя не находит бандл. А он есть?Встречный вопрос, а он когда то был? )
live@prar-1811 /mnt % ls -la
итого 12
drwxr-xr-x 8 root root 180 мая 16 17:30 .
drwxrwxrwx 159 root root 260 мая 16 13:06 ..
lrwxrwxrwx 1 root root 9 мая 15 20:17 home -> /mnt/sda1
drwxr-xr-x 18 root root 480 мая 15 20:17 live
drwxr-xr-x 6 root root 4096 апр 17 22:07 sda1
drwxr-xr-x 4 root root 4096 фев 25 18:17 sda2
drwxr-xr-x 35 live root 4096 мая 13 19:36 sda3
Встречный вопрос, а он когда то был?Префикс для бандлов задается в pfs, если есть файл /etc/initvars, то префикес будет $SYSMNT/bundles
Префикс для бандлов задается в pfs, если есть файл /etc/initvarsНикогда не видел такой файл. Может раньше и был, а сейчас /etc или пустой, или там собственные настройки приложения, или этой директории вообще нет.
То есть бандлы должны лежать в /mnt и начинаться с точки. Это ваш стандарт, паппирусНо их нет.
Создайте файл /etc/pfs.cfg и запишите в него строкуЯ могу проверить конечно, но что дальше? Мне сомнительно, что sfs захочет переделывать такое количество модулей?
upd. Или сделать, чтобы pfsrebuild сам выстроил этот список при первом запуске.
Все же применение pfsrebuild будет полезно для 2-3 модулей и нет необходимости переделывать все модули в PRA под него.
сделать, чтобы pfsrebuild сам выстроил этот список при первом запуске.
так бы лучше
Создайте файл /etc/pfs.cfg и запишите в него строкуСработало
% du youtube-dl_any-sf02
4 youtube-dl_any-sf02/home/live/.qmplay2
8 youtube-dl_any-sf02/home/live
12 youtube-dl_any-sf02/home
8 youtube-dl_any-sf02/etc
8 youtube-dl_any-sf02/usr/local/bin
12 youtube-dl_any-sf02/usr/local
1732 youtube-dl_any-sf02/usr/bin
1748 youtube-dl_any-sf02/usr
1776 youtube-dl_any-sf02
Вы совершенно не о том говоритеВозможно я неправильно выражаюсь по форме проблемы, но я прав по ее духу. :)
Никакие модули переделывать не надо.
Возможно я неправильно выражаюсь по форме проблемы, но я прав по ее духу. :):)
Если возникнет необходимость чего-то добавить в модули, то здесь проблема в лице sfs и необходимых трудочасов. :)Добавьте этот /etc/pfs.cfg в сборку. Даже если конкретно для prefixmp позже будет не нужен, то все равно полезный. Сжатие например задавать можно.
Сжатие например задавать можно.Можно узнать все параметры которые можно задать через /etc/pfs.cfg
если найду скрипт , который папку пра со всеми модулями перепакует, то попробую, а вручную каждый - не эффективно.С помощью pfsrebuild и /etc/pfs.cfg возможно перепаковать все модули в директории с нужным сжатием?
Если возникнет необходимость чего-то добавить в модули, то здесь проблемаПоправка.
С помощью pfsrebuild и /etc/pfs.cfg возможно перепаковать все модули в директории с нужным сжатием?Для этого достаточно mkpfs в цикле запустить. Указывать сжатие в /etc/pfs.cfg имеет смысл если всегда используете "недефолтное" сжатие. К примеру у меня lzo работает быстрее чем дефолтный xz и я использую его.
Для этого достаточно mkpfs в цикле запустить.Никак не могу сообразить как это будет выглядеть. )
for n in {1..5}; do <КОМАНДА>; done
mkpfs --help
-f / --fast - быстрая компрессия (размер .pfs больше, но создается быстрее).
for mod in $( ls |grep pfs$) ; do mkpfs -f $mod -o new_$mod; done
PFSDIR=/var/lib/packagesВ принципе здесь вся инфа об этом Терминология и спецификации формата PFS (http://wiki.puppyrus.org/puppyrus/pr218/pfs3#терминология_и_спецификации_формата_pfs)
EXT=xzm
. /usr/lib/magos/os-config
. /etc/sysconfig/MagOS
compression="$MKSQFS_OPTS"
compression_fast="$MKSQFS_FASTALG"
#!/bin/sh
mkdir /tmp/pfs-new
for modul in $( ls -1 /mnt/live/memory/images | egrep '^00') ; do
echo $modul
mkpfs /mnt/live/memory/images/$modul -o /tmp/pfs-new/$modul --mksqfs -comp lz4
done
mkpfs /mnt/live/memory/images/$modul -o /tmp/pfs-new/$modul --mksqfs -comp lz4
В принципе здесь вся инфа об этом Терминология и спецификации формата PFScompression_fast - компрессия внутри squashfs при использовании mkpfs -f . По умолчанию lz4 :)
compression_fast - компрессия внутри squashfs при использовании mkpfs -f . По умолчанию lz4 :)конечно можно этот ключик использовать - и скрипт короче.
С pfsrebuild можно было бы через youtube-dl-update скачивать youtube-dl сразу в /usr/local/bin. А потом:
pfsrebuild youtube-dl_any-sf02.pfs
Создайте файл /etc/pfs.cfg и запишите в него строку
prefixmp="/mnt/live/memory/images/"
cat /usr/bin/youtube-dl-update
#!/bin/ash
sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/bin/youtube-dl
sudo chmod 755 /usr/bin/youtube-dl
Конечно у меня эти модули лежат уже распакованные в своих директориях, остается только поменять начинку и ПКМ по папке - Открыть - Упаковка PFS-пакета.Конечно если речь идет о редактировании существующих файлов, а не добавлении новых.
Мне сомнительно, что sfs захочет переделывать такое количество модулей?Т.к. это актуально только для самообновляющихся (http://forum.puppyrus.org/index.php?topic=21699.msg157185#msg157185) (отдельно от дистра) прог - актуально переделать только их
новый модуль надо вручную класть в нужную директорию с заменой.В теме про инсталлятор ПРА Дядя Шурик дал код, из которого можно выдернуть определение местонахождения подключенного модуля
суть проблемыНесоблюдение принятых нами же стандартов.
В несоставных модулях мы выкинули список файловГде такой стандарт
Где такой стандартhttp://forum.puppyrus.org/index.php?topic=17858.0
Выкидывал не я - коллегиальноЯ в этом не участвовал!
Если да - самое простое переделать самообновляющиеся модули в составные.Как я понял, ничего не надо переделывать.
Создайте файл /etc/pfs.cfg и запишите в него строкуЭто обший файл /etc/pfs.cfg, я его поместил в 090-save
prefixmp="/mnt/live/memory/images/
/etc/initvars - переменные заданные initrd ( часть спецификации ULRF )wiki.puppyrus.org/puppyrus/pr218/pfs3#терминология_и_спецификации_формата_pfs (http://wiki.puppyrus.org/puppyrus/pr218/pfs3#терминология_и_спецификации_формата_pfs)
/usr/bin/pfs - устанавливаются переменные, учитывающий специфику конкретного дистрибутива»
/etc/pfs.cfg - устанавливаются переменные, учитывающий специфику дистрибутива или конкретного пользователя
Я правильно понял суть проблемы :Не, вообще не так :)
В несоставных модулях мы выкинули список файлов
pfsrebuild с такими модулями не работает, т.к. списка нет
Создайте файл /etc/pfs.cfg и запишите в него строкуи ждем это
prefixmp="/mnt/live/memory/images/
Будет время переделаю
Починил вроде. В v4По поводу pfsrebuild. Я пока не проверял исправленную версию (v4), но у меня есть важное замечание.
Починил вроде. В v4.Работает. Спасибо+
В v3 наверное нет смысла переносить, работает же.В 3 и проверял. Почему нет смысла? Предлагаю добавить.
скрипт, который бы сразу перезаписывал исходный модульМожно переименовывать старый в .old. В пра есть инструменты чистить такое
Может как-то добавить возможность, чтобы такие папки полностью попадали в новый модульВ этом случае проще пересобрать (распаковка-прравка - запаковка)
Могу предложить такую схему работы с pfsrebuild в случае если добавляются файлы, и если вы не знаете добавились ли они при обновлении.Но интересно конечно, насколько быстро такой скрипт отработает. И не быстрее ли ручками.
- запускаем syschanges в отдельной консоли
- делаем необходимые изменения в системе, обновляем, добавляем файлы и т.д.
- останавливаем syschanges
- pfsrebuild mymodule.xzm -o new.xzm
- mkpfs new.xzm ./syschanges-дата/new -o обновленный-модуль.xzm
$ lsМеня это интересует в связи с вопросом удобства обновления системы.
00-kernel.xzm 10-core.xzm 35-x-plasma.xzm 42-x-network.xzm 45-x-java.xzm
01-drivers.xzm 20-x-base.xzm 41-x-utilities.xzm 43-x-multimedia.xzm 88-magos.xzm
Починил вроде. В v4.У меня pfsrebuild (v4) не работает без pfs.cfg. Брал здесь https://github.com/pfs-utils/pfs-utils-cli/blob/v4/project-files/usr/bin/pfsrebuild
Работает.
У меня pfsrebuild (v4) не работает без pfs.cfg.Оказывается работал без pfs.cfg, но надо было перезагрузиться. Не знаю с чем это связано. Положил pfsrebuild в rootcopy, перезагрузился - ok.
подключен модуль где есть эти папки и они принадлежат другому пользователю.Профиль браузера в ~/, там могут быть только права live, какие бы модули там не перекрывали.
С правами уже была проблема - не помню в каком скрипте pfs-util. Вроде , починили - надо там посмотреть
Вроде это (http://forum.puppyrus.org/index.php?topic=19562.msg137006#msg137006)
Скорее всего ситуация следующаяя. Сверху модуля который вы пересобираете подключен модуль где есть эти папки и они принадлежат другому пользователю. Проверьте права на папки в системе, а не в исходном модуле.С pra6408-1904 кажется становится понятно. В 083-palemoon-profile-ru-28.4.0_any-sf01 помимо основного профиля есть еще папка nobody с этим же профилем, но с другими правами.
А права в системе и в исходном модуле не сравнивали?Скрины.
Косяк проявляется и в магос. Tar по непонятной причине меняет пользователя на папки при этом сохраняя на файлы. Чет не гуглится как лечить.Подвижки есть или заброшено?
Есть вариант заменить на цикл с cp -a --parent, но это однозначно приведет к тормозам. Возможно весьма существенным.
Там tar чудит, а tar я чинить не умею, а значит все переписыватьЗнаю, что sfs проверяет свои скрипты командой sh -vx (http://forum.puppyrus.org/index.php?topic=21970.msg160732#msg160732).
cpio -pd ${buildir} < "$fileslist"Тоже самое:
..zilla/firefox/5jsgis9h.default-release % ll |grep root
drwxr-xr-x 2 root root 147 мая 7 13:40 bookmarkbackups
drwxr-xr-x 3 root root 75 мая 7 13:40 datareporting
drwxr-xr-x 3 root root 30 мая 7 13:40 gmp-gmpopenh264
drwxr-xr-x 2 root root 47 мая 7 13:40 mediacapabilities
drwxr-xr-x 2 root root 36 мая 7 13:40 security_state
drwxr-xr-x 5 root root 112 мая 7 13:40 weave
Опишите как словить косяк.Проще наверно проверять в prar1912-x86_64-05.iso, раз уже есть навыки его использования. Может в PRA есть отличия от MagOS.
bookmarkbackups так и остались.Для чистоты эксперимента загрузил prar1912-x86_64-05.iso, результат на скрине.
#!/bin/sh
#rebuild loaded or installed pfs
#VERSION 4.2
if [ -f $(dirname $0)/pfs ] ; then
. $(dirname $0)/pfs
else
. $(which pfs) || exit 13
fi
#help
HLP(){
echo "Usage: $(basename "$0") <PACKAGE> <args for mkpfs>"
exit 1
}
case "$1" in
"" | -h | --help) HLP ;;
"-"*[A-Za-z]*) echo "$(basename "$0"): invalid option -- $1" ; HLP ;;
esac
allow_only_root
package_name=$(basename ${1%.$EXT})
bundle=$(aufs-n --hidetop --raw '$bundle' |grep "$package_name" |tail -n1)
shift
fileslist="${PFSDIR}/install/${package_name}/pfs.files"
[ -f $fileslist ] || fileslist="${PFSDIR}/mount/${package_name}/pfs.files"
if [ -n "${bundle}" -o -f ${fileslist} ] ; then
buildir="./build_${package_name}/${package_name}"
mkdir -p "$buildir"
[ -f ${fileslist} ] || mklist ${bundle} / ${package_name}
cp -fax ${bundle}/* "${buildir}/"
cpio -pud ${buildir} < "$fileslist"
# --nopfs parameter - make build dir and exit
if echo "$@" | grep -q "\-nopfs" ; then
rm -rf ./${package_name} && mv -f ${buildir} ./
else
mkpfs ${buildir} -o ${package_name}.$EXT $@
exitmsg "can't create module" $?
fi
rm -rf ./build_${package_name}
else
echo "Package \"$package_name\" is not installed!" >&2; #exit 1
fi
exit 0
..zilla/firefox/5jsgis9h.default-release % ll |grep dr
drwx------ 2 live live 1005 апр 7 15:11 bookmarkbackups
drwx------ 5 live live 140 мар 8 13:08 browser-extension-data
drwx------ 3 live live 54 мая 11 13:09 crashes
drwxr-xr-x 3 live live 75 мая 11 13:09 datareporting
drwxr-xr-x 3 live live 564 мая 11 13:09 extensions
drwx------ 2 live live 3 ноя 22 21:22 features
drwx------ 2 live live 3 авг 21 2019 gmp
drwxr-xr-x 3 live live 30 ноя 25 12:58 gmp-gmpopenh264
drwx------ 2 live live 47 мая 11 13:09 mediacapabilities
drwx------ 2 live live 3 мая 27 2019 minidumps
drwxr-xr-x 2 live live 36 мая 11 13:09 security_state
drwx------ 2 live live 3 апр 7 22:19 sessionstore-backups
drwxr-xr-x 5 live live 64 дек 14 04:42 storage
drwxr-xr-x 6 live live 124 мая 11 13:09 weave
Но подмодуль пересобрать не получится.Это плохо, многие модули составные. Как пример, basilisk-gtk3-p-2020.03.11_64-au01.pfs из PRA-roll-1912-5:
% sudo pfsinfo basilisk-gtk3-p-2020.03.11_64-au01.pfs
basilisk
hunspell-ru
libffmpeg
sfs-get-dep-gtk3
z-ff
Это плохо,Можно извлечь нужный подмодуль, подключить его и уже после пересобрать. Ну или целиком контейнер пересобирать, должно сработать.
$ pfsinfo firefox-bin-gtk3-p-77.0.0_64-kr01.pfs
apulse-0.1.10-1-x86_64
firefox-bin-ru
firefox-pra-bin-2018.06-09-x86_64
cpio: /opt/firefox/browser/blocklist.xml: не удаётся stat: Нет такого файла или каталога
cpio: /opt/firefox/browser/chrome.manifest: не удаётся stat: Нет такого файла или каталога
cpio: /opt/firefox/chrome.manifest: не удаётся stat: Нет такого файла или каталога
cpio: /opt/firefox/libfreeblpriv3.chk: не удаётся stat: Нет такого файла или каталога
cpio: /opt/firefox/libnssdbm3.chk: не удаётся stat: Нет такого файла или каталога
cpio: /opt/firefox/libnssdbm3.so: не удаётся stat: Нет такого файла или каталога
cpio: /opt/firefox/libsoftokn3.chk: не удаётся stat: Нет такого файла или каталога
В каких-то случаях это может быть критичным, но вычислять это вряд ли получится.
live@lfd10 $ cat youtube-dl-update
#!/bin/ash
#201222 sfs
#sudo wget --no-check-certificate https://yt-dl.org/downloads/latest/youtube-dl -O youtube-dl
#sudo chmod 755 youtube-dl
inet-test 5 || exit 1
which youtube-dl || exit 1
head -1 `which youtube-dl` |grep python || exit 1
sudo youtube-dl -U |grep "youtube-dl is up-to-date" && exit
sudo sed -i 's#!/usr/bin/env python$#!/usr/bin/env python2#' `which youtube-dl`
p="`losetup |awk '/youtube-dl/ {print $6}'`"
sudo mv "$p" "$p.old"
v="`youtube-dl --version`"
p1="`dirname "$p"`/youtube-dl-${v}_any-au01.pfs"
sudo pfsrebuild "$p" -o "$p1"
[ -f "$p1" ] && ntf -i "`basename "$p"`" "обновлен до v.$v" || ntf -a "Проблемы с обновлением" "$p "
live@lfd10 ..on2+youtube-dl-2021.05.16_any-au01.pfs $ find .
.
./etc
./etc/xdg
./etc/xdg/autostart
./etc/xdg/autostart/youtube-dl-update.desktop
./start.sh
./usr
./usr/bin
./usr/bin/youtube-dl
./usr/share
./usr/share/pixmaps
./usr/share/pixmaps/youtube-icon.svg
./var
./var/lib
./var/lib/pacman
./var/lib/pacman/local
./var/lib/pacman/local/youtube-dl-www-2020.11.12-1
./var/lib/pacman/local/youtube-dl-www-2020.11.12-1/desc
./var/lib/pacman/local/youtube-dl-www-2020.11.12-1/files
править youtube-dl-update, чтобы проверялась запись sfs-get-dep python2 перед окончательной сборкой.Для данного случая самое простое (но самое костыльное) добавить перед pfsrebuild
sudo echo "sfs-get-dep python2" >/start.sh
переносить start.sh в какую-то именную папку для каждого модуля.использовать не хочется - придется по всем скриптам искать start.sh.
скрипты для автостарта кладутся в папку из которой они будут запущены.при старте системы тожеУ нас в этих скриптах в основном - подключение зависимых модулей. При старте системы это тоже проверяется парсингом этих же start.sh