Home

понедельник, 19 октября 2009 г.

Установка и удаление приложений IV

Приключения продолжаются.
В этой серии переместимся в лабораторию, где будем препарировать пакеты.



Ежели один человек чего собрал, другой завсегда разобрать может .. ©


В качестве подопытного кролика выберем ПО компании 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) содержит информацию о файлах, которые нужно установить или удалить, а именно

  1. Наименование файла включая каталог
  2. Права доступа к файлу
  3. Размер
  4. Время модификации
  5. Контрольную сумму
  6. Наличие и перечень ссылок на уровне файловой системы
Вычитать необходимую информацию из накладной поможет команда 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 коммент.:

Roman комментирует...

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

Отправить комментарий