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


12

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

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

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


編集:

したがって、新しいソリューションでもう少し遊んだ後、「問題」を少し洗練させることができます。

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

  1. いくつかの調査の後、これらのプログラムをに入れることにしました/usr/local/bin
  2. 日食をインストールする方法を、私はランチャーに表示するために何かを得るために考え出し、私は置く必要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

これらの指示は正しい/手動インストールを管理するのに良い方法ですか?従うべき他の手順はありますか?他の提案?


1
*.deb代わりにパッケージを探してみませんか?
m0nhawk

@ m0nhawk常に.debファイルを見つけることができないのですか?Eclipseのダウンロードページのように、tar.gzです。完全に見逃さない限り
-Raekye

1
Eclipseには、Debian 用のパッケージUbuntu用)が必ず存在します。そして、私が処理するための最良の方法だと思います*.tar.gz:ソフトウェアは、適切なパッケージを作成することである*.rpm*.debなど
m0nhawkを

1
.desktopメニューに何かを表示するにはファイルが必要です。update-alternativesの優先順位付けにのみ機能しますPATH
トリプリー

1
あなたの質問は、「______で新しいソフトウェアを登録するにはどうすればいいですか」についてです。ここで_____は特定のデスクトップ環境であり、「WRT linuxをどうすればよいか」ではありません。さらに、おそらく、$ PATH環境変数に関する暗黙の無知はありますか?
goldilocks

回答:


14

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

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

  • 誰もアプリをパッケージ化する手間をかけませんでした。
  • アプリをパッケージ化することは誰にも許可されていません(Javaを配布する唯一のものであると主張するOracleのように)。
  • パッケージは、ディストリビューションの値と矛盾するライセンスの下で公開されます。
  • ...

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

tarballのインストール方法は?

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

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

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

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

特別な場合:Autotools

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

Linux /オープンソース/フリーソフトウェアの世界では、1つのビルドシステムがより広く採用されました:GNU Autotools。(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


詳細な対応ありがとうございます。READMEを調べましたが、毎回何か違うことをしたくないと思いました。それで、さらに多くの調査、試み、およびフラストレーションの後、私はより具体的な質問/仕様を思いつきました-更新された投稿を見てください。
-Raekye

どういたしまして、それがお役に立てば幸いです:)私はあなたの更新に対処するために私の答えを編集しました。(emacsユーザーである場合を除いて)物事を行うための "One True Way"はないことに注意してください。さまざまなアプローチの長所と短所を時間とともに学習するには、試行錯誤を繰り返す必要があります。
rahmu

更新していただきありがとうございます!確かに。私はxxx.desktop一般にGNomeで動作すると推測しています。update-alternativesパスの設定に使用することについて何を知っていますか?
-Raekye

私の知る限り、これは複数のブラウザーやエディターを持つなど、Debian固有の汎用ソフトウェアの処理方法です。(UbuntuとMintはDebianに基づいており、これを継承しています)。興味のある方はこちらから
-rahmu

素晴らしい答え。多くの場合に必要な(または少なくとも推奨される)ことの1つは、(信頼するパッケージを使用して)最後の手順としてsudo make installを実行することです。これにより、ユーザーが所有していないシステムディレクトリ(/ usr / binなど)に物を置くために必要な権限がプロセスに与えられます。
ジョー

8

私はあなたがそれを「登録」したいものを自分で明確にすることがあると思う

説明するために-そして私は賢くしようとしているわけではありません-"linux"はもちろんカーネルであり、カーネルはinit以外のシステム上のユーザー空間ソフトウェアを知りませんし、関心もありません。ここで何を話しているのでしょうか?

いくつかの異なるディストリビューションについて言及しています。ディストリビューションで設定されていないいくつかの設定オプションセットが必要なため、リポジトリで使用できる場合でも、ソースからソフトウェアをビルドすることがあります。これに関する唯一の問題は、パッケージが他の何かの前提条件である場合、私がビルドしたパッケージの上に誤ってディストリビューションパッケージをインストールすることを避けるために、実際にパッケージシステムに登録する必要があることです。fedora / rpmベースのシステムでは、これはで行われrpm -i --justdb <package>ます。私はdebian / aptベースのシステムではこれをしません。代わりに、必要に応じてインストールを強制しますが、これはおそらく怠け者です- より良い方法あるようです、前提条件をすべて満たすように見せかけるダミーパッケージを作成します。それは、実際には.tar.gzソースからパッケージを作成するというm0nhawkの提案に沿ったものです-かなり単純なものを除きます(正直に言って、m0nhawkの提案とはまったく違うと言います)。

パッケージングシステムの問題以外にも、いくつかの問題があるようです。デスクトップ環境(Gnomeなど)については言及していますが、それらが何であるかは明確ではありません。これらは異種であるため、「Linuxでこれを行う方法」という質問に対する答えは1つもありません。 「gentoo」-「gnomeデスクトップでこれを行う方法」または「XFCEデスクトップでこれを行う方法」などの質問です。私の考えでは、唯一の問題は、ランチャーの問題です。すべてのDEがこれを行うための簡単な手段を提供すると信じたい(しかし、それらは異なるため、完全に同じではない)。

次に、initシステムによって管理されるサービスがあります(例:systemdまたはupstart)。したがって、この質問は実際には、関連する一連の関連する質問です。

  • aptやyumなどのパッケージングシステム
  • initシステム(systemdまたはupstartなど)
  • デスクトップ環境(例:kdeまたはunity)
  • ファイルブラウザ、たとえばnautilusまたはkonqueror
  • ?????

1つの単純な統合ソリューションが存在しない理由の1つは(XDG標準 その一部を提供している場合もありますが)、「linux」は1つの単純な統合オペレーティングシステムではなく、そのユーザーの大多数がそのように好むと思います。私はよくDEをまったく使用せず、付属のファイルブラウザーなども使用しません。

繰り返しますが、私は本当に役立っているだけでなく、役に立とうとしています。ここで解決したい問題がある場合、それらの問題が何であり、どのソフトウェアが実際に関与しているかをより正確に考慮する必要があります")それらを解決したい場合。


<「ディストリビューションのバイナリの」 - /私つぶやくソースベースのディストリビューションについて何か
njsg

また、XDG標準の問題は、おそらく一部のアップストリームがまったく気にかけないことと、ディストリビューションの開発者が.desktopファイルを提供していることです。
njsg

上流の開発者がそれを心配すべきかどうかはわかりません。あれば、それはエンドユーザーに提供されていますので、私はちょうどXDGを述べ、あなたがそれを使用したいです。異質性の代価は、それが不可避的に、例えばOSXで持っていないであろうユーザーに責任の負担をかけることです。一部のLinuxディストリビューションは他のLinuxディストリビューションよりもこれを最小限に抑えることを目指しており、自由に選択できますが、最終的にはそのモデルに本当に不快な人はLinuxをまったく使用しないでください-私は彼らが何をしたいのか分かりませんそもそも、
goldilocks

私はより良い質問を整理しました-手動でインストールしたアプリケーションをどのように管理する必要がありますか?通常、複雑な依存関係なしで実行されるEclipseやFirefoxのように(したがって、自分でセットアップしてパッケージをダウンロードできます)。あなたや他の誰かが言ったように、それらはスタンドアロンで動作しますが、ファイルシステム全体にそれらを残すのではなく、これらのアプリを追跡する必要がありますか?(更新された質問を参照)
Raekye

Raekye:それは私のポイントには何の違いもありません。つまり、あなたが望む範囲を除いて、ソースから/ usr / localにインストールしたものを管理したり、「追跡」したりする必要はありません。あなたの目的が何であれ。$ PATHでのコンパイルとインストール以外に、ユニバーサルLinuxレジストリはありません。これは、そのようなユニバーサルなアプローチの目的がないためです。私は、あなたが何かを見逃したのではないかと心配しているだけだと思っています。あなたはタールを外しますconfigure、あなた、あなたmake install。これで完了です。それ以降は個人的な好みの問題です。
goldilocks

4

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

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

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

あなたが探している特定のものがそうではないので、私は「ごく少数」のものがパッケージとして利用可能であると言っている限り行きません。(または、ディストリビューターがこのパッケージのすべての面倒を気にしないことを選択した可能性がありますか?Chromeや独自の更新プロセスのように)。ありそうです、多くのパッケージの周りにそれほどのための多くの異なったパッケージシステムのための非常に多くのアーキテクチャそんなにフリーソフトウェアそのためではない面白いです

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

パッケージの構築に関するさまざまなガイドがWebにあります。Debian はそれらの1つです

コンパイルしたパッケージを実行するだけであれば、バイナリパスを追加します$PATHか?

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


「コンパイルしたパッケージを実行するだけなら、$ PATHにバイナリパスを追加しますか?」< -私は正気のインストール手順(と言う、仮定make install等)を最低でも下のシンボリックリンクをインストールします/usr/bin/下の全部をインストールしない場合、/
njsg

ほとんどの場合、--prefix=/elsewhereカスタムビルドを通常のツリーから遠ざけるために多くのことをしているからだと思います。
マット

一般的に、使用しているtarball make install/usr/local/bin
Shadur

0

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

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

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

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.