查找Snow Leopard中的所有PPC库,二进制文件和应用程序

时间:2009-09-10 16:53:46

标签: macos osx-snow-leopard

您是否有关于如何编写脚本的指针,该脚本将在我的系统中搜索应用程序,库(即/ usr / local / lib和/ usr / local)以及仅限PPC的二进制文件?

我将系统从PPC Mac升级到运行Leopard 10.5的Intel Mac。然后我升级到Snow Leopard 10.6,它没有Rosetta。所以我现在才意识到我系统上剩下的所有旧PPC内容!

5 个答案:

答案 0 :(得分:9)

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只是稍微困难一点。为此,您需要执行三个命令在/ tmp中创建2个文件,第一个包含PPC文件列表,第二个包含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

然后,排序/ uniq一点(只是对路径进行排序,并确保每个二进制文件只列出一次):

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部分的文件列表。我会建议在核实之前验证清单。

一些注意事项:

以上所有操作均在终端中完成。

这只是一个黑客;它在我的系统上工作得很好,我很高兴你问,因为我想知道同样的事情。但这只是一个黑客。

答案 1 :(得分:3)

要查找应用程序,您可以使用System Profiler(Lion中的被叫系统信息)。

在侧栏中的“软件”下查看并选择“应用程序”...然后在收集信息时等待很长时间。

答案 2 :(得分:2)

根据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

答案 3 :(得分:1)

另请注意,Rosetta附带10.6 - 它只是可选安装之一。检查用于安装它的DVD。

答案 4 :(得分:0)

实际上,当您尝试启动其中一个应用程序时,它应该要求您安装它。