web-dev-qa-db-ja.com

ソースからプログラムをコンパイルしてインストールする方法

これは私のLinuxの楽しみを本当に制限する問題です。アプリケーションがリポジトリにない場合、またはインストーラースクリプトがない場合、アプリケーションをソースからどこにどのようにインストールするのか私は本当に苦労しています。

Windowsに比べて簡単です。ウィザードですべての作業を行うインストーラーアプリケーションを使用する必要があります(かなり多く)。 Linuxでは...それほどではありません。

それで、これに関するヒントや指示はありますか、ソースからLinuxプログラムをインストールする方法、理由、場所を明示的に説明しているWebサイトはありますか?

42
Nitrodist

通常、プロジェクトには、ビルドおよびインストール方法の手順が記載されたWebサイトがあります。そのための最初のグーグル。

ほとんどの場合、次のいずれかを行います。

  1. ソースコードの特定のバージョンのリリースであるtarball(tar.gzまたはtar.bz2ファイル)をダウンロードします。
  2. Gzip圧縮されたtarballの場合はtar zxvf myapp.tar.gz、bzip圧縮されたtarballの場合はtar jxvf myapp.tar.bz2のようなコマンドでtarballを抽出します。
  3. 上記で作成したディレクトリにcdします
  4. ./configure && make && Sudo make installを実行します

または:

  1. Gitまたはsvnなどを使用して、公式のソースリポジトリから最新のソースコードを取得します。
  2. 上記で作成したディレクトリにcdします
  3. ./autogen.sh && make && Sudo make installを実行します

Configureとautogen.shはどちらも--prefix引数を受け入れて、ソフトウェアのインストール場所を指定します。私は自分でコンパイルしたソフトウェアをどこに置くべきか を確認することをお勧めします カスタムビルドされたソフトウェアをインストールするのに最適な場所についてのアドバイス。

24
Sandy

ソースからパッケージをコンパイルし、すべてのパッケージの依存関係、フラグなどを処理するパッケージマネージャーがあることを追加したいだけです。

BSDシステムではportsPorts Collectionを使用します

Debianでは、apt-getパッケージマネージャーもソースからインストールできます: APT HOWTO:ソースパッケージの操作 (Ubuntu、Linuxでも同じです)ミントとDebianに基づくその他すべて)

Gentooディストリビューションは、ソース全体からシステム全体をコンパイルするportageパッケージマネージャーを使用します: Portage Introduction

Slackwareはパッケージをコンパイルできますが、そのためのパッケージマネージャーがそこにあるかどうかはわかりません。

とにかく、上記のSandyのように常に手動でパッケージをコンパイルできます=)また、他のディストリビューションではapt-getまたはportageパッケージマネージャーを使用できる必要があります...

4
holms

インストールしたい特定のプログラムまたはアプリケーションに付属のドキュメントを読むのが最善だと思います。通常、tarball(通常はダウンロードできるアプリケーションソースアーカイブ)内にreadme/READMEがあります。また、ファイルをINSTALLして、そのアプリケーションをインストールするための推奨される方法を学びます。つまり、RTFM;)

2
reiche

FreeBSDでPorts Collectionを使用するための要約:

ポートを検索

ポートはカテゴリ別に整理されているため、ポートがどのカテゴリに属しているかわからない場合は、まずポートを見つける必要があります。

cd /usr/ports
make search name=myport

時々そのように多くのエントリがあります。私は個人的に好きです:

find /usr/ports -name myport* -print -depth 2

多くの場合、利用可能なポートの複数のバージョンがあるため、検索時には*を使用します。 depth引数を使用すると、返される結果が、必要のない一致で不必要に乱雑にならないようになります。

構成

多くの場合、いくつかの設定を行う必要があります。 ApacheやPostgresなどのソフトウェアは実際にそれを必要とします。主な選択肢は3つあります。コマンドライン、環境、および構成ファイルの作成です。コマンドラインから始めるには:

make showconfig

これにより、デフォルトの構成オプションがリストされます。デフォルトが気に入ったら、コンパイルしてインストールする準備ができています。そうでない場合、

make config

必要なオプションを選択できるダイアログボックスが表示されます。 (これと、選択したオプションでポートを構成するmake configureと混同しないでください!)これで十分なことがよくありますが、Apacheなどの一部のソフトウェアでは、単純なダイアログでは処理できない複雑な構成がよくあります。これについては、Makefileも確認する必要があります。Makefileにより、詳細情報を提供するmakeのターゲットが追加される場合があります。 Apacheの例を続けるには

make show-modules
make show-options
make show-categories

選択したモジュール、スレッドオプションなどの設定に関する情報を提供します。ポートのデフォルトがほとんど問題なく、いくつか変更したい場合は、環境変数のようなkey = valueペアを渡すこともできます。

make MYVBL1=MYVAL1 ... install clean

また、-Dオプションを使用してスイッチオプションを設定できます。

make -D MYVAR -D MYOTHERVAR ... install clean

ただし、複雑な構成の場合、コマンドラインはうまく機能せず、最初の2つの方法のどちらも効果的ではありません。この場合、構成ファイルを作成し、__ MAKE_CONF変数を使用してそれをmakeに渡すことができます。 FreeBSDにはデフォルトの設定ファイルがあります:/etc/make.confには通常、以前にインストールされたポートと他のシステム設定に関する情報が含まれています。まず、portsオプションを含むファイルを作成し、それを~/myport.mkと呼び、そのファイルを/etc/make.confと結合します。

cat /etc/make.conf ~/myport.mk >> ~/make.myport.conf

その後、構成を再確認できます。

make showconfig __MAKE_CONF=~/make.port.conf

そして、すべてが良さそうであれば:

make install clean __MAKE_CONF=~/make.myport.conf

注意してください! make configureまたはインストール全体または一部のインストール後に構成設定を調整する必要がある場合は、まず必ず最初に構成をクリアする必要があります

make rmconfig

そうしないと、ポートサブシステム、ポートのmakeデフォルト、および必要な構成の間で予期しない相互作用が発生します。

要約としてはこれでかなりですが、構成の複雑さはほとんどがアプリではなく、移植に関するものです。たとえば、bashには実際にオプションはありません。

インストール

これは簡単な部分です:

make install clean

またはできる

make build
make install
make clean

これはただタイピングするだけです。

それだけです。依存関係と構成オプションを再帰的に一覧表示したり、パッチで更新したりするなど、他にもできることは明らかです。ここでは、 HandbookPorts セクション、ポートサブシステムのmanページ(追加のmakeターゲットの詳細情報)、およびmake manページを参照します。 。

1
gvkv

最近、パッケージマネージャー以外のソースからインストールするときに「Checkinstall」の使用を開始しました。サードパーティのtarballから「パッケージ」を構築し、パッケージマネージャーツールを使用してインストールおよび管理(およびアンインストール)できます。

この記事をチェックしてください- http://www.linuxjournal.com/content/using-checkinstall-build-packages-source

0
aryeh