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만이 조금 더 어렵습니다. 이를 위해 /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 섹션 만 포함하는 파일 목록이어야합니다. 아무것도 핵무기 전에 목록을 확인하는 것이 좋습니다.

몇 가지 메모 :

위의 모든 것은 터미널에서 수행됩니다.

이것은 단지 해킹 일뿐입니다. 그것은 내 시스템에서 잘 작동했으며 똑같이 알고 싶었 기 때문에 당신이 물었다. 그러나 그것은 단지 해킹 일뿐입니다.

다른 팁

응용 프로그램을 찾으려면 시스템 프로파일 러 (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과 함께 제공됩니다. 옵션 설치 중 하나 일뿐입니다. 설치했던 DVD를 확인하십시오.

실제로 해당 응용 프로그램 중 하나를 시작하려고 할 때 설치하도록 요청해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top