Mac OS X에서 어떤 패키지에 속하는 파일을 찾는 방법?


8

어떤 응용 프로그램 / 패키지가 특정 파일을 소유하거나 생성하는지 확인하는 방법이 있습니까? 예를 들어, Linux에서이 명령은 패키지 소유자를 표시합니다

apt-file /bin/progname

rpm -qf /bin/progname

yum whatprovides /bin/progname

OS X에서 파일은 기본 OS X 응용 프로그램의 일부이거나 Macports 또는 Homebrew에 의해 설치 될 수 있습니다. 이들은 완전히 다른 환경입니다. 각 파일마다 특정 파일을 소유 한 응용 프로그램 / 패키지를 확인하는 명령이 있습니까?

답변:


17

조금 늦었지만 아마도 다른 사람들에게 도움이 될 것입니다.

pkgutil명령을 사용할 수 있습니다 .

예를 들어 "less"명령이 어떤 패키지에 속하는지 알고 싶다면 다음을 실행하십시오.

pkgutil --file-info /usr/bin/less

다음과 같은 결과가 출력됩니다.

volume: /
path: /usr/bin/less

pkgid: com.apple.pkg.BaseSystemBinaries
pkg-version: 10.7.0.1.1.1309742044
install-time: 1310407891
uid: 0
gid: 0
mode: 755

com.apple.pkg.BaseSystemBinaries예제에 패키지에 포함 된 모든 파일을 나열하려면 다음을 실행하십시오.

pkgutil --files com.apple.pkg.BaseSystemBinaries

이 도구는 OS X 10.6부터 존재한다는 것을 알고 있습니다.


정답으로 표시해야합니다. GUI 응용 프로그램과 함께 사용할 수도 있습니다. 을 시도 pkgutil --file-info /Applications/TextEdit.app하면 com.apple.pkg.Essentials에 속하지만 어떤 업데이터가 적용되었는지 알려줍니다 (내 경우에는 com.apple.pkg.update.os.10.10.2.14C109). .patch, com.apple.pkg.update.os.10.10.3.14D131.delta, com.apple.pkg.update.os.10.9.2.13C64.combo).
juandesant

4

표준화 된 패키지 관리가 없기 때문에 실제로는 불가능합니다.

MacPorts 또는 Homebrew를 다르게 구성하지 않으면 다른 사람이 사용하지 않는 위치에서 항상 실행 파일을 찾을 수 있습니다. MacPorts와 Homebrew는 별도의 사용자 계정으로 실행되지 않으므로 생성 된 파일은 항상 사용자 또는의 소유 root입니다.

남은 것은 실행 가능한 위치를 기반으로 추측 할 수 있다는 것입니다. 다음은 몇 가지 규칙입니다.

  • MacPorts를이 사용 /opt/local/bin/opt/local/sbin실행을 위해, 모든하에 접두어 /opt/local.

  • Homebrew는 /usr/local/bin실행 파일, 그 밖의 모든 항목에 사용 /usr/local/합니다.

  • 다른 응용 프로그램은 Git OS X 설치 프로그램 또는 X11 /usr과 같은 자체 디렉토리를 만들어야합니다 ./usr/local/git/bin/usr/X11/bin

  • 일부 시스템 프레임 워크에 심볼릭 링크 /usr/bin, 예를 들어 rake포인트를/System/Library/Frameworks/Ruby.framework

  • 어떤 응용 프로그램은 지금까지 사용 안 /bin/sbin. 타사 응용 프로그램 (OS X 프레임 워크가 아닌 것)도 사용해서는 안됩니다 /usr/bin.


표준화 된 패키지 관리가 없다는 것은 사실이 아닙니다. Mac OS X은 설치 프로그램을 사용하여 패키지에서 거의 모든 소프트웨어를 설치하고 기록을 유지합니다. @bhavin의 답변을 참조하십시오.
Neil Mayhew

네가 옳아. 표준 패키지를 사용하지 않는 프로그램에 대해 더 많이 이야기했습니다. 이 답변을 쓸 때 pkgutil에 대해 많이 알지 못했습니다.
slhck

나도 몰랐고 pkgutil꽤 편리하게 들린다.
Neil Mayhew

MacPorts에서는 다음을 사용하여 특정 파일을 소유 한 포트를 찾을 수 있습니다.port provides FILE
Neil Mayhew

1

OSX의 다른 두 패키지 관리자를 위해 한 곳에서 수집하려면 다음을 수행하십시오.

대한 MacPorts를 (위의 의견에 닐에 의해 언급 한 바와 같이) :

port provides /opt/local/bin/progname

들어 브루 은 그리 간단하지만 하나는 일반적으로 사용하여 패키지를 찾을 수 있습니다 :

ls -la /usr/local/bin/progname

패키지 이름이 포함 된 소프트 링크를 표시해야합니다. 그렇지 않으면 다음 질문 중 하나 에서 다른 제안을 사용할 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.