web-dev-qa-db-ja.com

Linuxにtar.gzファイルを本当にインストールする方法-手動でインストールされた(またはスタンドアロン)アプリケーションを管理する方法は?

パッケージと.debsを説明するこれらすべてのリンクが表示されます...わかっています...そしてtar.gzファイルを機能させるには多くの問題があります(例: Javaのupdate-alternatives または手動で/ usr/local/bin(または私が何時間もの検索から推測した他の場所)にあるファイル)。パッケージが非常にスマートである場合、パッケージまたは.debs/rpmsで使用できるLinuxアプリケーションはどれほど少ないのでしょうか。

私は新しいユーザーとして話しています。私は専門家がおそらくそれをよりよく知っていることを知っています(Eclipseのコンパイル可能なバージョンをダウンロードできると思いますか?)。 netbeansとchrome is .shのように、Eclipseはプレーンで起動可能なディレクトリです。Javaにはこれが必要ですupdate-alternativesビジネスですが、私はしませんそれ自体がUbuntu/Debianの「プログラムリスト」に登録される(コマンドとして登録される)などと考えます(これらはリポジトリで利用できることもありますが、ダウンロードページに適切な説明がないのはなぜか混乱しています)。

長い話:tar.gzファイルをダウンロードまたはコンパイルする場合、どのようにシステムに登録しますか? update-alternativesはコマンドとして登録しているようですが、Ubuntuでは検索バーに表示されません。 Debianでは、GNOME 2ランチャーにショートカットを手動で追加できます。しかし、私は本当に何をすべきですか?


編集:

新しいソリューションをもう少し試してみたら、「問題」を少し改善できます。

手動でインストールしたプログラムをどのように管理すればよいですか?これまでのところ、FirefoxとEclipseが唯一の例です(あまりダウンロードしていません)。彼らは両方とも箱を使い果たすことができます。どこにインストールすればよいですか? Eclipseには独自の手順があるようですが、「手動パッケージ」はすべて同じ方法で実行したいのです。

  1. 調査の結果、これらのプログラムを/usr/local/binに組み込むことにしました。
  2. Eclipseのインストール方法 から、ランチャーに何かが表示されるようにしたので、xxx.desktopファイルを~/.local/share/applications/に配置する必要があります。この.desktopファイルの名前は重要ですか?
  3. Autotoolsを使って(configureまたはunix/configureファイルを探して)うまくいくでしょう。これらすべてを追跡するためにCheckInstallを使用する必要があるいくつかの研究ポイント。
  4. パスを登録するには、update-alternativesを使用する必要があります。この Javaスレッド から、/usr/bin/Javaから/usr/lib/jvm/jdk...へのリンクを作成しているようです。 EclipseやFirefoxなどのこれらの「スタンドアロン」アプリケーションをインストールする場合、常に/usr/bin/[app]にリンクする必要がありますか?そして、アサーション1が真であれば、私はSudo update-alternatives --install "/usr/bin/[app]" "[app]" "/usr/local/bin/[app]" 1のようなことをしているでしょう

これらの手順は正しいですか/手動インストールを管理するための良い方法ですか?私が従うべき他のステップはありますか?他の提案?

12
Raekye

パッケージリポジトリで多くのアプリが利用できないのはなぜですか?

多くの理由が考えられます。

理由は1つだけではありません。ディストリビューションのパッケージマネージャーでお気に入りのアプリを表示したい場合は、それぞれのケースを個別に扱う必要があります。 (IRCチャネルまたはメーリングリストなどで)開発者と連絡を取り、パッケージ化を支援する方法を尋ねてください。

tarballをインストールするには?

Tarball(.tar.gzパッケージ)には何でも含めることができます。実際に開くまで、インストール方法を想定する方法はありません。繰り返しになりますが、パッケージごとに異なる方法でアプローチする必要があります。

ドキュメントを探してください!任意の(セミ)まともなパッケージは、アプリケーションのインストール方法に関する指示を提供します。最初の反射神経は、常にREADME、INSTALLなどのテキストファイルを探すことです。出版社のウェブサイトをチェックすることも役立つかもしれません。

パッケージはそれぞれ異なるため、世界中のすべてのtarballを処理する普遍的な方法はありません。それは、世界のすべての食材に作用するレシピを求めるようなものです。起きていません。

システム、ディストリビューション、およびデスクトップ環境についての十分な知識が役立ちます。そのため、これが安心できる場合、Linuxの世界で時間を過ごすにつれて、事態はますます予測可能になります。

特殊なケース:Autotools

プロジェクトが大きくなるにつれて、ソースコードからバイナリに移行してシステムに完全インストールする簡単な方法を提供する必要があります。これが、必要なことを行うためのスクリプトのコレクションである組み込みビルドシステムが同梱されている理由です。

Linux /オープンソース/フリーソフトウェアの世界では、1つのビルドシステムがより広く採用されました。 GNU Autotools 。 (n open)ソースパッケージを扱ったことがあれば、Autotoolsを使用する可能性は十分にあります。

最も単純なケースでは、autotoolsでパッケージ化されたアプリをインストールする方法は次のとおりです。

  • ./configure:システムに対応するMakefileを生成するスクリプト(多くの場合、依存関係の可用性もチェックします)。
  • make:以前に生成されたMakefileに従ってソースコードをコンパイルします。
  • make install:バイナリを適切な場所にコピーし、シンボリックリンク、および開発者が定義したその他の手順を作成します。

注意事項

  • configureスクリプトには通常、使用するコンパイラーやターゲットディレクトリの定義方法など、多くのオプションがあります。柔軟性が必要な場合は、./configure --helpをご覧ください。
  • Autotoolsであると確信していて、それを非常によく知っている場合でも、alwaysはまずドキュメント(README、INSTALLなど)を読むことから始めます。

質問の更新に対する回答

あなたが求めていることには明確な答えはありません。ここの誰もが「良い習慣」を構成するものについて意見を持っているかもしれませんが、結局、あなただけがあなたのために働くものを見つけることができます。簡単な答えがあったとしても、あなたは質問をすることはないでしょう。あなたのディストリビューションはあなたのためにそれに答えたでしょう。

これが言われて、ここにいくつかの個人的な発言があります。

  • 私のシステムでは、パッケージマネージャーによってインストールされたパッケージ用に/usr/local/binを予約しています。手作業でコンパイル/インストールしたものはすべて/optに入ります。これは詳細ですが、同じプログラムの複数のバージョンを処理するときに大きな問題を回避するのに役立ちます。

  • xxx.desktop、および一般的なGUIの問題は、使用しているデスクトップ環境に固有です。それがあなたのシステムでうまくいくなら、素晴らしい。しかし、Unixで利用可能なすべての環境に一般化することはできません。

  • /usr/local/binには、すでに [〜#〜] path [〜#〜] にあるという利点があります。別のディレクトリ(/optなど)を使用する場合は、PATHに必ず含めてください。方法がわからない場合は、ターミナルを開き、ターミナルで次のコマンドを実行します(これを行うのは最も良い方法ではありませんが、システムについて何も知らなければ、他に何も提案できません):echo 'export PATH=$PATH:/opt' >> ~/.bashrc

15
rahmu

全体的な問題の基本的な理由は、Linuxシステム自体には「レジストリ」が含まれていないためだと思います。実行可能ファイルは、何かを実行するために本当に必要なすべてです。実行可能ファイルへのフルパスを指定したくない場合、ほとんどのシェルは環境の$ PATH変数にリストされているディレクトリでそれらを探します。リンクされたライブラリなどを使用すると、少し複雑になる可能性がありますが、通常、それほど深く掘り下げる必要はありません。

Linuxのさまざまなディストリビューションがさまざまなファイルシステムレイアウトとパッケージ管理システムで標準化しているため、そこに問題があります。 Redhatは rpm を使用し、Debians/Ubuntuはdebパッケージを使用します。アーチ も独自の方法 でした。ソフトウェアプロジェクトの観点から見ると、ディストリビューションに含まれることを望まない限り、ユーザーベースは完全に1つのディストリビューションにあるか、すべての人が簡単にインストールできることを目的とした商用製品であり、おそらく構築を検討する唯一のポイントです。さまざまなパッケージ。

実際には、gccを使用してビルドするソースtar.gzが、一般的な「Linuxパッケージ」のおそらく最良の定義です。いくつかのGNU=ユーティリティとGCCを備えたLinuxカーネルであり、Linuxベースのオペレーティングシステムのさまざまなフレーバーの共通点をほぼ共有しています。

あなたが探している特定のものはそうではないので、パッケージとして利用できるものは「とても少ない」とまでは言いません。 (または、ディストリビュータがこのパッケージの煩わしさを気にしないことを選択しましたか?Chromeとそれ自身の更新プロセスです)。そこに そうです 多くの パッケージ 周りの for so 多くの different package systems for so many architectures 非常に多くのフリーソフトウェアでは 面白くない

Linuxのディストリビューションのパッケージとして提供されていないものをビルドした場合、またはパッケージとしてビルドするオプションをサポートしている場合、それを実際のパッケージとして「登録」するには、パッケージをビルドして、すべての場所を定義するのが最適です。ファイルは、選択したパッケージシステムに基づいて移動し、その方法でインストールする必要があります。魂を込めて、パッケージング作業をプロジェクトに戻し、他の人がそれから利益を得ることができるようにします。

さまざまなガイドビルドパッケージ に関するウェブがあります。 Debian それらの1つである

コンパイルしたパッケージを実行するだけの場合は、 バイナリパスを$PATH に追加できます

他のことをしている場合、それは何ですか?

5
Matt

~/bin/の代わりに/usr/binへのシンボリックリンクも使用できることを付け加えておきます。 *.desktopファイルは~/.local/share/applications/または/usr/share/applications/に配置できます。私だけが自分のコンピュータを使用しており、システムファイル(ホームディレクトリの外にあるもの)にはできるだけ手を触れないようにしています。

もちろん、対応するものを「ホームディレクトリ」に配置すると、他のユーザーには表示されません。

これは、debian wheezyのデフォルトの~/.profileに含まれているものです。

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi
0
Raekye