多くのアプリがパッケージ リポジトリで利用できないのはなぜですか?
多くの理由が考えられます:
- 誰もアプリをパッケージ化することを気にしませんでした。
- アプリをパッケージ化することは誰にも許可されていません (Java を配布するのは Oracle だけだと主張するように)。
- ディストリビューションの価値観と矛盾するライセンスの下でパッケージが公開されています。
- ...
理由は一つではありません。お気に入りのアプリをディストリビューションのパッケージ マネージャーに表示したい場合は、それぞれのケースを個別に扱う必要があります。開発者に (IRC チャネルやメーリング リストなどで) 連絡を取って、パッケージングをどのように支援できるか尋ねてみてください。
tarball のインストール方法
tarball (.tar.gz パッケージ) には何でも含めることができます。実際に開くまで、インストール方法を推測する方法はありません。繰り返しになりますが、パッケージごとに異なる方法でアプローチする必要があります。
ドキュメントを探してください! (ある程度) 適切なパッケージには、アプリケーションのインストール方法に関する説明が記載されています。最初の反射神経は、常に README や INSTALL などのテキスト ファイルを探すことです。出版社のウェブサイトをチェックすることも役立つかもしれません.
すべてのパッケージが異なるため、世界中のすべての tarball を処理する普遍的な方法はありません。それは、世界中のすべての材料に有効なレシピを求めるようなものです。起きていません。
システム、ディストリビューション、およびデスクトップ環境に関する十分な知識が役立つため、これが心強い場合は、Linux の世界で時間を過ごすにつれて、物事がますます予測可能に見えるようになります.
特殊なケース:Autotools
プロジェクトが大きくなるにつれて、ソース コードからバイナリ、さらにはシステムへのフル インストールに移行する簡単な方法を提供する必要があります。これが、必要な処理を実行するためのスクリプトのコレクションである組み込みビルド システムが同梱されている理由です。
Linux/オープン ソース/フリー ソフトウェアの世界では、GNU Autotools という 1 つのビルド システムが広く採用されました。 (n オープン) ソース パッケージを扱う場合は、Autotools を使用する可能性が高くなります。
autotools でパッケージ化されたアプリをインストールする最も単純なケースは次のとおりです。
./configure
:システムに対応する Makefile を生成するスクリプト (依存関係が利用可能かどうかもチェックすることがよくあります)。make
:前に生成された Makefile に従ってソース コードをコンパイルします。make install
:バイナリを適切な場所にコピーし、シンボリック リンクを作成し、開発者が定義したその他の手順を行います。
メモ
configure
通常、スクリプトには、使用するコンパイラやターゲット ディレクトリの定義方法など、多くのオプションがあります。柔軟性が必要な場合は、./configure --help
を見る価値があります。 .- それが Autotools であると確信していて、それをよく知っている場合でも、常に ドキュメント(README、INSTALLなど)を読むことから始めます
質問の最新情報への回答
あなたが求めるものには明確な答えはありません。ここにいる誰もが「良い習慣」とは何かについて意見を持っているかもしれませんが、結局のところ、自分に合った方法を見つけることができるのは自分だけです .簡単な答えがあれば、あなたはその質問をしていないでしょう。お使いのディストリビューションが答えてくれます。
そうは言っても、ここにいくつかの個人的な意見があります。
-
私のシステムでは、
/usr/local/bin
を予約しています 私のパッケージマネージャーによってインストールされたパッケージ用。手動でコンパイル/インストールするものはすべて/opt
になります .これは詳細ですが、同じプログラムの複数のバージョンを扱う際の大きな頭痛の種を回避するのに役立ちます. -
xxx.desktop
、および一般的な GUI の問題は、使用しているデスクトップ環境に固有のものです。それがあなたのシステムでうまくいくなら、素晴らしいです。ただし、Unix で利用可能なすべての環境に一般化することはできません。 -
/usr/local/bin
既に PATH にあるという利点があります。別のディレクトリ (/opt
など) を使用する場合 私が提案するように)、必ず PATH に含めてください。方法がわからない場合は、ターミナルを開き、ターミナルで次のコマンドを実行してください (最も美しい方法ではありませんが、システムについて何も知らないため、他に何も提案できません):echo 'export PATH=$PATH:/opt' >> ~/.bashrc
何に「登録」したいのかを自分で明確にする必要があると思います .
説明するために-そして私は賢くしようとしているわけではありません-「linux」はもちろんカーネルであり、カーネルはinitを超えてシステム上のユーザー空間ソフトウェアを認識しておらず、関心もありません。では、ここで何について話しているのでしょうか?
さまざまなディストリビューションについて言及しています。ディストリビューション バイナリでは設定されていない構成オプション セットが必要なため、レポジトリで利用できる場合でも、ソースからソフトウェアをビルドすることがあります。これに関して私が抱えている唯一の問題は、パッケージが他の何かの前提条件である場合、実際にこれを パッケージ システム に登録する必要があることです。 私が構築したものの上にディストリビューションパッケージを誤ってインストールするのを避けるために。 fedora/rpm ベースのシステムでは、これは rpm -i --justdb <package>
で行われます .私はこれを debian/apt ベースのシステムでは行いません。代わりに、必要に応じてインストールを強制するだけですが、これはおそらく怠惰です-前提条件を満たしているふりをするダミーパッケージを作成することで、より良い方法があるようです。これは、実際に .tar.gz ソースからパッケージを作成するという m0nhawk の提案に沿ったものです。ただし、かなり単純です (正直に言うと、m0nhawk の提案はまったく好きではありません)。 P>
パッケージングシステムの問題以外にもいくつか問題があるようです。デスクトップ環境(Gnomeなど)について言及していますが、それらが何であるかはわかりません。これらは異種であるため、「Linuxでこれを行うにはどうすればよいですか」という質問に対する答えは1つもありません。「ubuntuでこれを行うにはどうすればよいか」または「 gentoo」-「gnomeデスクトップでこれを行う方法」または「XFCEデスクトップでこれを行う方法」などの問題です。私の考えでは、唯一の問題はあなたが言及したランチャーの問題です。すべての DE がこれを行うための簡単な手段を提供すると信じたいと思います (ただし、DE は異なるため、まったく同じではありません)。また、ファイルを処理するためのデフォルトを提供するものがあるという問題もある可能性があります。その問題は、「ファイル ブラウザにコマンドを登録するにはどうすればよいか」だと思います (Linux のファイル ブラウザも異種のコレクションです)。
次に、init システム (systemd や upstart など) によって管理されるサービスがあります。したがって、この質問は実際には、次の可能性のある関連する一連の質問です:
- apt や yum などのパッケージング システム
- systemd や upstart などの init システム
- kde や unity などのデスクトップ環境
- nautilus や konqueror などのファイルブラウザ
- ?????
1 つの単純な統合ソリューションが存在できない理由の一部 (ただし、XDG 標準は そのような一部を提供すること) は、"linux" が 1 つの単純な統合されたオペレーティング システムではないということであり、そのユーザーの大多数はそのようにそれを好むと思います。私は DE をまったく使用しないことが多く、付属のファイル ブラウザも使用しません。
繰り返しますが、私はこれについて本当に助けになりたいと思っています。 ") それらを解決したい場合。
全体的な問題の基本的な理由は、Linux システム自体に「レジストリ」自体が含まれていないことだと思います。何かを実行するために本当に必要なのは、実行可能ファイルだけです。実行可能ファイルへのフルパスを指定したくない場合、ほとんどのシェルは、環境の $PATH 変数にリストされているディレクトリでそれらを探します。リンクされたライブラリなどでもう少し複雑になる可能性がありますが、通常はそこまで掘り下げる必要はありません。
Linux のさまざまなディストリビューションは、さまざまなファイルシステム レイアウトとパッケージ管理システムで標準化されており、そこに問題があります。 Redhat は rpm を使用し、Debian/Ubuntu は deb パッケージを使用します。アーチも独自の道を歩みました。ソフトウェア プロジェクトの観点からは、ディストリビューションに含めたい場合を除き、ユーザー ベースは 1 つのディストリビューションに完全に含まれているか、誰でも簡単にインストールできるようにすることを目的とした商用製品です。各種パッケージ。
実際には、gcc
でビルドされるソース tar.gz おそらく、一般的な「Linux パッケージ」の最良の定義です。いくつかの GNU ユーティリティと GCC を備えた Linux カーネルは、入手できる Linux ベースのオペレーティング システムのさまざまなフレーバーすべての間のほぼ共通点です。
あなたが探している特定のものがそうではないので、パッケージとして利用できるものは「非常に少ない」とは言えません。 (または、ディストリビューターがこのパッケージの煩わしさをすべて気にしないことを選択したのかもしれません? Chrome のように、それは独自の更新プロセスです)。非常に多くのフリーソフトウェアの非常に多くのアーキテクチャの非常に多くの異なるパッケージシステムの非常に多くのパッケージが周りにあり、面白くありません。
Linux のディストリビューション用のパッケージとして提供されていないものをビルドした場合、またはパッケージとしてビルドするオプションをサポートしている場合、それを実際のパッケージとして「登録」する最善の方法は、そのパッケージをビルドし、すべての場所を定義することです。ファイルは、選択したパッケージ システムに基づいて配置し、その方法でインストールする必要があります。魂になり、パッケージング作業をプロジェクトに貢献して、他の人がそれから利益を得ることができるようにします.
パッケージのビルドに関するさまざまなガイドがウェブ上にあります。 Debian もその 1 つです。
コンパイル済みのパッケージを実行するだけなら、バイナリ パスを $PATH
に追加してください。 ?
他のことをしている場合、それは何ですか?