Различия

Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.

Ссылка на это сравнение

pr218:pfs [2016/02/01 11:32] (текущий)
Строка 1: Строка 1:
 +====== pfs-utils. Утилиты для работы с пакетами дистрибутива PuppyRus ======
 +В рамках работы над дистрибутивом [[http://puppyrus.org|PuppyRus]] был разработан новый формат пакетов: **PFS**.
 +
 +Преимущество нового типа пакетов в том, что они соединяют в себе все плюсы PET-пакетов и SFS-модулей.
 +Все файлы в пакете учтены. Возможна сборка и разборка базового модуля без сборочных сред или подключение к системе выше или ниже базового модуля. 
 +
 +Ограниченная поддержка **.pet** и **.sfs** оставлена для совместимости.
 +
 +[[http://forum.puppyrus.org/index.php/topic,12727.0.html|Обсуждение на форуме PuppyRus + Скачать]] (пакет в стадии тестирования).
 +====== Спецификация ======
 +
 +  *Расширение файла - **.pfs**
 +  *Файловая система внутри файла - //SquashFS 4//
 +  *Тип сжатия данных - **xz**  
 +
 +===== Структура файловой системы внутри пакета =====
 +От корня <</>>
 +  * (Каталоги и файлы программы)
 +  * etc
 +      * packages
 +          * mount
 +              * [Название_пакета]
 +                  * pfs.files      (Список файлов, относящихся к пакету)
 +                  * pfs.dirs.empty (Список пустых каталогов в пакете. Необязательный)
 +                  * pfs.depends    (Список зависимостей. Необязательный)
 +                  * pfs.specs      (Название программы, версия и т.д. Необязательный)
 +                  * pfs.md5sums    (Хэш-суммы всех файлов в пакете. Необязательный)
 +
 +В одном файле **.pfs** может быть включено несколько пакетов, в этом случае в каталоге <</etc/packages/mount>> должно быть несколько каталогов <<[Название_пакета]>>.
 +При установке пакетов соответствующие каталоги [Название_пакета] перемещаются из каталога <</etc/packages/mount>> в каталог <</etc/packages/install>>.
 +====== Графические скрипты (GUI) ======
 +==== open_pfs ====
 +
 +Основной скрипт, позволяет подключить, отключить или установить пакеты.
 +
 +Если в подключаемом **.pfs** есть файл <</tmp/.pfs/.command>>, содержащий команду запуска программы (например <<firefox>>) - то после подключения пользователю будет предложено запустить эту команду.
 +
 +После подключения или установки пакетов выводится список отсутствующих зависимостей.
 +====uninstall_pfs ===
 +Удаляет выбранные пользователем пакеты.
 +
 +
 +==== manager_pfs ====
 +Показывает список всех (постоянно подключённых, временно подключённых и установленных) пакетов в системе.
 +==== open_pet ====
 +Скрипт позволяет установить PET-пакет, либо конвертировать его в PFS.
 +
 +==== loader_fs ====
 +Позволяет подключить к корневой файловой системе AUFS файлы **SFS**, **2**/**3**/**4fs** и разделы **Ext2**/**3**/**4** (GUI к //pfsload// | //sfsload// | //extload//).
 +
 +
 +----
 +
 +
 +==== editor_pfs ====
 +
 +Редактор файлов PFS (GUI к //pfsmerge//).
 +== Принцип работы скрипта: ==
 +  *Пользователь указывает отдельные PFS-файлы и/или каталог с PFS-файлами.
 +  *Скрипт читает все отдельные файлы + все файлы каталога и составляет полный список включённых в них пакетов.
 +  *Пользователь снимает флажки с каких-то пакетов, если нужно.
 +  *Скрипт собирает PFS из всех пакетов (кроме тех, с которых были сняты флажки).
 +
 +
 +
 +==== extractor_pfs ====
 +Скрипт позволяет извлечь один или несколько пакетов из файла **.pfs** (GUI к //pfsextract//).
 +
 +====== Консольные команды ======
 +
 +
 +==== pfsload ====
 +Подключает файл **.pfs** к корневой файловой системе AUFS.
 +
 +Также могут быть подключены **SFS**, **2**/**3**/**4fs**, разделы **Ext2**/**3**/**4** и каталоги на таких разделах к AUFS (скрипты **sfsload**, **extload**, **dirload** в настоящий момент являются ссылками на **pfsload**).
 +
 +== Использование: ==
 +  ***pfsload /file.pfs**
 +
 +== Параметры (ключи): ==
 +  ***-u** / **-.-upper** - монтирование в верхний слой AUFS (по умолчанию для **.pfs**).
 +  ***-l** / **-.-lower** - монтирование в нижний слой AUFS (по умолчанию для других типов файлов или ФС).
 +==== pfsunload ====
 +Отключает файл от корневой файловой системы AUFS.
 +
 +== Использование: ==
 +  ***pfsunload /file.pfs**
 +
 +==== pfsinstall ====
 +Устанавливает пакеты PFS в корневую файловую систему.
 +
 +
 +== Использование: ==
 +  ***pfsinstall /file.pfs** - установить все пакеты из <</file.pfs>> в корневую файловую систему.
 +  ***pfsinstall /file.pfs -p pack_1 pack_2** - установить только пакеты <<pack_1>> и <<pack_2>> в корневую файловую систему.
 +
 +== Параметры (ключи): ==
 +  ***-u** / **-.-upper** - установка с заменой существующих файлов (по умолчанию).
 +  ***-l** / **-.-lower** - установка без замены существующих файлов.
 +
 +==== pfsuninstall ====
 +Удаляет пакет из корневой файловой системы (файлы, используемые несколькими пакетами не будут удалены, пока хотя бы один из этих пакетов установлен или подключён).
 +
 +==== pet2pfs ====
 +Конвертирует **.pet** в пакет **PFS**.
 +==== petinstall ====
 +Устанавливает **.pet** в режиме совместимости с **PFS**.
 +==== pfsinfo ====
 +При запуске **pfsinfo /file.pfs** выводит список пакетов в указанном файле.
 +
 +При запуске без параметров выводит список всех пакетов в системе.
 +== Параметры (ключи): ==
 +  ***-m** / **-.-mount** - выводить только подключённые пакеты.
 +  ***-i** / **-.-install** - выводить только установленные пакеты.
 +
 +----
 +
 +==== mkpfs ====
 +
 +Создаёт **.pfs** пакет из каталога (аналогично mksquashfs). 
 +Автоматически создаёт файлы **//pfs.files//**, **//pfs.specs//** и **//pfs.dirs.empty//** (при наличии внутри пакета пустых каталогов).
 +
 +== Использование: ==
 +
 +  ***mkpfs** - создаст **.pfs** из текущего каталога
 +  ***mkpfs /catalog**  - создаст **.pfs** из каталога <</catalog>>.
 +
 +== Параметры (ключи): ==
 +
 +  ***-p** / **-.-name** - задаёт название пакета (по умолчанию соответствует названию каталога).
 +  ***-o** / **-.-out-file** - указывает название выходного файла **.pfs**.
 +  ***-m** / **-.-md5** - создать необязательный файл **//pfs.md5//**.
 +  ***-n** / **-.-not-dirs-empty** - не создавать файл **//pfs.dirs.empty//**.
 +  ***-no-progress** - не показывать строку прогресса.
 +
 +==== 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>>).
 +
 +== Параметры (ключи): ==
 +
 +  ***-.-cut pack_1 [pack_2 pack_3]** - удаляет указанные пакеты из выходного файла **.pfs**. (Обратите внимание! Параметр **-.-cut** всегда должен быть в строке запуска последним).
 +  ***-.-clean** - удаляет из выходного файла **.pfs** все файлы и каталоги, которые не входят в состав пакетов.
 +  ***-no-progress** - не показывать строку прогресса.
 +
 +Можно объединять до 126 **.pfs** за один проход (если не указывать при загрузке параметр ядра //max_loop// с меньшим значением). Это ограничение AUFS. При большем количестве пакетов рекомендуется объединить их в файлы по 126 пакетов, потом объединить эти файлы.
 +
 +Наличие пакетов с одинаковыми названиями в объединяемых файлах **.pfs** недопустимо. При наличии одинаковых пакетов скрипт выведет их список и завершит работу.
 +
 +
 +==== pfsextract ====
 +Извлекает отдельные пакеты из многопакетных файлов **.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>>).
 +
 +== Параметры (ключи): ==
 +  ***-no-progress** - не показывать строку прогресса.
 +
 +
 +----
 +
 +==== Подключение PFS c копированием в RAM ====
 +Перед подключением можно скопировать пакет на RAM-диск.
 +
 +Преимущества:
 +  *Ускорение работы (не во всех случаях).
 +  *Экономия батареи ноутбука.
 +  *Возможность размонтировать раздел.
 +Недостатки:
 +  *Увеличивается загрузка оперативной памяти.
 +  *Требуется больше времени для подключения (не всегда).
 +Рекомендуется для компьютеров с RAM 500мб или более.
 +
 +==== pfsramload ====
 +Копирует файл **.pfs** в оперативную память компьютера и подключает его.
 +
 +== Использование: ==
 +  ***pfsramload /file.pfs**
 +
 +== Параметры (ключи): ==
 +  ***-u** / **-.-upper** - монтирование в верхний слой AUFS (по умолчанию).
 +  ***-l** / **-.-lower** - монтирование в нижний слой AUFS.
 +
 +Для отключения файла используется скрипт **pfsunload**. После отключения нужно очистить оперативную память командой **pfsramfree**.
 +
 +[[http://forum.puppyrus.org/index.php/topic,12819.0.html|Обсуждение на форуме]].
 +======Разрешение зависимостей (в разработке) ======
 +Поиск недостающих для работы программы библиотек
 +==== pfsdepends ====
 + 
 +Проверка зависимостей.
 +
 +  *Использование: //pfsdepends// или //pfsdepends pack1//.
 +  *По умолчанию скрипт выводит список отсутствующих зависимостей, с ключом -a/-.-all - все зависимости.
 +  *Скрипт читает файл pfs.depends в конфиг. каталоге пакета (на сегодня этот файл практически во всех пакетах отсутствует).
 +Файл необходимо создавать вручную. В файле должны быть перечислены пакеты-зависимости (один пакет - одна строка). В файле можно (и даже желательно) указывать не полное название пакета, а только часть.
 +==== pfslibslst ====
 +  *Создание каталога библиотек репозитория
 +  *Вызывается командой pfslibslst /catalog (где <</catalog>> - это каталог с файлами .pfs).
 +  *Создаёт в корне каталога файл libs.lst
 +==== mkpfsdep ====
 +  *Скрипт в процессе создания. 
 +  *Выводит список пакетов, необходимых для разрешения зависимостей подключаемого пакета