私は、Linuxの最近のディストリビューションpaste
とのような特定のコマンドラインツールのデフォルトバージョンの間には、微妙でしばしば厄介な違いがあることに気付きました。これは、sed
OSX
回答OS X
ほとんどすべての Linux ディストリビューションで動作しますが、 では動作しません。
そこで疑問に思うのは、最新の Linux ディストリビューションで標準 Unix ツールのフルセットのOS X
バージョンを入手して、コピーを持たずに OSX でソリューションが適切に機能するかどうかをテストできる標準的な方法はあるのだろうかということです。
答え1
コメントで述べたように、Appleはソースコードこれらのツールのバージョンは利用可能です。多くの一般的なコマンドは「shell_cmds」パッケージpasteとsedは「テキストコマンド「ソースコードを取得してコンパイルすることができます。」
事実上、それらはすべて Linux システムで問題なく動作しますが、多くの場合、ソースを開いて FreeBSD 固有のテスト、特に__FBSDID("...");
ほぼすべてのファイルにある行を削除する必要があります。それらをパッケージ化しているディストリビューションは知りません。多くのディストリビューションは、OS X 版に非常に近い (多くの場合同一) 一般的なツールの BSD 版をパッケージ化していますが、通常は paste や sed などは含まれていません。たとえば、Debian には8つのパッケージと呼ばれるbsdX
(いずれにもこれらのコマンドはありません)。特に Apple のバージョン、またはそれらに含まれていない多くのツールについては、上記の手順に従って必要なときに自分で構築するのは難しくありません。
とはいえ、GNUとBSDのツールの共通サブセットはPOSIX仕様、ここですべての基本コマンドが定義されています。貼り付けコマンドまたはsedそして、どの引数がどこでも受け入れられるかを確認します。これは、移植可能なコードを書くための「道徳的に正しい」方法です。GNUツールとBSDツールの両方に拡張機能がありますが、POSIXの範囲内であれば、コードは両方で動作します。常にPOSIX引数のみを使用していることを確認してくださいそして、あなたが言うことは OS X と他のシステムでも同様に機能するはずです。
答え2
ほとんどのOSXのUnix系ツールはオープンソースです多くのツールのソース コードは、Linux には存在しないライブラリとカーネルの機能に依存しています (オープンソースではなく、追加の労力とおそらくライセンス違反なしでは Apple 以外のハードウェアでは実行できません)。 多大な労力をかけずに Linux で実行できるとは思えません。
OSXのUNIXレイヤーはフリーBSD多くのプログラムは、OSXリリース当時のFreeBSDリリースのものと非常によく似ています。FreeBSDを仮想マシンで実行して、そこでテストすることができます。オープンBSD; OpenBSDはセキュリティを重視しており、新機能の採用に関してはFreeBSDよりもはるかに保守的です。スクリプトの移植性をテストしたい場合は、オープンインディアナのオープンソースフォークであるソラリス現在は廃止されたOpenSolarisエディションをベースにしています。SolarisはシステムVベースの Solaris と OpenBSD を組み合わせると、Unix の移植性についてかなり広い視野が得られます。
多くの Unix バリアントのドキュメントをオンラインで確認することもできます。