В этой серии переместимся в лабораторию, где будем препарировать пакеты.
Ежели один человек чего собрал, другой завсегда разобрать может .. ©
В качестве подопытного кролика выберем ПО компании Yota для Mac OS X.
Комплект уже скачан с сайта, называется YotaAccessE100_MACOSX_1.0.3_BK15.zip и находится в ~/Downloads
Распакуем архив средствами системы и в ~/Downloads у нас появится YotaAccessE100_MACOSX_1.0.3_BK15.pkg - это и есть подопытный кролик.
(*) Пакеты могут существовать в двух видах - сжатом (одним файлом) и каталогом.
В обеих случаях они имеют расширение .pkg (.mpkg) и на первый взгляд неразличимы. Со второго взгляда это определить легко, достаточно вызывать контекстное меню файндера на пакете.
Если среди пунктов меню есть "Показать содержимое пакета" - это каталог. Если такого пункта нет - это сжатый тип.
В нашем случае Yota поставляет разжатый пакет.
Если бы он был сжат, его можно было-бы развернуть в каталог expanded командой
pkgutil --expand YotaAccessE100_MACOSX_1.0.3_BK15.pkg expanded
То-же самое можно проделать при помощи утилиты-архиватора xar
xar -xf YotaAccessE100_MACOSX_1.0.3_BK15.pkg
Заглянем в содержимое.В контексте установки и удаления программ нас будут интересовать в первую очередь файлы
- Archive.bom
- Archive.pax.gz
- Сценарии установки (черные иконки скриптов)
- preinstall
- postinstall
Bom-файл (Накладная. Bill of material) содержит информацию о файлах, которые нужно установить или удалить, а именно
- Наименование файла включая каталог
- Права доступа к файлу
- Размер
- Время модификации
- Контрольную сумму
- Наличие и перечень ссылок на уровне файловой системы
- …
Вычитать необходимую информацию из накладной поможет команда lsbom
lsbom Archive.bom
Файл Archive.pax.gz и есть архив, внутри которого хранятся файлы, предназначенные для установки из пакета. Можно запустить распаковку прямо из файндера, а можно эту операцию произвести в терминале
gzcat Archive.pax.gz | cpio -i
В любом случае в текущем каталоге появится полная структура файлов, как они должны будут разместиться в системе после установкиИ, наконец, сценарии preinstall и postinstall предназначены для подготовки условий к установки и дополнительных работ после нее, что и явствует из их наименований.
Сценарии обычно пишутся на одном из скриптовых языков, т.е. являются обычными тестовыми файлами и их содержимое доступно для изучения в обычном текстовом редакторе
Перетяните иконку скрипта postinstall на иконку TextEdit. Редактор может немного поупрямится, но в итоге покажет содержимое файла
#!/bin/bash
touch /System/Library/Extensions
chown root:wheel /System/Library/Extensions
chown root:wheel /System/Library
chown root:wheel /System
chown root:admin "/"
chmod 1775 /
chown -R root:wheel /System/Library/Extensions/SamsungUSBmWiMAXDriver.kext
chown -R root:wheel /System/Library/Extensions/SamsungWiMAXInstallDisk.kext
#kextload /System/Library/Extensions/SamsungUSBmWiMAXDriver.kext
#kextload /System/Library/Extensions/SamsungWiMAXInstallDisk.kext
#kextcache -l -m /System/Library/Extensions.mkext /System/Library/Extensions
#kextcache -k /System/Library/Extensions
exit 0
В моих краях Yota не произрастает, мой интерес к этому изделию чисто академический, но вот выделенная мной цветная часть вызывает у меня искреннее негодование.
Продолжение, скорее всего, воспоследует...




1 коммент.:
Офигенно :) Давно хотел узнать, как прочитать эти архивы, оказывается, всё перед носом (впрочем, как обычно в маке) :)
Отправить комментарий