Mac OS X, um zu überprüfen, ob bestimmte Pakete installiert sind

7

In einem BASH-Skript muss ich überprüfen, ob gcc, g++, cpp, make, libpng devel, zlib devel, git, Java(einschließlich Entwicklungsdateien) antund pkg-configunter Mac OS X verfügbar sind. Wenn nicht, muss ich den Benutzer auffordern, sie zu installieren.

Dies ist eine einfache Aufgabe unter Linux, da es über Paketverwaltungstools verfügt, aber ich habe keine Ahnung, wie dies in der Mac OS X-Shell geschehen soll. ZB auf openSUSE kann ich rpm -qund zypper in, od Debian-basierte Distributionen dpkg-queryund apt-get install. Aber wie geht das auf einem Mac?

Tilia
quelle

Antworten:

7

Das Paketverwaltungssystem von Apple wird häufig kritisiert. Das Dienstprogramm pkgutilkann zum Auflisten und Abfragen der Paketbelege verwendet werden.

Listen Sie alle mit dem Apple-Installationsprogramm installierten Pakete auf

     pkgutil --pkgs

Regex für eine Paket-ID

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

Listen Sie alle Dateien in einer Paket-ID auf

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

Andererseits könnten Sie lsbomdie bom-Dateien in / var / db / Receipts verwenden und lesen

Benutzer installieren auch andere Paketverwaltungssysteme wie MacPorts, Fink oder Homebrew. Oder kompilieren Sie ihre eigenen in einem beliebigen Präfix. pkgutillistet keine Pakete auf, die mit diesen Methoden installiert wurden.

Wenn Ihr Zielbetriebssystem OS X10.9 oder OS X 10.10 ist, dann

    gcc --version

Entweder gibt der Befehl die gcc-Version aus oder Sie werden aufgefordert, die XCode-Befehlszeilentools zu installieren. gcc, g++, cpp, make, and gitwird zusammen mit anderen Tools installiert. Das Java-Paket wird von Oracle angeboten. Sie können testen, java --versionobgleich Sie sich mit den Frameworks, Plugins und Bundles von Apple vertraut machen müssen, um nach Header-Dateien zu suchen. pkgutilwäre ein guter Kandidat für diesen Prozess.

Die anderen Pakete, die Sie erwähnt haben, können möglicherweise in einem Shell-Skript kompiliert oder kompiliert und in ein Apple-Installationspaket eingefügt und dann über ein Shell-Skript installiert werden. Es gibt keine einfache Methode.

fd0
quelle
Damit ich mich pkgutilbei der Abfrage nach installierten Paketen nicht darauf verlassen kann ? Ich möchte ein möglichst einfaches OS X aktivieren, ohne mich auf Tools von Drittanbietern wie MacPorts, Flink oder Homebrew verlassen zu müssen, wenn einige Pakete installiert sind, und wenn nicht, installieren Sie sie ...
Tilia
1

Das erste, was mir in den Sinn kommt, ist system_profiler:

system_profiler SPSoftwareDataType

Die Ausgabe des obigen Befehls sieht ähnlich aus wie a yum info Es gibt viele andere Optionen, die Sie für dieses Dienstprogramm verwenden können. man system_profilersollte Sie auf den richtigen Weg bringen. Dieser Blogeintrag bietet Ihnen ein wenig mehr Informationen.

h3rrmiller
quelle
Soweit ich dieses Tool von seinem Mann verstehe, kann ich anscheinend nur überprüfen, ob eine bestimmte Software installiert ist. Dies ist ein wichtiger Schritt, nur der erste Schritt. Gibt es so etwas wie Zypper oder Apt-Get für Mac?
Tilia
Leider beschreibt die Manpage nicht alle Optionen in system_profiler. Wenn Sie sich den Blog ansehen, den ich verlinkt habe, erhalten Sie möglicherweise weitere Informationen.
h3rrmiller
OK, danke für Details. Aber ich sehe immer noch nur Möglichkeiten zum Abfragen ...
Tilia
@ h3rrmiller Es scheint, dass ab dem 13.01.2019 der Link zum Blogeintrag nicht zu funktionieren scheint, obwohl ich über diesen Link nützliche Informationen gefunden habe macstuff.beachdogs.org/blog/…
qxotk
1

Wenn dieses Paket eine Binärdatei enthält, die gefunden werden kann, können Sie Folgendes tun:

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