Ubuntuにプログラムをインストールする場所と、既存のプログラムがインストールされた場所を知らせる方法は?


10

現在、Ubuntu / Linuxはまったく新しいので、Ubuntu Serverを使用しています。基本的なことを理解しようとしています。

プログラムをどこにインストールしているのか、どうすればわかりますか。たとえば、私は自分のサイトからダウンロードしたtarballを自分に配置してSphinx検索エンジンをインストールしました。

/home/sphinx

ディレクトリ。そのtarballを配置するためにsphinxディレクトリを作成しました。次に、次のコマンドを実行しました。

tar xvzf sphinx-0.9.8.1.tar.gz
cd sphinx-0.9.8.1/
./configure --with-mysql-includes=/usr/include/mysql --with-mysql-libs=/usr/lib/mysql

そしてこれら:

make
sudo make install

これで、これらのコマンドを実行したディレクトリに多数のファイルが置かれました。これは私のSpynxインストールですか、それとも別の場所にインストールしましたか?

Windowsでは、インストーラー(.exeファイル)を実行すると、プログラムはC:\ Program Filesディレクトリにインストールされます。すべてのプログラムが中央の場所にインストールされるLinuxにも同様のことが当てはまりますか、それともシステム上の任意の場所にプログラムをインストールできますか。

ご質問

  1. インストール済みのすべてのプログラムを1か所に保管して、ベストプラクティスの観点からこれに適した場所はどこにあるかを考えます。言い換えれば、C:\ Program Filesに相当するLinuxは何ですか?

  2. そして、常にこの場所にインストールする方法は、tarballを配置してこの場所からインストールコマンドを実行するだけの問題ですか?

  3. sudo apt-getを使用してパッケージをインストールするとどうなりますか?この場所をポイントして、apt-getに常にインストールするように指示するにはどうすればよいですか?

回答:


15

すべてのプログラムが中央の場所にインストールされているLinuxにも同様のことが当てはまりますか

おおよそのWindowsの同等物は、Linuxでのインストールディレクトリを

  • \Windows = /bin
  • \Windows\System32= /libおよび/sbin
  • \Program Files= /usr/binおよび/usr/lib

インストール済みのすべてのプログラムを1か所に保管することをお勧めします。これにより、ベストプラクティスの観点から、これに適した場所は何ですか。言い換えれば、C:\ Program Filesに相当するLinuxは何ですか?

それは/usr、特に/usr/binとの下のディレクトリになり/usr/libます。

そして、常にこの場所にインストールする方法は、tarballを配置してこの場所からインストールコマンドを実行するだけの問題ですか?

  • いいえ 。インストールコマンドを実行するときの場所はほとんど問題になりません。

  • apt-get(またはaptitude)を介してインストールするプログラムは、ほとんどの場合で適切に終了します/usr。しかしプログラムは、あなたがソースからコンパイルしてmake installより頻繁になってしまいます/usr/local/bin/usr/local/libなど、とDebian / Ubuntuの中にユーザーがインストールパスがあるので、あなたはそれで問題が発生することがあり/usrそしてません/usr/local

  • ソースからコンパイルする場合は、このスイッチを追加して構成します./configure --prefix=/usr。このようにするとmake install、ファイルが正しいディレクトリに配置されます

  • またcheckinstall、ソースインストールからコンパイルされたパッケージがインストールするファイルを追跡し、debファイルを作成し、簡単なアンインストール/再インストールを可能にするプログラムを調べます。

sudo apt-getを使用してパッケージをインストールするとどうなりますか?この場所をポイントして、apt-getに常にインストールするように指示するにはどうすればよいですか?

apt-get/ dpkgこれを自動的に処理します。を使用dpkg -L name-of-packageして、パッケージによってインストールされたすべてのファイルと、それらがインストールされた場所を確認できます。


詳細な回答に感謝します。1つの質問だけです。「いいえ。インストールコマンドを実行する場所はほとんど問題にならない」と言ったので、tarballから抽出した/ home / sphinx /内のSphinxフォルダを安全に削除できるプログラムをインストールしたということですか?そして、インストールを実行してコマンドを作成しましたか?これは、プログラムをインストールするためにすでに実行したインストーラーに相当しますが、今では使い物になりませんか?
JakeRow123 2012年

1
はい、tarballから抽出されたフォルダーを削除できます。これは、本質的には、インストーラーが抽出された「temp」フォルダーのようなものであり、現在は使用できません。それは素晴らしい質問でした。この情報を含めるように回答を編集します。
ish

できますが、「make uninstall」でそれらをアンインストールすると問題が発生します。Debian / Ubuntuでは、ソフトウェアをプレフィックス/または/ usrにインストールしないでください。/usr/localを使用する必要があります。理由は、/ usr / localがローカル管理者向けに作成されているためです。つまり、JakeRow123が独自のプログラムをインストールします。/および/ usrはDebianパッケージ専用です。そこにインストールした場合、問題が発生する可能性があるため、chanseは大きくなります。自分でコンパイルするときは、コマンドconfigureにスイッチ '--prefix = / usr / local'を使用してください。その後、「作る; sudo make install 'はそこにプログラムをインストールします。
アンデルス

@Anders make uninstallは標準機能ではなく、多くのプログラムソースには含まれていません。また、/usr/localUbuntuのパスに含まれていないことが多く、プログラムの実行やコンパイルの試行時に問題が発生する可能性があります(に含まれているため/usr/local)。
ish

/ usrの下など、間違った場所にソフトウェアをインストールしないでください。/usr/localのような適切な場所にはインストールしないでください。コンピューター/ユーザー環境が正しくセットアップされていない場合は、PATHで障害を修正する必要があります。/または/ usrの下にインストールすると、問題が発生します。これを信じて。そこに行ってそれをやりました。面白くなかった。全然。一部のプログラムは、すべてautoconfigを使用しており、configureコマンドを使用してセットアップするとアンインストールされます。それを持たない他の人は役に立たず、バグが報告されるべきです...
Anders

4

通常、プログラムは、プレフィックスと呼ばれる1つの最上位ディレクトリの下のいくつかのディレクトリにインストールされます。これはトップの使用にディレクトリ魔女目的と誰がソフトウェアを管理しますため、インストールしている人に依存します。

プレフィックス/usrは、ディストリビューションによってパックされた使用済みソフトウェアです。あなたはすべきではない、それはので、そこに他のソフトウェアをインストールします分布によってパックのアップグレードソフトウェアをインストールし、とき分布を混乱させる。そのため、独自にコンパイルしたソフトウェアをそこにインストールしないでください。あなたが本当にあなたが何をしているのかを知らない限り、それは良い考えではありません。そして、あなたがDebianまたはUbunut開発者でない限り、あなたは通常そうしません。私はとにかくそれをしません。

商用ソフトウェアの場合は、プレフィックス/optが使用されます。ディストリビューションやローカルシステム管理者への干渉を最小限に抑えるために予約されています。

システム管理者がすべてのユーザーのためにインストールするソフトウェアの場合、プレフィックス/usr/localが使用されます。そこには、商用インストールと配布インストールのどちらからも邪魔にならず、それらを妨げることはありません。したがって、システム管理者はそれを使用します(root権限がある場合は、システム管理者です)。

自分でソフトウェアをインストールする通常のユーザーの場合は、--prefixオプションconfigurewith with prefix directory " ~/"またはを使用して、ホームディレクトリをプレフィックスとして使用できます$HOME/。学生時代によく使っていました。:-)

通常、適切な値のconfigureオプションを指定--prefixして実行すると、ソフトウェアは適切な処理を行いますmake; make install

これらの接頭辞の下では、通常、これらのディレクトリは標準インストールにあります。

  • bin -実行可能プログラム、バイナリ。
  • sbin -通常は一般ユーザーが実行すべきではないシステムバイナリ。
  • man -プログラム、ライブラリ、設定ファイルなどのマニュアルページ
  • etc -ソフトウェアのデフォルト値を含む設定ファイル。
  • lib -コンピューターのアーキテクチャー(CPUなど)に依存するプログラムライブラリとデータファイル。
  • share -異なるアーキテクチャで違いがなく、異なるコンピュータ間で共有できるデータファイル。
  • var-プログラムの実行中に変化するデータを含むディレクトリ。ログファイルなどのように

これらのディレクトリのほとんどは、書き込み保護されたファイルシステムで使用して、セキュリティを強化できます。ユーザーが書き込む必要があるのはvar/ディレクトリだけです。ソフトウェアが更新されたとき、これらのディレクトリは明らかに(?)書き込み権限を持っている必要があります。これは、インストール中に書き込み権限で再マウントし、インストール後に読み取り専用で再マウントすることで実行できます。しかし、これは高度なものであり、高度なパッケージ管理の例としてのみ示します。

いくつかのディレクトリが直接の下にもあります/(ルートディレクトリ)のような、他の接頭辞の下に存在しない/dev/tmp/procおよび/srv(サーバーのデータディレクトリの、しかし、彼らは下に通常ある/var/libか、/var/wwwあなたがに設定を変更する必要があるので、そのようなディレクトリとこのディレクトリを使用します。サーバーを実行しているときに実行することをお勧めします。/var/標準インストールのテストにのみ使用してください)。

  1. LinuxはMS Windowsではありません。インストールするプログラムを配置する場所はたくさんあります。それは誰が誰のためにインストールするかによります。私の投稿で読んでください。通知。RedHatは/usrDebian / Ubuntuが使用するのと同じように使用し/usr/localます。ディストリビューションについて学びます。
  2. プログラムによってインストール方法は異なります。--prefixを使用するプログラムに役立ちconfigureます。知る最良の方法は、おそらくREADME.txttarアーカイブで提供されているファイルなどを読み取ることです。tarアーカイブは、ホームディレクトリなど、任意の場所に抽出できます。インストール手順が完了した後、ストレージが不足している場合は、抽出されたtarアーカイブを削除できます。ただし、インストールを適切にテストしていない限り、それを早期に実行しないでください。
  3. apt-getまたはと共にインストールされるプログラムaptitudeは、常に配布の適切な場所にインストールされます。その場所は変更できません。

2

通常のインストールを使用してリポジトリからプログラムをインストールすると、正しい場所にインストールされ、適切な場所に構成ファイルが作成され(機能はWindowsレジストリと同様)、メニューエントリが自動的に作成されます。

ファイルをダウンロードするとき(非推奨ですが、アプリがリポジトリにないときに必要になることがよくあります)、最初に行ったのはtarを実行することでした。これは、Windowsでのunzipに相当します。これにより、表示される可能性が最も高いファイルが作成されます。

次に、make installを実行すると、通常は結果が適切な場所に配置され、おそらくメニューが作成されますが、tar形式でないファイルは消去されません。ほとんどの場合それを行うことができますが、念のために一時的に保存することもできます。

Debianディレクトリ構造に関する興味深い記事があります


システムによってインストールされたソフトウェアやディストリビューション(Ubuntuなど)パッケージと競合しないように独自のソフトウェアをインストールする/ usr / localへの参照がなかったことを除いて、素晴らしい記事です。/または/ usrの下に独自のソフトウェアをインストールするには、問題を尋ねます。おそらく、解決策はシステムを最初からインストールし直すことだけです...
Anders
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.