シェルスクリプトは、お使いのコンピュータにインストールされていないツールに依存する必要があることがよくあります。この問題を回避するために、多くのスクリプトにはさまざまな代替アクションがあります。
私の考えでは、そうすればコードが複雑になるだけで、互換性のためだけに使用される多くのスクリプトを見つけることは珍しいことではありません。
スクリプトに依存関係を含めることができないのはなぜですか?スクリプトにこれらのプログラム(追加の圧縮部分などmakeself
)が含まれており、実行時に簡単に使用できますか?
明確に言うと、これwget
となどの項目には適用されませんcurl
。この場合、それぞれのコードは最小化されます。私はGUIに関連するスクリプトについて話していますが、そのようなプログラム(zenity
//yad
など)をサポートする多くのコードがあります。xdialog
これには非常に異なる構文が含まれています。
上記が完了していない理由はありますか?
答え1
上記が完了していない理由はありますか?
シェルスクリプトはランタイムインタプリタを使用するため、移植性に優れています。例として使用したツール(特にGUIツール)はそうではありません。これは、Linux/x86、Linux/x86-64、Linux/armel、Linux/armhf、OSX/x86-64、OpenBSD/mipsel、および実行する他のプラットフォーム用の別々のバージョンが必要であることを意味します。
さらに、これらのエントリの一般的なコンパイルバージョンは共有ライブラリに依存します。依存関係について本当に心配したくないが、含めたい場合は、SomeGUIApp
静的にコンパイルされたバージョンが必要であるか(6 == 2 * 3)、その依存関係とその依存関係を含める必要があります。1 2つ のうちの1つ ところで、これは皆さんが「ただ5MB」だと思ったのが結局数百個になることを悟る時です。現在のメモリ消費量を見てください。一般的なタスクを実行する一般的なGUIデスクトップであれば、ほとんどがGUIライブラリなどになります。
長いLinuxユーザーとして、私は一般的にバイナリを含めることに残念です。なぜなら、汎用にコンパイルされたものには問題が発生する可能性がある多くのものがあるからです。他のオプションがない場合にのみ実際に使用します(またはもちろんディストリビューションからインポートした場合)。
今、誰もがそうしたと想像してみてください。SomeGUIApp
私のシステムに15のコピーが必要ですか?前提条件として何かをリストする方が良いです。私が持っていない場合は得ることができます。すでに持っているものの別のコピーを提供します。
1. 多分要点は: どこかに線を描かなければならないが、元の包装にあったところに描いてみてはいかがでしょうか。