28 czerwca 2017 r. Apple ogłosiło to
macOS High Sierra będzie ostatnią wersją macOS obsługującą aplikacje 32-bitowe bez kompromisów.
Jak mogę dowiedzieć się, które aplikacje na komputerze Mac są 32-bitowe, aby sprawdzić, czy muszę je zaktualizować?
28 czerwca 2017 r. Apple ogłosiło to
macOS High Sierra będzie ostatnią wersją macOS obsługującą aplikacje 32-bitowe bez kompromisów.
Jak mogę dowiedzieć się, które aplikacje na komputerze Mac są 32-bitowe, aby sprawdzić, czy muszę je zaktualizować?
Odpowiedzi:
Jednym ze sposobów określenia, z których 32-bitowych aplikacji nadal korzystasz, jest skorzystanie z opcji Informacje o systemie w sekcji Informacje o tym komputerze Mac. Dokładne kroki różnią się w zależności od używanej wersji systemu macOS, ale poniżej znajdują się ogólne kroki, które należy wykonać w zależności od okoliczności:
64-Bit (Intel)Kliknij nagłówek tej kolumny, aby posortować aplikacje według tego, czy są 64-bitowe (tzn. Będą mieć na liście każdą z nich Tak lub Nie ).Patrz przykład poniżej:
UWAGA: Na powyższym obrazku celowo nie posortowałem ostatniej kolumny, aby można było zobaczyć wpisy z listą Tak i Nie. Tak więc w powyższym przykładzie zobaczysz, że iMovie 10.1.6 jest aplikacją 64-bitową, podczas gdy iMovie 9.0.9 nie jest 64-bitową.
Edytuj - jeśli powyższe kroki powodują błąd
Widziałem raporty, że niewielka liczba użytkowników otrzymuje komunikat o błędzie „Wtyczka nie zareagowała wystarczająco szybko podczas zbierania tych informacji” podczas oczekiwania na zapełnienie listy.
Jeśli tak się stanie, zamknij aplikację Informacje o systemie (lub aplikację System Profiler w starszych wersjach systemu macOS) i uruchom ponownie, ale tym razem pomiń kroki od 1 do 4 i przejdź bezpośrednio do folderu Aplikacje / Narzędzia i otwórz aplikację Informacje o systemie (lub System Aplikacja Profiler) bezpośrednio stamtąd. Po otwarciu wykonaj kroki od 5 do 8 powyżej.
W Finderze naciśnij, cmdFaby wyświetlić okno wyszukiwania.
Naciśnij przycisk + i dodaj drugie kryterium „ Architektury wykonywalne ” „ Nie jest ” „ x86_64 ”
a otrzymasz listę wszystkich aplikacji tylko i386 (tj. 32-bitowych).
W terminalu odbywa się to za pomocą:
mdfind "(kMDItemExecutableArchitectures == 'i386') && (kMDItemExecutableArchitectures != 'x86_64')"
~/Library/Application Support, takich jak gry Steam. Inne rozwiązanie tak. Czy wiesz, czy jest jakiś sposób zmodyfikować wyszukiwanie, aby to uwzględnić?
Inne dotychczasowe odpowiedzi, z tego co rozumiem, będą zawierać 32-bitowe aplikacje macOS (i może jakieś 32-bitowe pliki binarne) w indeksie metadanych. Jeśli chcesz wyświetlić listę wszystkich 32-bitowych plików wykonywalnych tylko w swoim systemie, wypróbuj ten jeden-liniowy program:
find / -type f -perm +111 -exec file -p {} \; -exec head -c 1 /dev/zero \; | xargs -0 -n 1 sh -c 'echo "$@" | head -n 1' -- | grep -v x86_64 | grep -E Mach-O.+i386
Jeśli masz zainstalowane GNU findutils, prawdopodobnie można to znacznie uprościć. Część złożoności tutaj polega na przezwyciężeniu ograniczeń znalezisk BSD zawartych w macOS.
To jedno wierszowe polecenie terminalu zbierze listę aplikacji do pliku tekstowego na pulpicie. Pobiera 6 linii przed i 2 linie po każdym wystąpieniu „(Intel): Nie” w zapytaniu. Nie zagłębia się jednak w 32-bitowe pliki binarne lub biblioteki dla już skompilowanych aplikacji 64-bitowych. Ta lista jest znacznie obszerniejsza i nie mogę znaleźć żadnego zasobu, który mógłby rozwiązać głębszy problem, nawet jeśli jest to problem.
system_profiler SPApplicationsDataType | grep -B 6 -A 2 "(Intel): No" > ~/Desktop/32BitAppList.txt
Gdy musisz tylko sprawdzić pojedynczą aplikację:
file myapplication
Na przykład mój ray tracer rt:
==> file rt
rt: Mach-O 64-bit executable x86_64
==>
fileKomenda zasadzie wygląda na wielu rodzajów plików i próbuje je zidentyfikować. W przypadku plików wykonywalnych OSX prawie zawsze zobaczysz jeden lub więcej z nich: i386, x86_64 i ppc, które są odpowiednio 32-bitowymi architekturami Intel / Amd, 64-bitowymi architekturami Intel / Amd i architekturami Power PC (te są dość stare teraz). Więc naprawdę musisz się martwić tylko o i386 (aplikacje 32-bitowe) i x86_64 (aplikacje 64-bitowe).
W przypadku aplikacji spakowanych należy kliknąć prawym przyciskiem myszy i pokazać zawartość opakowania . W większości aplikacji pod contents → macOSjednym znajdzie się plik wykonywalny. Jako argument należy użyć jego ścieżki file.
file /Applications/BitTorrent.app/Contents/MacOS/BitTorrentrozumiem Mach-O executable i386. Co to znaczy ?
i386itp. Czy mógłbyś dodać takie odniesienie?
fileKomenda zasadzie wygląda na wielu rodzajów plików i próbuje je zidentyfikować. Dla plików wykonywalnych OSX, będziesz prawie zawsze zobaczyć jedną lub więcej z nich: i386, x86_64, i ppcktóre odpowiednio są 32-bitowe procesory Intel / AMD o architekturze 64-bitowej architektury Intel / AMD i architektury energią (te ostatnie są dość stary. ) Tak więc naprawdę musisz się martwić tylko i386 (aplikacje 32-bitowe) i x86_64 (aplikacje 64-bitowe). Jedynym powodem, dla którego mają znaczenie, jest to, że Apple rezygnuje z obsługi aplikacji 32-bitowych.
Poważnie powtarzałem, że „Wtyczka nie zareagowała wystarczająco szybko podczas zbierania tych informacji”. problem i nie można go rozwiązać przy użyciu żadnej z sugerowanych metod.
Okazuje się, że istnieje narzędzie wiersza polecenia o system_profilertakiej samej informacji.
Poszedłem więc prosto do źródła i napisałem mały rubinowy skrypt, aby skompilować listę z dodatkowymi informacjami na temat lokalizacji aplikacji i źródła instalacji (jeśli jest dostępna).
Skrypt można znaleźć tutaj .