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

Автор Тема: Настройка mc (menu, extfs)  (Прочитано 92854 раз)

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

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33989
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: Настройка mc
« Ответ #180 : 03 Февраль 2017, 11:22:09 »
По итогу доработал f2 меню
Теперь f2+u на .pfs сделает unsquashfs для одиночного.pfs и pfsextract -d для составного.pfs
f2+m на внутри папки с pfs сделает pfsmerge
f2+m на внутри папки с папками - pfsmerge-dir
Естественно нужен свежий http://mirror.yandex.ru/puppyrus/puppyrus-a64/pfs-portable/089-zz-pfs-utils-cli-170202.pfs
Давно такое хотел. Теперь перепаковывать составной.pfs удобно
menu.mc залил в шапку

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: Настройка mc
« Ответ #181 : 07 Март 2018, 09:46:09 »
А где можно посмотреть что в итоге получилось с конфигами mc?
Пробовал писать скрипт для виртуальной фс, чтоб модули как папки в mc открывались. Вроде получается. Потом вспомнил, что была такая тема у вас, глупо писать с нуля то, что уже есть :)

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33989
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: Настройка mc
« Ответ #182 : 07 Март 2018, 09:59:38 »
где можно посмотреть что в итоге получилось с конфигами mc?
http://wiki.puppyrus.org/soft/fm/mc
ftp://mirror.yandex.ru/puppyrus/2a-aarch64/pkg-repo/2a-any/pra-roll-filesystem-2017.10-03-any.pkg.tar.xz
Вообще - как с архивами, так и со сквошами в mc плохо и скриптами не поможешь
Т.е. при больших арх. и сквошах - тормоза.
Для архивов быстрее - через f2 - распаковать
Для сквошей - примонтировать
« Последнее редактирование: 07 Март 2018, 10:02:07 от sfs »

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: Настройка mc
« Ответ #183 : 07 Март 2018, 10:14:17 »
Да получается достаточно медленно, сложный разбор из сидов и авков для каждого файла. Сейчас прототип добью и наверное на питоне перепишу.
Посмотреть по enter что внутри модуля и копировать из него какой-то файл думаю удобнее чем распаковывать.
Из вики не понял у вас есть такое? Или только через f2 меню?

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33989
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: Настройка mc
« Ответ #184 : 07 Март 2018, 10:31:16 »
на питоне перепишу.
а смысл?
Посмотреть по enter что внутри модуля и копировать из него какой-то файл думаю удобнее чем распаковывать.
С большим модулем оптимально - монтировать.
У меня вход по enter сделан  в сквош initrd и пр., но в большой - медленно

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: Настройка mc
« Ответ #185 : 07 Март 2018, 10:49:19 »
Если в модуле тысячи файлов, и на каждый при обработке выхлопа unsquashfs -ll нужно несколько awk и sed. Думаю с питоном сильно быстрее открывать папку будет. Дальше без разницы уже.

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: Настройка mc
« Ответ #186 : 07 Март 2018, 10:52:58 »
Можно наверное обойтись и одним awk, только его знать надо хорошо, чтоб весь выхлоп за раз переварить.

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33989
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: Настройка mc
« Ответ #187 : 07 Март 2018, 11:03:05 »
Пишите - что на входе и что на выходе надо
может, коллективным разумом

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: Настройка mc
« Ответ #188 : 07 Март 2018, 11:43:31 »
Хорошо.  У компа буду напишу. Если без питона обойдемся может и вам пригодится.

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33989
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: Настройка mc
« Ответ #189 : 07 Март 2018, 12:05:32 »
Если без питона обойдемся может и вам пригодится.
Да. Ну или Дядя Шурик на С перепрет

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: Настройка mc
« Ответ #190 : 07 Март 2018, 15:25:55 »
Си тут явный оверхед :)
Больно не пинайте, это прототип только.
Код
!/bin/sh
 
LANG=C
umask 077
 
xzmfs_list()
{
    #DATE=`date +"%b %d %H:%M"`
    #user=`whoami`
    unsquashfs -ll  $2 |sed '1,4d' | while read fname
    do
        echo -n "$(echo $fname |awk '{print $1}') "
        echo -n "1 "
        echo -n "$(echo $fname |awk '{print $2 " " $3}' |sed 's:/: :') "
        echo -n "$(echo $fname |awk '{print $4}' |awk -F- '{print $2 "-" $3 "-" $1}') "
        echo  -n "$(echo $fname |awk '{print $5 " " $6}' |sed 's:squashfs-root/::') "
        if [ -n "$(echo $fname |awk '{print $7}')" ] ; then
echo "-> $(echo $fname |awk '{print $8}') "
else
echo ""
fi
        #echo  "$(basename $(echo $fname |awk '{print $NF}')) "
    done |sed 's/ $//'
}
 
xzmfs_copyout()
{
    unsquashfs -e $2
}
 
case "$1" in
list) xzmfs_list "$@" ;;
copyout) xzmfs_copyout "$@" ;;
*) exit 1 ;;
esac
exit 0


Чтоб заработало в mc файл надо поолжить в  /usr/lib64/mc/extfs.d/
У меня называется xzm, можно назвать иначе. Запускается секцией из /etc/mc/mc.ext
Типа такого:
# xzm
regex/\.xzm$
        Open=%cd %p/xzm://
        View=
 
Тестить то, о чем я писал можно без mc,

./xzm list модуль.xzm
Должен возвращать правильный список.




Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: Настройка mc
« Ответ #191 : 07 Март 2018, 15:34:52 »
Теперь про формат вывода. То есть кто есть правильный список.
unsquashfs -ll модуль.xzm даст вот такой вывод
Код
unsquashfs -ll ./111.xzm
Parallel unsquashfs: Using 4 processors
3 inodes (1 blocks) to write
drwxrwxrwt root/root                37 2018-03-07 10:51 squashfs-root
drwxr-xr-x root/root                37 2018-03-07 10:51 squashfs-root/222
drwxr-xr-x root/root                37 2018-03-07 10:50 squashfs-root/222/444
-rw-r--r-- root/root                 0 2018-03-07 10:50 squashfs-root/222/444/111
drwxr-xr-x root/root                26 2018-03-07 10:49 squashfs-root/222/444/555
drwxr-xr-x root/root                 3 2018-03-07 10:49 squashfs-root/222/444/555/666
lrwxrwxrwx root/root                 9 2018-03-07 10:51 squashfs-root/222/777 -> ./444/111
-rw-r--r-- root/root                 0 2018-03-07 10:51 squashfs-root/ggg

А нужено сделать из него такой:
Код
user@MagOS ~ $ ./xzm list ./111.xzm
drwxr-xr-x 1 root root 37 03-07-2018 10:51 222
drwxr-xr-x 1 root root 37 03-07-2018 10:50 222/444
-rw-r--r-- 1 root root 0 03-07-2018 10:50 222/444/111
drwxr-xr-x 1 root root 26 03-07-2018 10:49 222/444/555
drwxr-xr-x 1 root root 3 03-07-2018 10:49 222/444/555/666
lrwxrwxrwx 1 root root 9 03-07-2018 10:51 222/777 -> ./444/111
-rw-r--r-- 1 root root 0 03-07-2018 10:51 ggg
То есть по полям так:
<права> <пробел><кол-во ссылок><пробел><юзер><пробел><группа><пробел><размер><пробел><дата><пробел><время><пробел>[путь/]<имя файла>[<пробел>"->"<пробел>[путь/]<куды ссылка>]

То что в квадратных скобках не обязательно. То есть если файл в корне архива, пути перед ним нет. Последний кусок "-> [путь/]<пробел><куды ссылка>" только для ссылок.
Теперь то что удалось вычислить методом научного тыка. Формат даты отличается, и это важно ММ-ДД-ГГГГ и не иначе. В конце строк пробелов быть не должно, глючит. Количества ссылок в выхлопе unsquashfs  нет, посчитать конечно можно, но думаю можно упустить, просто пишем 1 (0 нельзя, не работает).

Вторая функция для копирования. Ее пока вообще не делал.
« Последнее редактирование: 07 Март 2018, 16:20:38 от betcher »

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8636
  • Репутация: +187/-2
  • Старый чайник
Re: Настройка mc
« Ответ #192 : 07 Март 2018, 17:33:48 »
mount -o loop и бычный ls -l попроще будет.
Моноблок 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

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: Настройка mc
« Ответ #193 : 07 Март 2018, 18:01:22 »
mount -o loop и бычный ls -l попроще будет.
Ls -l ближе к тому, что надо. Факт. Но немного смущает вот это:
This command should list the complete archive content in the following format
(a little modified ls -l listing):
То есть слегка модифицированный листинг.
Это раз. И надо рекурсивно это два. А рекурсивно ls совсем не так как надо делает. Да и по поводу скорости не уверен, что моунтить и читать будет быстрее чем просто список файлов из архива получить.
« Последнее редактирование: 07 Март 2018, 18:03:10 от betcher »

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: Настройка mc
« Ответ #194 : 07 Март 2018, 20:15:55 »
Вот еще, чтоб оценить масштаб трагедии :)
Код
user@MagOS ~ $ time unsquashfs -ll  /memory/data/from/0/MagOS/base/00-kernel.xzm > ~/test1

real    0m1,231s
user    0m0,315s
sys     0m0,903s
user@MagOS ~ $ time ./xzm list /memory/data/from/0/MagOS/base/00-kernel.xzm > ~/test1

real    6m42,896s
user    5m41,353s
sys     1m31,200s
user@MagOS ~ $