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

Автор Тема: Реализация .PFS (тестирование)  (Прочитано 204294 раз)

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

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Реализация .PFS (тестирование)
« : 25 Сентябрь 2012, 13:06:12 »
Утилиты (скрипты), реализующие работу с пакетами формата PFS.
Скрипты в стадии тестирования. Обновление: 30.11.2013 (информация).

Wiki:  Документация PFS-utils
(Докуметация составлена sfs и Zay).

Последняя версия пакета pfs-utils - здесь.
« Последнее редактирование: 28 Декабрь 2013, 14:45:55 от Zay »

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Реализация .PFS (тестирование)
« Ответ #1 : 07 Октябрь 2012, 11:11:57 »
Спецификация PFS-пакетов


Консольные команды:

mkpfs - создаёт .pfs файл из каталога, аналогично mksquashfs. Автоматически создаёт файлы pfs.files, pfs.specs (не совсем полноценный) и pfs.md5sums (только с параметром -m | --md5). Название пакета = название исходного каталога.

Использование:
mkpfs - создаст .pfs из текущего каталога
mkpfs /catalog  - создаст .pfs из каталога "/catalog".
Если добавить ключ -e ("mkpfs -e" либо "mkpfs -e /catalog") - будет создан файл pfs.dirs.empty, содержащий список пустых каталогов, которые будут созданы при установке пакета.


pfsload (+ симлинк "sfsload") - монтирует .pfs и .sfs в корень (Использование: pfsload /file.pfs).
По умолчанию подключает .pfs в верхний слой, а .sfs - в нижний. Это можно изменить параметром -u (--upper) или -l (--lower).

pfsunload (+ симлинк "sfsunload")  - размонтирует .pfs и .sfs (Использование: pfsunload /file.pfs).


pfsinstall - устанавливает .pfs в корень.

Использование:
pfsinstall /file.pfs - установит "/file.pfs" в корень.
pfsinstall /file.pfs -p pack_1 pack_2 - установит в корень только "pack_1" и "pack_2", если пакеты с такими названиями содержатся в файле "/file.pfs".


pfsuninstall - удаляет все файлы пакета (Использование: pfsuninstall pack_1). Файлы, используемые несколькими пакетами не будут удалены, пока хотя бы один из этих пакетов установлен или подключён.


pfsmerge - объединяет несколько .pfs в один файл.

Использование:
pfsmerge /catalog /outfile.pfs - соберёт все .pfs из каталога "/catalog" в один "/outfile.pfs". Вложенные в "/catalog" каталоги не просматриваются.
pfsmerge /file_1.pfs /file_2.pfs /file_3.pfs /outfile.pfs - соберёт "/file_1.pfs" "/file_2.pfs" и  "/file_3.pfs" в один "/outfile.pfs".
Допустимо смешанное использование (например "pfsmerge /сatalog_1 /file_1.pfs /сatalog_2 /file_2.pfs /outfile.pfs", в этом случае "/outfile.pfs" будет собран из "/file_1.pfs", "/file_2.pfs" и всех .pfs из каталогов "/сatalog_1" и "/сatalog_2").


pfsextract - разбирает многопакетный .pfs на отдельные .pfs-файлы.

Использование:
pfsextract /file.pfs - создаст каталог "/file_pfs" с отдельными .pfs-файлами из "/file.pfs", один пакет - один файл.
pfsextract /file.pfs /catalog - создаст в каталоге "/catalog" отдельные .pfs-файлы из "/file.pfs". "/catalog" должен быть пустым.
pfsextract /file.pfs /catalog -p pack_1 pack_2 - создаст в каталоге "/catalog" отдельные .pfs-файлы только из пакетов "pack_1" и "pack_2", если пакеты с такими названиями содержатся в файле "/file.pfs" (использование "-p pack_1 pack_2" допустимо и без указания "/catalog").


Также добавлены команды mountfile и umountfile, для того чтобы была возможность легко монтировать файлы из консоли без X (графический скрипт mount_file использует эти же скрипты).




Обновил скрипты.

Монтирование .pfs/.sfs в корень и монтирование файлов для просмотра (filemnt) переписано практически с нуля.

Слияние .pfs реализовано с помощью AUFS, хотя можно было сделать иначе.
Плюсы - быстрее работает (не тратится время на копирование), и места нужно меньше.
Минус - нельзя соединить сразу очень много .pfs (соединить можно, но не за один раз).

Пока не разобрался как настраиваются ассоциации в Rox'е.

Ещё остался вопрос, как корректно разобрать файл pet.specs из .pet-пакетов.
« Последнее редактирование: 23 Январь 2013, 14:16:05 от Zay »

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re:Реализация .PFS (тестирование)
« Ответ #2 : 07 Октябрь 2012, 15:09:28 »
mkpfs - создаёт .pfs файл из каталога, аналогично mksquashfs. Автоматически создаёт файлы pfs.files, pfs.specs (не совсем полноценный) и pfs.md5sums. Название пакета = название исходного каталога.
мне бы как то по быстрому конвертнуть кучу каталогов.... Можно ли задать несколько? И куда ложится результат можно изменять?
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Реализация .PFS (тестирование)
« Ответ #3 : 08 Октябрь 2012, 11:24:29 »
Скрипты обновлены, архив перезалит!
Новые возможности + исправление найденных ошибок.

мне бы как то по быстрому конвертнуть кучу каталогов...
Может так?
Код
#!/bin/sh
find . -mindepth 1 -maxdepth 1 -type d | while read pack
  do
    mkpfs -e "${pack}"
  done
exit

И куда ложится результат можно изменять?
Теперь можно.
mkpfs -e /catalog -o /outfile.pfs

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33953
  • Репутация: +231/-0
    • PuppyRus-A
Re:Реализация .PFS (тестирование)
« Ответ #4 : 10 Октябрь 2012, 20:26:08 »
1. В open_pfs (196 строка) наверное надо psfunload?
2. Сделанный mkpfs пакет и подключенный open_pfs - не удалось отключить manager_pfs. Во "временно подкл. видно" , "откл" - неактивно
3. md5 для каждого файла в модуле - не крутовато ли? Замедляет операции, а что может случиться с файлом внутри модуля у которого md5 совпадает...
4. Не упорядочить ли заодно нотификацию: какую-нибудь заглушку типа notify-send (из Байт) и способ нотификации (gtkdialog, gxmessage, xpupsay... ) выбирает юзер?
5. pfsload - u+l - отлично. Не хватает еще -r - в память (можно вдохновиться sfsmnt  и mnt_sfs из Байт)
6. В manager_pfs "скачать" пока не работает? Когда заработает будет 1 софтина - 1 пакет? В качестве хранилища - только обычный http? Общедоступные хранилища типа one.ubuntu.com возможны? Репу как планируется формировать?

В целом мне понравилось(+). С учетом 5. -r (могу сам и доработать) готов использовать и помогать в разработке.

« Последнее редактирование: 10 Октябрь 2012, 20:55:51 от sfs »

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re:Реализация .PFS (тестирование)
« Ответ #5 : 11 Октябрь 2012, 02:10:07 »
3. md5 для каждого файла в модуле - не крутовато ли? Замедляет операции, а что может случиться с файлом внутри модуля у которого md5 совпадает...
поддерживаю. md5 в топку.
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн imp

  • cat /dev/ass > /dev/head
  • Ветеран
  • *****
  • Сообщений: 1702
  • Репутация: +49/-1
  • /dev/hands < /dev/ass
Re:Реализация .PFS (тестирование)
« Ответ #6 : 11 Октябрь 2012, 02:17:56 »
Я так понял - что-то, типа этого:

Цитата
WIM-образы имеют существенное отличие от программ сторонних производителей. Формат образов ориентирован на файлы, в то время как другие программы используют образы, сохраняющие информацию посекторно. Преимущества файлового подхода заключаются в том, что появляются широкие возможности для автономного обслуживания образа, т. е. для его подключения к любой папке и внесения в него изменений. Например, вы можете добавлять собственные файлы в образ, а также устанавливать обновления ОС, драйверы и языковые пакеты. Кроме того, в WIM-образах не содержатся сведения об аппаратной конфигурации компьютера, поэтому один и тот же образ можно развертывать на компьютеры, имеющие различное оборудование

И вычлененка любого модуля из пакета?

Имеет смысл. будем посмотреть
« Последнее редактирование: 11 Октябрь 2012, 02:20:28 от imp »
Компьютер имеет то преимущество перед мозгом, что им пользуются.

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re:Реализация .PFS (тестирование)
« Ответ #7 : 11 Октябрь 2012, 02:35:52 »
И вычлененка любого модуля из пакета?
скорее наоборот, любого пакета из модуля. Но модуль должен делаться из правильных пакетов, иначе не вычленить.
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Реализация .PFS (тестирование)
« Ответ #8 : 11 Октябрь 2012, 14:20:10 »
Архив перезалит.

Добавлен скрипт unloader_pfs.
Исправлены найденные ошибки.

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Реализация .PFS (тестирование)
« Ответ #9 : 11 Октябрь 2012, 15:10:27 »
Описание команд частично устарело (хотя основные моменты не изменились). Дополнить не получается, пост больше 4000 знаков. Немного позже перепишу с нуля.


1. В open_pfs (196 строка) наверное надо psfunload?
Уже поправил.


Активность кнопок в менеджере пакетов (manager_pfs) зависит от наличия соотв. скриптов в системе. При нажатии на кнопку "Отключить пакеты" вызывается скрипт unloader_pfs, на кнопку "Удалить пакеты" - uninstall_pfs.

3. md5 для каждого файла в модуле - не крутовато ли? Замедляет операции, а что может случиться с файлом внутри модуля у которого md5 совпадает...
Времени тратится не много, сравнительно со сжатием.
Плюсы - хэш рядом с пакетом всегда (при разделении/объединении). К тому же появляется возможность проверить, не был ли какой-либо файл из пакета заменен другим.
Убрать-то легко...

4. Не упорядочить ли заодно нотификацию: какую-нибудь заглушку типа notify-send (из Байт) и способ нотификации (gtkdialog, gxmessage, xpupsay... ) выбирает юзер?
Подумать можно.

5. pfsload - u+l - отлично. Не хватает еще -r - в память (можно вдохновиться sfsmnt  и mnt_sfs из Байт)
Может лучше это реализовать отдельным скриптом-обёрткой (копирование в память и вызов pfsload)?

6. В manager_pfs "скачать" пока не работает? Когда заработает будет 1 софтина - 1 пакет? В качестве хранилища - только обычный http? Общедоступные хранилища типа one.ubuntu.com возможны? Репу как планируется формировать?
Это я, скорее всего, не смогу реализовать. Опыта нет совершенно.
Кнопка "Скачать пакеты" вызывает отдельный скрипт, как он будет работать - зависит от того, кто возьмётся за его написание.
Логично было бы после закачки предлагать пользователю объединить пакеты (вызов pfsmerge).

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33953
  • Репутация: +231/-0
    • PuppyRus-A
Re:Реализация .PFS (тестирование)
« Ответ #10 : 11 Октябрь 2012, 15:46:50 »
3. Может ключ -md5 ?
4. Хотя бы саму заглушку использовать во всех скриптах. А с нотиф. потом разбираться.
5. Можно и так. Там кода мало. Только и при отключении надо будет обертку. Пожалуй с оберткой больше проблем...
6. Тогда надо хотя бы ТЗ сформировать.

Оффлайн imp

  • cat /dev/ass > /dev/head
  • Ветеран
  • *****
  • Сообщений: 1702
  • Репутация: +49/-1
  • /dev/hands < /dev/ass
Re:Реализация .PFS (тестирование)
« Ответ #11 : 11 Октябрь 2012, 15:46:52 »
mkpfs /usr/local

идет отработка и:

mksquashfs: invalid option

SYNTAX:mksquashfs source1 source2 ...  dest [options] [-e list of exclude
dirs/files]

Что делаю не так? Может параметры есть какие?
« Последнее редактирование: 11 Октябрь 2012, 15:51:37 от imp »
Компьютер имеет то преимущество перед мозгом, что им пользуются.

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re:Реализация .PFS (тестирование)
« Ответ #12 : 11 Октябрь 2012, 16:00:04 »
mkpfs -e /catalog -o /outfile.pfs
не хочет делать, пишет что Невозможно создать файл назначения: нет файла или каталога.
версия скрипта от 11.10.12
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Реализация .PFS (тестирование)
« Ответ #13 : 11 Октябрь 2012, 17:59:56 »
mkpfs /usr/local
Так допустимо. У меня работает.
Это на каком дистре? Может mksquashfs старый?

не хочет делать, пишет что Невозможно создать файл назначения: нет файла или каталога.
Файл будет создан программой, а каталог уже должен быть. Думаю проблема в этом.
Значение параметра -o передаётся напрямую mksquashfs'у.

Оффлайн imp

  • cat /dev/ass > /dev/head
  • Ветеран
  • *****
  • Сообщений: 1702
  • Репутация: +49/-1
  • /dev/hands < /dev/ass
Re:Реализация .PFS (тестирование)
« Ответ #14 : 11 Октябрь 2012, 18:09:17 »
Может mksquashfs старый?

Может. Я на самопальной сборке. Проверю - отпишусь.
Компьютер имеет то преимущество перед мозгом, что им пользуются.