Mac OS X làm thế nào để xác minh các gói cụ thể được cài đặt


7

Trong tập lệnh BASH, tôi cần kiểm tra xem gcc, g++, cpp, make, libpng devel, zlib devel, git, Java(bao gồm các tệp phát) antpkg-configcó sẵn trên Mac OS X không và nếu không, tôi cần nhắc người dùng cài đặt chúng.

Đây là nhiệm vụ dễ dàng trên Linux vì nó có các công cụ quản lý gói, nhưng tôi không biết làm thế nào để làm điều này trong trình bao Mac OS X. Ví dụ: trên openSUSE tôi có thể sử dụng rpm -qzypper in, phân phối các bản phân phối dựa trên Debian dpkg-queryapt-get install. Nhưng làm thế nào để làm điều đó trên máy Mac?

Câu trả lời:


7

Hệ thống quản lý gói của Apple thường bị chỉ trích. Tiện ích pkgutilcó thể được sử dụng để liệt kê và truy vấn các biên lai gói.

Liệt kê tất cả các gói được cài đặt với trình cài đặt của Apple

     pkgutil --pkgs

Regex cho một gói id

    pkgutil --pkgs=.\+Xcode.\+

Liệt kê tất cả các tệp trong một gói id

    pkgutil --only-files --files com.apple.pkg.update.devtools.3.2.6.XcodeUpdate

Sau đó, một lần nữa bạn có thể sử dụng lsbomvà đọc các tệp bom trong / var / db / receive

Người dùng cũng cài đặt các hệ thống quản lý gói khác như MacPorts, fink hoặc Homebrew. Hoặc biên dịch riêng của họ trong bất kỳ tiền tố. pkgutilsẽ không liệt kê các gói được cài đặt bởi các phương thức này.

Nếu hệ điều hành mục tiêu của bạn là OS X10.9 hoặc OS X 10.10 thì

    gcc --version

Lệnh sẽ xuất phiên bản gcc hoặc bạn sẽ được nhắc cài đặt các công cụ dòng lệnh XCode. gcc, g++, cpp, make, and gitsẽ được cài đặt cùng với các công cụ khác. Gói Java được cung cấp từ Oracle. Bạn có thể kiểm tra java --versionmặc dù bạn sẽ cần làm quen với các khung, plugin và gói của Apple để tìm kiếm các tệp tiêu đề. pkgutilsẽ là một ứng cử viên tốt cho quá trình này.

Các gói khác mà bạn đề cập có thể có thể được biên dịch bằng tập lệnh shell hoặc được biên dịch và đưa vào gói trình cài đặt của Apple sau đó được cài đặt qua tập lệnh shell. Không có một phương pháp dễ dàng.


Vì vậy mà tôi không thể dựa vào pkgutilkhi truy vấn các gói đã cài đặt? Tôi muốn kiểm tra OS X cơ bản nhất có thể mà không cần dựa vào các công cụ của bên thứ 3 như MacPorts, Flink hoặc Homebrew nếu một số gói được cài đặt và nếu không, hãy cài đặt chúng ...
Tilia

1

Điều đầu tiên bạn nghĩ đến là system_profiler:

system_profiler SPSoftwareDataType

Đầu ra của lệnh trên sẽ trông tương tự như yum info Có rất nhiều tùy chọn khác để sử dụng tiện ích này. man system_profilersẽ giúp bạn đi đúng hướng. Mục blog này sẽ cung cấp cho bạn thêm một chút thông tin.


Theo như tôi hiểu công cụ này từ người đàn ông của nó, có vẻ như tôi chỉ có thể xác minh xem phần mềm cụ thể đã được cài đặt hay chưa, đây là bước quan trọng, chỉ là bước đầu tiên. Có cái gì đó như zypper hoặc apt-get cho Mac không?
Tilia

Đáng buồn là trang người đàn ông không phác thảo tất cả các tùy chọn trong system_profiler. Nếu bạn kiểm tra blog tôi đã liên kết, bạn có thể biết thêm một chút thông tin.
h3rrmiller

OK, cảm ơn bạn để biết chi tiết. Nhưng tôi vẫn chỉ thấy các khả năng truy vấn ...
Tilia

@ h3rrmiller Dường như vào năm 2019-01-13, liên kết đến mục nhập blog dường như không hoạt động, mặc dù tôi đã tìm thấy thông tin hữu ích qua liên kết này mac ware.beachdogs.org/blog/iêu
qxotk

1

nếu gói này có nhị phân có thể được tìm thấy, bạn có thể làm -

package_name=<packge-name>
t=`which $package_name`
[ -z "$t" ] && echo "the $package_name isn't installed!"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.