Jak mogę ręcznie otworzyć plik .pkg?

60

Niektóre aplikacje przychodzą w plikach .pkg i pytają o hasło administratora, nawet jeśli wszystko, co robią, to kopiowanie pliku binarnego do / Aplikacje.

Lubię mieć swoje aplikacje w ~ / Aplikacje i nie lubię udzielać uprawnień administracyjnych do czegokolwiek, co nie pochodzi ze statku-matki.

Czy istnieje sposób, aby ręcznie otworzyć plik .pkg i wyciągnąć aplikację? W Narzędziach programisty znajduje się PackageMaker, ale wydaje się, że tak nie jest (wygenerowało pewne wyniki, które sprawiają, że myślę, że tak naprawdę nie ma skryptów ani innych elementów w instalatorze, tylko aplikacja).

Thilo
źródło
2
Spróbuj rozpakować .
lhf

Odpowiedzi:

67

Jeśli klikniesz go prawym przyciskiem myszy i klikniesz opcję Pokaż zawartość opakowania , otrzymasz kilka plików w folderze Zawartość. (Uwaga: jeśli nie widzisz Pokaż zawartości pakietu , musisz otworzyć Terminal.app i uruchomić pkgutil --expand mystubbornpackage.pkg path/to/expand)

Jednym z nich jest plik BOM (zestawienie materiałów), który zamienia się w pokwitowanie, którego można użyć do odinstalowania aplikacji. Ten plik zawiera manifest wszystkiego, co pakiet zainstaluje i gdzie; aby odczytać ten plik, użyj polecenia lsbom .

Większość pakietów (używam tutaj pakietu Office 2008) również ma plik Archive.pax.gz, który zawiera wszystko, co Instalator przeniesie do różnych folderów zgodnie z instrukcją w pliku BOM. Wygląda na to, że większość aplikacji ma .app w tym archiwum, chociaż przeciągnięcie go do / Aplikacje może pozostawić go bez ram, które należy uruchomić; więc musisz dowiedzieć się, jakich innych plików potrzebuje i gdzie potrzebuje ich, aby działał.

Ponadto wszystkie pakiety mogą rejestrować wiadomości, jeśli naciśniesz Cmd-L (lub wybierzesz opcję Dziennika instalatora z menu Okno , możesz je wyświetlić po ich wygenerowaniu. Może to dać ci wyobrażenie, jakie dodatkowe rzeczy instaluje na przynajmniej jest to trochę więcej informacji, jeśli nie ufasz pakietowi.

Mathew Hall
źródło
3
Nie pojawia się „Pokaż zawartość opakowania” w menu po kliknięciu prawym przyciskiem myszy.
Thilo,
3
@ Thilo Jeśli nie wyświetla się opcja „Pokaż zawartość pakietu”, plik pkg został utworzony jako plik płaski. Kilka lat temu firma Apple wprowadziła płaskie pkg
nazwa użytkownika
@ nazwa użytkownika: jak mogę je otworzyć?
Thilo,
10
pkgutilzrobi to. Możesz go rozwinąć za pomocą, pkgutil --expand file.pkg path_to_expanda on przekształci go w pakiet stylu katalogu.
Mathew Hall,
@ nazwa użytkownika, co to znaczy „płaski”?
Pacerier,
34

Oprócz tego, co powiedział Matthew Hall, możesz także nacisnąć Cmd-I w aplikacji Instalatora, aby zobaczyć, jakie pliki instalator zainstaluje i gdzie.

CajunLuke
źródło
3
+1. Dzięki temu mogłem szybko zweryfikować, że jest tam tylko aplikacja binarna, żadnych innych rzeczy w całym systemie.
Thilo,
7

Jeśli nie ufasz instalatorowi w stopniu wystarczającym do uzyskania uprawnień administracyjnych do instalacji, to dlaczego ufasz plikowi binarnemu w katalogu / Aplikacje?

Pacifist pozwoli ci zajrzeć do plików pakietu. Niekoniecznie pozwala to „wyciągnąć plik binarny”.

ghoppe
źródło
1
Nie ufam też plikom binarnym. Nie chcę nigdy dawać mu uprawnień administracyjnych (których i tak nie powinien potrzebować).
Thilo,
3
Tak długo, jak nie uruchomisz aplikacji od żadnego użytkownika, który ma uprawnienia administratora, twoje zaufanie będzie podtrzymane. Nie zapominaj, że nawet aplikacja na poziomie użytkownika może wysyłać żądania z procesów na poziomie administratora, więc uruchamianie aplikacji, którym tak naprawdę nie ufasz, wymaga dużo pracy.
bmike
@ghoppe, To dlatego, że wartości domyślne czasami nie są zoptymalizowane dla użytkowników, ale twórców aplikacji. Np. Zamiast instalowania wszystkich śmieci instalacyjnych, które są domyślnie, mogę wybrać, aby wziąć tylko te pliki, które są najważniejsze. Np. Podczas pobierania MySQL / Java / itp.
Pacerier
4

Alternatywnie możesz spróbować

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

LUB

installer -pkg ~/Downloads/packagename.pkg -target ~/Applications/
karmatyczna
źródło
To niestety nie zadziałało. Nadal nalegał na „Instalowanie w podstawowej ścieżce /”, a następnie poprosił o hasło administratora.
Thilo,
1
Możliwe jest zainstalowanie na obrazie dysku utworzonym za pomocą czegoś podobnego, hdiutil create -size 200m -fs HFS+ -volname Scratch scratch.dmga następnie skopiowanie plików do preferowanych lokalizacji. Nadal potrzebujesz sudo, aby niestety uruchomić instalator.
mjs
2
  1. Po pomyślnym otwarciu pakietu odszukaj wspomniany wcześniej plik Archive.pax.gz.

  2. Utwórz nowy pusty folder na pulpicie, nadając mu dowolną nazwę. Zazwyczaj nazywam je „xxxx” lub „zzzz” itp., Aby ułatwić późniejsze pisanie.

  3. Przeciągnij z opcją kopię pliku Archive.pax.gz do nowego folderu „xxxx” na pulpicie.

    Jeśli plik znajduje się na nośniku tylko do odczytu, możesz po prostu przeciągnąć go do folderu „xxxx” bez klawisza Option, aby utworzyć kopię.

  4. Teraz otwórz Terminal.app iw wierszu polecenia przejdź do nowego katalogu „xxxx” i wyświetl zawartość katalogu, aby potwierdzić, że plik Archive.pax.gz tam jest:

    cd ~/Desktop/xxxx
    ls -al
    
  5. Teraz są dwa proste polecenia do wprowadzenia:

    gunzip -v Archive.pax.gz
    

    Gzip powie ci, że zastąpił „Archive.pax.gz” na „Archive.pax”) Teraz ponownie wypisz zawartość katalogu, aby to potwierdzić.

    pax -r -f Archive.pax
    

    (Musisz się rozdzielić -ri -f, jak -rfto nie zadziała)

  6. Na koniec ponownie wypisz zawartość katalogu za pomocą ls -al. Oprócz pliku Archive.pax zobaczysz teraz hierarchię katalogów prawdopodobnie zawierającą jeden lub więcej katalogów.

    Pliki w tej hierarchii katalogów pokażą ci, gdzie instalator OS X zainstalowałby pliki w twoim systemie, tak jakby katalog „xxxx” był katalogiem głównym „/”.

  7. Możesz następnie ręcznie skopiować te pliki do ich miejsc docelowych, jeśli chcesz.

stargood
źródło
3
Innymi słowy cd ~/Desktop; cp Package.pkg/Contents/Archive.pax.gz .; gunzip -v Archive.pax.gz; pax -r -f Archive.pax. Nie musisz opisywać wszystkiego na tym poziomie szczegółowości.
Lri
6
Lri, podałem taką ilość szczegółów, aby użytkownicy na każdym poziomie wiedzy byli w stanie je śledzić i odnieść sukces. To prawda, że ​​Twoja tajemnicza wersja osiąga takie same wyniki. Jednak inni użytkownicy czytający to w przyszłości, którzy mogą nie znać wiersza poleceń, mogą zostać beznadziejnie utraceni.
stargood
1

pkgutil --expand nie powiodło się z powodu następującego błędu:

Error encountered while creating .. Error 17: File exists

Ale xarzamiast tego udało mi się wyodrębnić pliki :

xar -xvf foo.pkg

gregschlom
źródło
1
to działa dla mnie. ale najwyraźniej jeśli podasz pkgutil jako katalog nieistnienia jako miejsce docelowe, błąd 17 zniknie.
Michael
1

Najlepszym narzędziem do sprawdzania plików pakietów jest Podejrzany pakiet . Umożliwia także kopiowanie plików z pakietu.

Nie tylko dostarczy wszystkie potrzebne informacje w aplikacji, ale także zainstaluje wtyczkę Quick Look, więc wystarczy wybrać plik pakietu i nacisnąć klawisz spacji, aby otworzyć okno z najważniejszymi informacjami.

Tony Williams
źródło
0

Unarchiver może to zrobić; zrobi to samo, pkgutil --expandale używając przeciągania i upuszczania. W każdym razie jest to lepszy zamiennik Apple Archive Utility.app.

Quinn Comendant
źródło
0

UnArchiver załatwił sprawę .

Zainstaluj UnArchiver, otwórz UnArchiver; gdy jest otwarty - kliknij dwukrotnie ten nieznośnyMAMP_MAMP_3.5.pkg

Postępuj zgodnie z instrukcjami, aby zainstalować MAMP.

Blll
źródło