Как я могу открыть файл .pkg вручную?

60

Некоторые приложения входят в файлы .pkg и запрашивают у вас пароль администратора, даже если все, что они делают, это копируют двоичный файл в / Applications.

Мне нравится, когда мои приложения находятся в ~ / Applications, и я не люблю давать административные разрешения на все, что не от материнства.

Есть ли способ, которым я могу вручную открыть файл .pkg и вытащить приложение? В Инструментах для разработчиков есть PackageMaker, но, похоже, он этого не делает (он действительно выдает какой-то вывод, из-за которого я думаю, что на самом деле в установщике нет сценариев или других частей, кроме приложения).

Тило
источник
2
Попробуйте unpkg .
LHF

Ответы:

67

Если щелкнуть по нему правой кнопкой мыши и выбрать « Показать содержимое пакета», вы получите несколько файлов в папке «Содержимое». (Примечание: если вы не видите Показать содержимое пакета, вам нужно открыть Terminal.app и запустить pkgutil --expand mystubbornpackage.pkg path/to/expand)

Одним из них является файл спецификации (ведомости материалов), который превращается в квитанцию, которую можно использовать для удаления приложения. Этот файл содержит манифест всего, что будет установлено пакетом и куда; чтобы прочитать этот файл, используйте команду lsbom .

Большинство пакетов (я использую Office 2008 здесь) также имеют файл Archive.pax.gz, который содержит все, что установщик будет перемещать в различные папки, как указано в файле спецификации. Большинство приложений, кажется, имеют .app в этом архиве, хотя перетаскивание его в / Applications может оставить его без фреймворков, в которых он должен работать; поэтому вам нужно выяснить, какие другие файлы ему нужны и где они нужны, чтобы заставить его работать.

Кроме того, все пакеты могут регистрировать сообщения, если вы нажмете Cmd-L (или выберете опцию « Installer Log» в меню « Окно» , вы сможете просматривать их по мере их создания. Это может дать вам представление о том, какие дополнительные компоненты он устанавливает, в по крайней мере, это немного больше информации, если вы не доверяете пакету.

Мэтью Холл
источник
3
Я не получаю «Показать содержимое пакета» в контекстном меню.
Тило
3
@Thilo Если у вас нет опции «Показать содержимое пакета», файл pkg был создан как плоский файл. Apple представила pkg в плоском стиле пару лет назад
имя пользователя
@username: Так как мне открыть их?
Тило
10
pkgutilсделаю это. Вы можете расширить его, используя, pkgutil --expand file.pkg path_to_expandи он преобразует его в пакет стилей каталогов.
Мэтью Холл
@username, что вообще значит "плоский"?
Pacerier
34

В дополнение к тому, что сказал Мэтью Холл, вы также можете нажать Cmd-I в приложении Installer, чтобы увидеть, какие файлы установщик установит и где.

CajunLuke
источник
3
+1. С этим я мог быстро проверить, что там есть только двоичный файл приложения, никаких других системных вещей.
Тило
7

Если вы недостаточно доверяете установщику, чтобы предоставить административные разрешения для установки, то почему вы доверяете бинарному файлу в / Applications?

Pacifist позволит вам заглянуть в файлы пакета. Это не обязательно позволяет вам «вытащить двоичный файл».

ghoppe
источник
1
Я тоже не доверяю бинарному. Я никогда не хочу давать ему административные разрешения (которые в любом случае не нужны).
Тило
3
До тех пор, пока вы не запустите приложение от любого пользователя, имеющего права администратора, ваше доверие будет поддержано. Не забывайте, что даже приложение уровня пользователя может отправлять запросы от процессов уровня администратора, поэтому запускать приложения, которым вы на самом деле не доверяете, очень много работы.
bmike
@ghoppe, это потому, что настройки по умолчанию иногда оптимизируются не для пользователей, а для создателей приложений. Например, вместо установки всех ненужных инсталляций по умолчанию, я могу выбрать только те файлы, которые имеют существенное значение. Например, при загрузке Mysql / Java / и т. Д.
Pacerier
4

В качестве альтернативы вы можете попробовать,

sudo installer -pkg ~/Downloads/packagename.pkg -target ~/Applications/

ИЛИ ЖЕ

installer -pkg ~/Downloads/packagename.pkg -target ~/Applications/
karmatic
источник
Это не сработало, к сожалению. Он по-прежнему настаивал на «Установка по базовому пути /», а затем попросил пароль администратора.
Тило
1
Можно установить образ диска, созданный с чем-то вроде, hdiutil create -size 200m -fs HFS+ -volname Scratch scratch.dmgа затем скопировать файлы в места, которые вы предпочитаете. К сожалению, вам все еще нужен sudo для запуска программы установки.
MJS
2
  1. После того, как вам удастся открыть пакет, найдите файл Archive.pax.gz, который был упомянут ранее.

  2. Создайте новую пустую папку на рабочем столе, назвав ее как хотите. Я обычно называю их «xxxx» или «zzzz» и т. Д., Чтобы потом было легче печатать.

  3. Вы можете перетащить копию файла Archive.pax.gz в эту новую папку «xxxx» на рабочем столе.

    Если файл находится внутри носителя только для чтения, вы можете просто перетащить его в папку «xxxx» без ключа Option, чтобы создать копию.

  4. Теперь откройте Terminal.app и в командной строке перейдите в новый каталог «xxxx» и перечислите содержимое каталога, чтобы убедиться, что ваш файл Archive.pax.gz находится там:

    cd ~/Desktop/xxxx
    ls -al
    
  5. Теперь нужно ввести две простые команды:

    gunzip -v Archive.pax.gz
    

    Gzip скажет вам, что он заменил «Archive.pax.gz» на «Archive.pax»). Теперь снова перечислите содержимое каталога, чтобы подтвердить это.

    pax -r -f Archive.pax
    

    (Вы должны отделиться -rи -f, как -rfне будет работать)

  6. Наконец, снова перечислите содержимое каталога с помощью ls -al. В дополнение к вашему файлу Archive.pax вы теперь увидите иерархию каталогов, вероятно, содержащую один или несколько каталогов.

    Файлы в этой иерархии каталогов покажут вам, где установщик OS X установит файлы в вашей системе, как если бы каталог «xxxx» был корневым каталогом «/».

  7. Затем вы можете вручную скопировать эти файлы в их места назначения, если хотите.

stargood
источник
3
Другими словами cd ~/Desktop; cp Package.pkg/Contents/Archive.pax.gz .; gunzip -v Archive.pax.gz; pax -r -f Archive.pax. Вам не нужно описывать все на этом уровне детализации.
Lri
6
Лри, я привел такое количество деталей, чтобы пользователи с любым уровнем знаний могли следить за ним и добиваться успеха. Конечно, ваша загадочная версия даст те же результаты. Однако другие пользователи, читающие это в будущем, которые, возможно, не знакомы с командной строкой, могут быть безнадежно потеряны.
Stargood
1

pkgutil --expand не удалось для меня со следующей ошибкой:

Error encountered while creating .. Error 17: File exists

Но мне удалось извлечь файлы с помощью xar:

xar -xvf foo.pkg

gregschlom
источник
1
это работает для меня. но, очевидно, если вы укажете pkgutil каталог несуществования в качестве места назначения, которое устранит ошибку 17.
Майкл
1

Лучшим инструментом для проверки файлов пакетов является Подозрительный пакет . Это также позволяет копировать файлы из пакета.

Он не только предоставит всю необходимую вам информацию в приложении, но и установит плагин Quick Look, поэтому, просто выбрав файл пакета и нажав клавишу пробела, вы увидите окно с самой важной информацией.

Тони Уильямс
источник
0

Unarchiver может сделать это; он будет делать то же самое, pkgutil --expandно с использованием перетаскивания. В любом случае, это лучшая замена Apple Archive Utility.app.

Куинн Комендант
источник
0

UnArchiver сделал свое дело.

Установите UnArchiver, откройте UnArchiver; пока он открыт - дважды щелкните на этом надоедливомMAMP_MAMP_3.5.pkg

Следуйте инструкциям по установке MAMP.

Blll
источник