Mac OS X cómo verificar packages particulares están instalados

En un script de BASH necesito comprobar si gcc, g++, cpp, make, libpng devel, zlib devel, git, Java (incluidos los files de desarrollo), ant y pkg-config están disponibles en Mac OS X, y si no, necesito solicita al usuario que los instale.

Esta es una tarea fácil en Linux ya que tiene herramientas de administración de packages, pero no tengo idea de cómo hacer esto en el shell de Mac OS X. Por ejemplo, en openSUSE puedo usar rpm -q y zypper in , od distros basadas en Debian dpkg-query y apt-get install . ¿Pero cómo hacerlo en una Mac?

El sistema de administración de packages de Apple a menudo está sujeto a críticas. La utilidad pkgutil se puede usar para enumerar y consultar los recibos del package.

Listar todos los packages instalados con el instalador de Apple

  pkgutil --pkgs 

Regex para una identificación de package

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

Listar todos los files en una identificación de package

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

Entonces otra vez podrías usar lsbom y leer los files bom en / var / db / recibs

Los usuarios también instalan otros sistemas de administración de packages como MacPorts, Fink o Homebrew. O comstack el suyo en cualquier prefijo. pkgutil no mostrará packages instalados por estos methods.

Si su sistema operativo objective es OS X10.9 o OS X 10.10, entonces

  gcc --version 

O bien el command dará salida a la versión de gcc o se le pedirá que instale las herramientas de command-line de XCode. gcc, g++, cpp, make, and git se instalarán junto con otras herramientas. El package de Java se ofrece desde Oracle. Puedes probar con la java --version aunque necesitarás familiarizarte con los frameworks, complementos y packages de Apple para search files de encabezado. pkgutil sería un buen candidato para este process.

Los otros packages que mencionaste podrían posiblemente comstackrse en un script de shell o comstackrse y colocarse en un package de installation de Apple y luego instalarse a través de un script de shell. No hay un método fácil.

Lo primero que se me ocurre es system_profiler :

 system_profiler SPSoftwareDataType 

La salida del command anterior se verá similar a una yum info Hay muchas otras opciones para arrojar a esta utilidad. man system_profiler debería man system_profiler por el path correcto. Esta input de blog le proporcionará un poco más de información.

si este package tiene un file binary que se puede encontrar, puede hacerlo:

 package_name=<packge-name> t=`which $package_name` [ -z "$t" ] && echo "the $package_name isn't installed!"