2017-02-11 10 views
0

UNIXのようなオペレーティングシステムではa gameと書いてあります。私は現在このゲームのインストールスクリプトを書いています。

Traditionallyゲームバイナリは$prefix/gamesにインストールされましたが、FreeBSDのようなオペレーティングシステムの中にはgamesディレクトリを取り除いているものもあります。ユーザーが明示的に指定していない場合、$prefix/gamesまたは$prefix/binにゲームバイナリをインストールするかどうかを判断する良い方法はありますか?

インストールスクリプトは、ksh93、bash、およびPOSIXシェルで提供される機能の共通サブセットで記述されています。彼らは広く利用可能なユーティリティを呼び出す必要があります。

説明のため:この質問のトピックは、$prefixではありません。ユーザーが明示的にサブディレクトリーを指定していない場合は、$prefix/games$prefix/binのどちらを使用するかを決定しています。

+0

AFAIK、/ usr/gamesはまだFreeBSDのゲームの場ですが、オプションのインストールです。誰もがそれを望んでいるわけではありません。つまり、PostgreSQLがFreeBSDの/ usr/local/pgsqlに入っているように、$ prefix/$ packagename /にインストールする先行技術があります。システムに追加するファイルがローカルのパッケージ管理システムに記録されている限り、バイナリに$ prefix/bin、ライブラリに$ prefix/lib、設定に$ prefixなどを自由に使用できます**。パッケージングでうまく動作しないソフトウェアは、私が維持しているシステムにインストールされることはありません。期間。 – ghoti

+0

また、これはSOの話題のようには聞こえません。 IRCチャンネルで、サポートしたいと思っているさまざまなオペレーティングシステムについて尋ねることをお勧めします。まったく異なるプラットフォームが異なる好みを持つ可能性が高いです。 – ghoti

+0

@ghotiいいえ、そうではありません。たとえば、私のLinuxシステムでは、nethackは '/ usr/games/nethack'にインストールされますが、FreeBSDではportsは' games/usr/local/bin/nethack'にインストールされるようにパッチされています。 – fuz

答えて

1

FreeBSDでは、サードパーティのソフトウェアは/usr/localにインストールされています。 /usr/gamesディレクトリが存在する場合は、そのディレクトリには触れないでください。

OS Xでは、ソフトウェアアプリケーションがバンドルされて/Applicationsフォルダにインストールされますが、テキストベースゲーム(これは私が想定している)はおそらくそこには意味がないと思われます。 MacPortsを使用してソフトウェアをインストールすると、/opt/localになる傾向があります。 Brewを使用してソフトウェアをインストールすると、MacPortsとの競合を避けるため、/usr/localになる傾向があります。しかし、/*/local/の階層の「規則」は/Applicationsのものとは異なります。

ほとんどのLinuxディストリビューションでは、ソフトウェアは以前にインストールされたソフトウェアと競合しない限り、どこにでもインストールできます。ガイドラインはありますが、私が知る限り、それらの遵守は控えています。

これらの間の大きな共通点は、パッケージングシステムが関与していることです。あなたは通常、あなたが梱包リストでやっていることを追跡している限り、好きなことを何でもすることができます。私のアドバイスは、あなたの可能な限りシンプルでありながらなど柔軟なインストール維持すること、および聞かせ

(MacPortsの中port contents {portname}、FreeBSDの中pkg info -l {portname}などAPTベースのシステム、RPMベースのシステムでrpm -ql {pkgname}、中dpkg-query -L {pkgname}を参照してください)地方の包装システムは、物事がどこに行くかについて独自のルールを適用します。一部のオペレーティングシステムでゲームを別の場所に置く必要があると判断したため、ソフトウェアを変更する必要はありません。

PREFIX?=/usr/localのように接頭辞を設定すると、囲むスクリプトやMakefileによって簡単に上書きできるようになります。 installコマンドのさまざまなバリエーションをチェックして、サポートするプラットフォームに共通の基本的なオプションセットがあるかどうかを確認し、存在しない場合はcpのファイルをコピーするか、独自のinstallスクリプトを一部として組み込みますあなたのソフトウェアの。

+0

あなたの興味深い答えをありがとう、私はそれが私の質問に全く答えるかどうか分からない。 – fuz

+1

彼が言っていることは、 "あなたの好みを指定し、あなたの好みとは異なる好みの人が簡単に上書きできるようにすることです。 – ghoti

+0

ええ、そうです。とダング、私はそれのdownvoteを期待していない。 :-( – Graham

関連する問題