.deb
時々提供されていない、.rpm
または実行可能ファイルとしてのみ提供されるソフトウェアを見つけます。
例えばビジュアルスタジオコード、サイバーストームまたはカーバル宇宙プログラム。
この質問では、Visual Studio Codeを参照点として使用します。
ソフトウェアは圧縮パッケージで提供されます。解凍すると、という実行可能ファイルを含む
フォルダが残ります。端末をダブルクリックまたはポイントすることで実行できます。しかし、このアプリケーションをインストールする正しい方法があるかどうかを知りたいです。 VSCode-linux-x64
Code
Code
/home/user/Downloads/VSCode-linux-x64/Code
私が達成したいことは次のとおりです
- これにより、提供されているすべてのアプリケーション/ソフトウェア(実行ファイル)を1か所に配置できます。
- ターミナルサポート(たとえば、
vscode
ターミナルのすべてのフォルダから書き込むことができ、自動的にVisual Studio Codeが実行されます。
追加情報:
- デスクトップ環境:GNOME 3
- オペレーティングシステム:ダーバン
編集する:
@kbaのアプローチが何よりも私のバックアップソリューションに適しているので、私は@kbaの答えを提供することにしました。スクリプトにバイナリを実行させると、パラメータを追加できます。
しかし、公平に言えば、@John WH Smithのアプローチは@kbaのアプローチと同じくらい良いです。
答え1
プログラムを名前で呼び出すために、シェルは$PATH
環境変数からディレクトリを検索します。 Debianでは、ユーザーのデフォルト値に(たとえば)を$PATH
含める必要があります。/home/YOUR-USER-NAME/bin
~/bin
まず、ディレクトリが存在することを確認し、ディレクトリが~/bin
ない場合は作成します。
mkdir -p ~/bin
バイナリをこのディレクトリにシンボリックリンクして、シェルで使用できるようにします。
mkdir -p ~/bin
ln -s /home/user/Downloads/VSCode-linux-x64/Code ~/bin/vscode
vscode
これにより、コマンドラインまたはコマンドランチャーで実行できます。
注:バイナリを$PATH
ディレクトリにコピーすることもできますが、相対パスに依存すると問題が発生する可能性があります。
ただし、一般的に言えば、オペレーティングシステム(apt-get、debパッケージ)またはソフトウェアプロジェクトのビルドツールが提供する手段を使用してソフトウェアを正しくインストールするのが最善です。これにより、関連パス(起動スクリプト、マニュアルページ、設定など)が正しく設定されます。
修正する:また反映するThomas Dekiでコメントそして破力ミサの答え私は通常、トップレベルのバイナリを含むtarball形式のソフトウェアで次のことを行います。
論理的な場所に配置します(標準準拠の順序で)。/opt
、/usr/local
または、ホームディレクトリのフォルダ(または)を作成し、その場所に変更され、バイナリを実行しているどこかに(または)に~/build
実行可能なスクリプトラッパーを作成します。$PATH
/usr/local/bin
~/bin
#/bin/sh
cd "$HOME/build/directory"
exec ./top-level-binary "$@"
これはディレクトリの変更をシミュレートし、バイナリを手動で実行するため、存在しない相対パスなどの問題をデバッグする方が簡単です。
答え2
~によるとTLDP、/opt
このタイプのソフトウェアに適した場所かもしれません。私はそれを使っていくつかのプリンタ関連ツールとSkypeの「動的」バージョンを保存します(kbaが言ったように、それPATH
に応じて変数を設定して「ターミナルサポート」を得ることができます)。
より一般的には、私は/opt
実行可能ファイルにパッケージされた独自のソフトウェアを「インストール」する傾向がありますが、これが私の場合かもしれません。また、私はこの種のソフトウェアを使用しない傾向があります。なぜなら、いったん実行すると、どんなことが起こるのか確信できないからです。
私が選択したもう1つの理由は、そのディレクトリ(および他のディレクトリ(たとえば))の外部のファイルに/opt
依存しないサードパーティのスタンドアロンコードで一般的に機能するためです。/opt/'package'
opt
/etc/opt
適切に機能するには、ファイルシステムツリーの特定の場所に存在する必要があるファイルを除いて、どのような状況でも、/opt、/var/opt、および/etc/opt階層の外に他のパッケージファイルを存在させることはできません。 [...]通常、システムでパッケージをサポートするために必要なすべてのデータは、/etc/opt/'パッケージ'および/var/opt/'パッケージのファイルのコピーを含む/opt/'パッケージ'になければなりません。そして/ optに予約されたディレクトリがあります。
ソースコード公開の利点の1つは、システムの詳細に基づいてカスタムライブラリ/ヘッダーパスを提供するようにコンパイルプロセスを設定できることです。開発者がコードを実行可能ファイルとしてリリースすることを決定した場合、これらの利点は消えます。 IMHO、この時点で、開発者はもはや自分のプログラムの依存関係を使用できると仮定することはできません(これがすべてが実行可能ファイルと一緒にパッケージ化される理由です)。
ここにインストールするすべてのパッケージには、別の/opt/'パッケージ'または/opt/'provider'ディレクトリツリーにある静的ファイル(たとえば、追加のフォント、クリップアート、データベースファイル)が必要です(Windowsと同様)。独自のディレクトリツリーC:¥Windows¥Progam Files¥「プログラム名」)、ここで「パッケージ」はソフトウェアパッケージを説明する名前、「プロバイダ」はプロバイダのLANANA登録名です。
詳細については、以下をお読みください。その他のU&L質問/opt
、との差を処理します/usr/local
。私は個人的にこれを避けたいと思います/usr/local
。特に私がそうでない場合は、さらにそうです。立てられる私がインストールしているプログラムです。
答え3
Visual Studio Codeの例に示すように、バイナリzipアーカイブまたはtarballから配布バイナリパッケージを作成することは完全に可能であり、実際には非常に簡単です。
deb
はい、sやsなどのLinuxディストリビューション用のバイナリパッケージはrpm
通常ソースから生成されますが、必ずしもそうではありません。必ずしもそうではありませんが、通常、展開バイナリパッケージが展開ポリシーに準拠するために「正しい」場所にアイテムをインストールするようにアイテムを配置することが可能です。
任意の排他的なタールボールの場合、makefileにインストール先などのソフトウェアを正しくインストールする方法があれば、配布包装機で動作することができます。それ以外の場合は、ファイルを「正しい」場所に「手動で」マップする必要があるため、多くの作業が必要になる場合があります。これらのパッケージの作成は奇妙に思えるかもしれませんが、パッケージ管理の主な利点の1つである新しくインストールおよび削除することができます。もちろん、そのようなパッケージはその名前にふさわしいLinuxディストリビューションでは決して受け入れられません。しかし、それはあなたの問題ではありません。
答え4
ln -s </path/to/executable> /usr/local/bin/<program-name>
仕事をしなければなりません。ローカルソフトウェアの標準的な場所は/opt
あるため、上記のコマンドを使用してインストールする前に、ソフトウェアフォルダ/ファイルをその場所に移動することをお勧めします。