Snow LeopardですべてのPPCライブラリ、バイナリ、およびアプリケーションを検索

StackOverflow https://stackoverflow.com/questions/1406456

  •  05-07-2019
  •  | 
  •  

質問

アプリケーション、ライブラリ(/ usr / local / libおよび/ usr / local)、およびPPCのみのバイナリをシステムで検索するスクリプトを記述する方法についてのポインタはありますか?

システムをPPC MacからLeopard 10.5を実行しているIntel Macにアップグレードしました。その後、Rosettaに付属していないSnow Leopard 10.6にアップグレードしました。だから私は今、私のシステムに残っている古いPPCのものをすべて認識しています!

役に立ちましたか?

解決

file コマンドは、ファイルで使用可能なバイナリタイプを検出できます。

file -b /usr/bin/atrm
setuid Mach-O universal binary with 3 architectures
/usr/bin/atrm (for architecture x86_64): Mach-O 64-bit executable x86_64
/usr/bin/atrm (for architecture i386): Mach-O executable i386
/usr/bin/atrm (for architecture ppc7400): Mach-O executable ppc

したがって、検索とフィルタリングを適切に使用するだけです。このようなものは、PPCサブセクションがあるシステム上のすべてのバイナリを見つけるはずです。

find / -perm -u+x ! -type d -exec file {} \; | grep ppc | awk '{print $1}'

PPCだけはもう少し難しいです。そのためには、3つのコマンドを実行して/ tmpに2つのファイルを作成します。1つ目はPPCファイルのリスト、2つ目は32ビットまたは64ビットのx86ファイルのリストです。便利なことに、「ppc」はppcおよびppc64と一致します。

find / -perm -u+x ! -type d -exec file {} \; | grep ppc | awk '{print $1}' > /tmp/ppc
find / -perm -u+x ! -type d -exec file {} \; | grep i386 | awk '{print $1}' > /tmp/x86
find / -perm -u+x ! -type d -exec file {} \; | grep x86_64 | awk '{print $1}' >> /tmp/x86

次に、少しソート/ユニックします(パスをソートし、各バイナリが一度だけリストされるようにします):

cat /tmp/x86 | sort | uniq > /tmp/x86.filtered
cat /tmp/ppc | sort | uniq > /tmp/ppc.filtered

次に、diff(およびもう少し処理)を使用して、ppcのみのファイルのリストを吐き出します。

diff /tmp/ppc.filtered /tmp/x86.filtered | grep -e '<' | awk '{print $2}' | perl -p -e 's/:$//'

最終結果は、ppc実行可能mach-oセクションのみを含むファイルのリストです。何かを削除する前にリストを確認することをお勧めします。

注意事項:

上記のすべてはターミナルで行われます。

これは単なるハックです。私のシステムではうまく機能し、同じことを知りたかったのであなたが尋ねてくれてうれしいです。しかし、それは単なるハックです。

他のヒント

アプリケーションを見つけるには、システムプロファイラー(Lionで呼び出されたシステム情報)を使用できます。

「ソフトウェア」の下をご覧ください。サイドバーで[アプリケーション]を選択します...その後、情報を収集するまでしばらく待ちます。

Kevin Ballardの回答に基づき、これはMountain Lionで動作します:

mdfind -0 'kMDItemContentTypeTree == "public.executable"' | xargs -0 -n 1 sh -c 'lipo="$(lipo -info "$1" 2>/dev/null)"; if [[ "$lipo" == *ppc* && "$lipo" != *i386* && "$lipo" != *x86_64* ]]; then echo "$1"; fi' sh

また、Rosettaには10.6が付属しています-これはオプションのインストールの1つにすぎません。インストールに使用したDVDを確認します。

実際、これらのアプリケーションのいずれかを起動しようとすると、インストールするように求められます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top