Ausführen von OS X-Befehlszeilenprogrammen unter Ubuntu

642
John Sonderson

Da Mac OS X von BSD (Berkeley Systems Distribution) UNIX abgeleitet ist, würde ich davon ausgehen, dass es auf die eine oder andere Weise möglich ist, Befehlszeilen-OS X-Programme unter Ubuntu auszuführen. Ich spreche wirklich von den kompilierten Programmen, die keine Funktionen der Benutzeroberfläche verwenden (in meinem Fall muss ich ein Programm zur Konvertierung ausführbarer Dateien ausführen). Das spezielle Tool, das mich interessiert, läuft unter Mac OS X Mavericks.

Wenn jemand einen Weg kennt, dies zu erreichen, indem Sie beispielsweise den Linux-Kernel neu kompilieren oder System-Software auf Ubuntu installieren, lassen Sie es mich wissen. Ich verwende Ubuntu 12.04.2 LTS, kann das System jedoch auch aktualisieren, wenn dies unbedingt erforderlich ist.

0
Und was ist das "spezielle Werkzeug", an dem Sie interessiert sind? slhck vor 10 Jahren 1
Nicht sicher, ob es einen Unterschied macht, aber ich versuche, ein Tool namens "InstallESD.dmg.tool" auszuführen (mit dem eine .dmg-Datei (Apple Disk Image) bootfähig gemacht wird. Theoretisch ist dies nur eine Datei Das Konvertierungswerkzeug benötigt daher nur E / A-Vorgänge. Wenn ich jedoch die Datei unter Ubuntu Linux ausführen, erhalte ich die folgende Fehlermeldung: "Dieses Tool wird nur unter OS X unterstützt.". Kann es zu einer Problemumgehung kommen? John Sonderson vor 10 Jahren 0
Ich möchte Sie dazu ermutigen, stattdessen diese spezifische Frage zu stellen. So möchten Sie eine `.dmg`-Datei unter Linux bootfähig machen. slhck vor 10 Jahren 0
FWIW, InstallESD.dmg.tool ist einfach ein Shellskript, das verschiedene Programme aufruft, die OSX-spezifisch sein können oder nicht (hdiutil, pkgutil, PlistBuddy, chflags und segens heben sich hervor; es können jedoch auch andere sein). https://github.com/ntkme/InstallESD.dmg.tool/blob/master/InstallESD.dmg.tool Kent vor 10 Jahren 2

2 Antworten auf die Frage

3
hildred

Dies wird in Ihrer Situation wahrscheinlich nicht helfen, aber es gibt drei allgemeine Möglichkeiten, Befehle zwischen Unixen zu verschieben, und eine Möglichkeit, zu betrügen, was hilfreich sein kann.

  1. Finden Sie einen bereits portierten Artikel: Beispielsweise wurde der Standardbefehl mailx mehrmals implementiert. Debian und damit Umbutu haben mindestens drei Versionen.

  2. Neukompilieren / Portieren: Wenn Sie Zugriff auf den Quellcode haben, ist es normalerweise ziemlich schwierig, auf einer anderen Plattform neu zu kompilieren, aber manchmal gibt es einige Fänge (was bedeuten Sie, wenn Sie auswählen, ändert / ändert seine Parameter nicht).

  3. Binäre Emulationen: Hier haben Sie eine Binärdatei, die für ein auf einem anderen Betriebssystem lauffähiges Betriebssystem kompiliert wurde. Dies wird bei dynamischen Bibliotheken kompliziert und erfordert spezifische und detaillierte Informationen, z. B. was Ldd sagt. Sie möchten sich wahrscheinlich stark auf die Foren Ihres Emulators stützen. Wenn Sie diesen Weg gehen möchten, besuchen Sie http://darling.dolezel.info/de/Darling

  4. Cheat: Dateifreigabe und SSH. Sie benötigen einen gemeinsamen Speicherort für Dateien, die für beide Computer verfügbar sind (nfs samba, ftp usw.). Legen Sie die Datei an einem Ort ab, den der Mac lesen kann. Verwenden Sie ssh, um sich von Linux aus auf dem Mac anzumelden mit deinem Tag

2
MattDMo

Linux und OS X sind zwei völlig unterschiedliche Betriebssysteme, genau wie Linux und BSD, OS X und Windows, Windows und Solaris usw. Wenn Sie nicht über den Quellcode des Tools verfügen, das Sie verwenden möchten, können Sie dies nicht tun Kopieren Sie es einfach von OS zu OS und erwarten Sie, dass es funktioniert. Während es möglicherweise "nichts von I / O" benötigt, um ausgeführt zu werden (wirklich, sind nicht alle Computerprogramme "Nichts als I / O"?), Wurde es von einem bestimmten Compiler gegen eine bestimmte Toolchain erstellt und erwartet bestimmte Bibliotheken mit bestimmte Funktionen müssen an bestimmten Stellen sein, damit sie funktionieren.

Suchen Sie nach der Quelle und versuchen Sie, unter Linux neu zu kompilieren, oder suchen Sie nach einer Linux-Entsprechung.

Vielen Dank. Anscheinend gibt es keine einfache Möglichkeit, dies zu tun. John Sonderson vor 10 Jahren 0