Як я можу відкрити .pkg файл вручну?


60

Деякі програми надходять у файли .pkg та просять у вас адміністраторського пароля, навіть якщо все, що вони роблять, - це скопіювати двійковий файл у / Applications.

Мені подобається мати свої програми в ~ / Програмах, і я не люблю давати адміністративні дозволи на все, що не є від материнства.

Чи є спосіб я вручну відкрити .pkg файл і витягнути програму? У «Інструментах для розробників» є PackageMaker, але це, схоже, не робиться (це все-таки дало певний вихід, який змушує мене думати, що в інсталяторі насправді немає сценаріїв та інших фрагментів, лише додаток).


2
Спробуйте unpkg .
lhf

Відповіді:


67

Якщо ви клацніть правою кнопкою миші та натисніть Показати зміст пакета, ви отримаєте кілька файлів у папці Зміст. (Примітка. Якщо ви не бачите Показати зміст пакета, вам потрібно буде відкрити Terminal.app і запустити pkgutil --expand mystubbornpackage.pkg path/to/expand)

Один - файл BOM (купюра матеріалів), який перетворюється на квитанцію, яку ви можете використовувати для видалення програми. Цей файл містить маніфест про все, що встановить пакунок, і куди його потрібно встановити; щоб прочитати цей файл, використовуйте команду lsbom .

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

Крім того, усі пакети можуть записувати повідомлення, якщо ви натискаєте Cmd-L (або вибираєте опцію " Журнал інсталятора " у меню " Вікно") , ви можете переглядати їх, коли вони створені. Це може дати вам уявити, які додаткові речі він встановлюється, на принаймні, це ще трохи інформації, якщо ви не довіряєте пакет.


3
Я не отримую "Показати зміст пакета" у меню правою кнопкою миші.
Тіло

3
@Thilo Якщо у вас немає можливості "Показати вміст пакета", файл pkg був створений як плоский файл. Apple представила pkg's плоский стиль пару років тому
ім'я користувача

@username: Тож як їх відкрити?
Тіло

10
pkgutilзробимо це. Ви можете розширити його за допомогою, pkgutil --expand file.pkg path_to_expandі він перетворить його в пакет стилю каталогу.
Зал Меттью

@username, Що означає "плоский" навіть?
Печер'є

34

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


3
+1. Завдяки цьому я міг швидко переконатися, що там є лише бінарний додаток, ніяких інших загальносистемних речей.
Тіло

7

Якщо ви не довіряєте інсталятору достатньо, щоб дати адміністративні дозволи на встановлення, то чому ви довіряєте двійковій програмі в / програмах?

Pacifist дозволить вам шукати файли пакунків. Це не обов'язково просто дозволяє "витягнути бінарне".


1
Я також не довіряю бінарним. Я хочу ніколи не надавати йому адміністративних дозволів (що це все одно не потрібно).
Тіло

3
Поки ви не запускаєте додаток від будь-якого користувача, який має права адміністратора, ваша довіра буде підтримуватися. Не забувайте, що навіть додаток на рівні користувачів може надсилати запити в процесі адміністрування, тому для запуску програм, яким ви насправді не довіряєте, потрібно багато працювати.
bmike

@ghoppe. Це тому, що параметри за замовчуванням часом не оптимізовані для користувачів, а не для творців додатків. Наприклад, замість того, щоб встановлювати всі непотрібні установки, які надходять за замовчуванням, я можу вибрати лише ті файли, які є суттю. Наприклад, під час завантаження Mysql / Java / etc.
Pacerier

4

Можна також спробувати,

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

АБО

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

На жаль, це не спрацювало. Він все ще наполягав на "Встановлення в базовий шлях /", а потім запитав пароль адміністратора.
Тіло

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. Потім ви можете вручну скопіювати ці файли в місця призначення, якщо бажаєте.


3
Іншими словами cd ~/Desktop; cp Package.pkg/Contents/Archive.pax.gz .; gunzip -v Archive.pax.gz; pax -r -f Archive.pax. Не потрібно описувати все на цьому рівні деталей.
Лрі

6
Лрі, я дав таку кількість деталей, щоб користувачі на будь-якому рівні досвіду могли відслідковувати її та мати успіх. Зрозуміло, ваша криптовалютна версія дозволила б досягти однакових результатів. Однак інші користувачі, які читають це в майбутньому, які, можливо, не знайомі з командним рядком, можуть бути безнадійно втрачені.
stargood

1

pkgutil --expand не вдалося зі мною наступною помилкою:

Error encountered while creating .. Error 17: File exists

Але мені вдалося витягти файли за допомогою xar:

xar -xvf foo.pkg


1
це працює для мене. але, мабуть, якщо ви даєте pkgutil каталог відсутності в якості місця призначення, що робить помилку 17 помилкою.
Майкл

1

Найкращим інструментом для перевірки файлів пакунків є підозрілий пакет . Це також дозволяє копіювати файли з пакета.

Він не тільки надасть всю необхідну інформацію в додатку, але й встановить штрих Quick Look, тому просто вибір файлу пакета та натискання на пробіл відкриває вікно з найнеобхіднішою інформацією.


0

Unarchiver може зробити це; це зробить так само, як pkgutil --expandза допомогою перетягування та перетягування. Це краща заміна для Apple Archive Utility.app в будь-якому випадку.


0

UnArchiver зробив свою справу .

Встановити UnArchiver, відкрити UnArchiver; поки він відкритий - двічі клацніть на цьому примхливомуMAMP_MAMP_3.5.pkg

Дотримуйтесь вказівок, щоб встановити MAMP.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.