Infra Engineer

【コラム】Linuxアプリケーションのソースコードを用いたインストール ダウンロード~環境設定編
2020.12.02
Lv1

【コラム】Linuxアプリケーションのソースコードを用いたインストール ダウンロード~環境設定編

今回の内容

今回は、Linuxアプリケーションをソースコードからインストールする手順の前半部分である、ソースコードのダウンロードから環境設定までを順を追って説明します。

ソースコード

ソースコードとは、プログラミング言語で書かれたドキュメントのことです。我々が普段よく目にするWebページやスマートフォンのアプリの動作のもとになっているものです。
コンピュータ上で動作するものは、その動作のもとになるソースコードが必ず存在します。その中でも、オープンソースソフトウェア(OSS)という、一定のライセンスに沿ってソースコードが公開されているソフトウェアが存在します。
例えば、Linux OSはGPLといわれるライセンスで公開されており、誰でも無償で使用することが可能なほか、ソースコードを入手後に改変して使用することも可能になっています。
一方、商用ライセンスでは一般的にソースコードを公開しませんし、元のソースコードへ手を加えることも禁止されているものがほとんどです。

(用語解説1)GPLライセンスについて
GPL(General Public License)とは、制約なしに以下のことを認めるという思想のオープンソースライセンスです。
・いかなる用途でも使用可能
・ソースコードの解析、改変が可能
・第三者への再配布が可能
・改変したものを共有することが可能

ただし、GPLライセンスのもと公開されたソースコードを二次利用した場合、新たに作成された制作物に対しても上述の自由を守らなければなりません。
この思想のことを「コピーレフト」といいます。

インストール手順

アプリケーションをソースコードからインストールする際の手順を見ていきましょう。
本記事では例として、Apache 2.4系をソースコードからインストールしていきます。

【ソースコードからインストールの場合】
1. 公開元からソースコードをローカルにダウンロードする
2. 環境設定を行う
3. コンパイル
4. インストール

公開元からソースコードをローカルにダウンロードする

ソースコードは単一のファイルで公開されているわけではなく、関連プログラムやマニュアル等を含めたファイル群で公開されています。
まずは公開されているソースコード一式をローカル環境にダウンロードしましょう。

Apache HTTP SERVER PROJECT ダウンロードページ
https://httpd.apache.org/download.cgi

上記のページの最新安定版へのリンクをクリックします。
Apacheの場合、2つの異なる形式で圧縮されたファイル群が公開されています。解凍時の操作が若干変わるだけで、中身は同じです。
今回は、GZ形式で圧縮されたものを使用します。

Linux環境でブラウザを起動していれば、そのままリンクをクリックすればOkです。
Windows等でブラウザを使っている場合は一旦ダウンロードを行い、一式をLinux環境に配置する必要があります。
もしくは、ブラウザからダウンロードするのではなく、Linuxコマンドでダウンロードリンクからファイルをダウンロードします。
今回はコマンドを使用してダウンロードを行いたいと思います。

ブラウザと同じようなHTTPによるアクセスを行うために、wgetコマンドを使用します。
wgetコマンドは、指定したURLにアクセスし、ファイルをダウンロードしたり、ページの構成をファイルに保存することができます。

wgetコマンドの書式
#wget [URLリンク]

実際の操作は以下の通りです。

[root@localhost downloads]# wget https://ftp.yz.yamagata-u.ac.jp/pub/network/apache//httpd/httpd-2.4.46.tar.gz
--2021-01-13 00:46:08--  https://ftp.yz.yamagata-u.ac.jp/pub/network/apache//httpd/httpd-2.4.46.tar.gz
Resolving ftp.yz.yamagata-u.ac.jp (ftp.yz.yamagata-u.ac.jp)... 133.24.248.19, 133.24.248.16, 133.24.248.17, ...
Connecting to ftp.yz.yamagata-u.ac.jp (ftp.yz.yamagata-u.ac.jp)|133.24.248.19|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9363314 (8.9M) [application/x-gzip]
Saving to: ‘httpd-2.4.46.tar.gz’

httpd-2.4.46.tar.gz 100%[===================>]   8.93M  3.89MB/s    in 2.3s

2021-01-13 00:46:10 (3.89 MB/s) - ‘httpd-2.4.46.tar.gz’ saved [9363314/9363314]
※ URLのコピーについて
ブラウザにもよりますが、Google ChromeやMicrosoft Edgeの場合、リンクを右クリックするとURLのコピーが行えます。
あとはコマンドラインにペーストするだけです。TeraTermを使用している場合は、右クリックでクリップボードのペーストが行えます。

圧縮アーカイブの解凍・展開

ダウンロードされたファイルは、圧縮されたアーカイブファイルとなっています。アーカイブファイルに関しては、今回は本題とそれてしまうので詳細な説明は割愛させていただきますが、複数のファイルをひとつにまとめたものをイメージしていただければと思います。
要するに、そのまま中身を使用することができませんので、アーカイブ → ディレクトリ変換を行ってあげる必要があります。
また、アーカイブにも複数の形式があります。Linuxでよく目にするものとしては、tarcpioが挙げられます。
どの形式のアーカイブなのかは、ファイル名で判断をしてください。今回のApacheに関しては、.tarが名前に含まれているので、tar形式のアーカイブとなります。
アーカイブファイルの作成や展開を行うには、tarコマンドを使用します。

tarコマンドでアーカイブを展開する書式
#tar xfz [アーカイブファイルのパス]

tarコマンドは、アーカイブファイルの作成・展開の他に圧縮・解凍の機能も持っています。したがって、オプションの量も多いです。
今回は、GZ形式で圧縮されたtar形式のアーカイブファイルを解凍して展開する際の書式のみ取り上げさせていただきます。
各オプションの意味合いは以下の通りです。

オプション 説明
x tarの展開を行う
f ファイル名の指定
z GZIP形式で圧縮・解凍

zオプションについては、xオプションと同時に使用しているので、解凍を行います。

実際の操作は以下の通りです。アーカイブファイルのパスが正しく指定できていることを確認しましょう。

[root@localhost downloads]# ls
httpd-2.4.46.tar.gz
[root@localhost downloads]# tar xfz httpd-2.4.46.tar.gz
[root@localhost downloads]# ls
httpd-2.4.46  httpd-2.4.46.tar.gz
[root@localhost downloads]#

実行後にlsコマンドで確認してみると、元のアーカイブファイルの他に、.tar.gzがついていない名称のディレクトリが新規に作成されているはずです。

環境設定を行う

アプリケーションの中には、事前に他のライブラリやアプリケーションがインストールされていなければならないものもあります。
これを依存関係といいます。
しかしながら、ソースコードを使用してインストールしようとしているユーザーの環境にこれらが存在しているのか、また、ディレクトリツリーのどこに存在しているのかはまちまちです。
そこで、依存関係にあるプログラムが存在する場合、configureスクリプトも同時に配布されています。
このスクリプトを実行することで、各ユーザーの環境で該当プログラムを動作させることができるのかをチェックします。

スクリプトの実行方法は以下の通りです。lsでカレントディレクトリ配下にconfigureスクリプトが存在することを確認しましょう。

configureスクリプトの実行
#./configure

実行してみると、以下のようになります。

[root@localhost httpd-2.4.46]# ./configure
checking for chosen layout... Apache
checking for working mkdir -p... yes
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
configure:
configure: Configuring Apache Portable Runtime library...
configure:
checking for APR... no
configure: error: APR not found.  Please read the documentation.

出力結果の最終行を見ると、error: APR not found.となっています。
Apacheをインストールする前に、あらかじめAPR(Apache Portable Runtime)というプログラムが必要ということです。
こちらは、Apacheの公式サイトにダウンロードリンクがあります。

Apacheのソースコードをダウンロードした時と同様に、wgetでアーカイブファイルをダウンロードし、tarで解凍・展開します。

[root@localhost downloads]# wget https://ftp.jaist.ac.jp/pub/apache//apr/apr-1.7.0.tar.gz
--2021-01-13 02:42:24--  https://ftp.jaist.ac.jp/pub/apache//apr/apr-1.7.0.tar.gz
Resolving ftp.jaist.ac.jp (ftp.jaist.ac.jp)... 150.65.7.130, 2001:df0:2ed:feed::feed
Connecting to ftp.jaist.ac.jp (ftp.jaist.ac.jp)|150.65.7.130|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1093896 (1.0M) [application/x-gzip]
Saving to: ‘apr-1.7.0.tar.gz’

apr-1.7.0.tar.gz                                100%[====================================================================================================>]   1.04M   148KB/s    in 6.2s

2021-01-13 02:42:30 (172 KB/s) - ‘apr-1.7.0.tar.gz’ saved [1093896/1093896]

[root@localhost downloads]# tar xfz apr-1.7.0.tar.gz
[root@localhost downloads]# ls
apr-1.7.0  apr-1.7.0.tar.gz  httpd-2.4.46  httpd-2.4.46.tar.gz

新しく作成されたapr-*ディレクトリ内にもconfigureスクリプトがありますので、こちらを実行します。
configureスクリプトには–prefixというオプションがあり、インストール先のディレクトリを指定することが可能です。
今回は、/usr/local/lib/aprディレクトリにインストールしたいと思います。

[root@localhost apr-1.7.0]# ./configure --prefix=/usr/local/lib/apr
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
Configuring APR library
Platform: x86_64-pc-linux-gnu
checking for working mkdir -p... yes
APR Version: 1.7.0
(以下略)

まとめ

Linuxアプリケーションをソースコードからインストールする手順の前半部分を学びました。
アーカイブ操作に関しては、別途コマンドを学習する際にもピックアップされますので、雰囲気だけでもこの記事で押さえておきましょう。

Linux資格 「LPIC Lv1」徹底解説 連載目次リンク

Linux資格 「LPIC Lv1」徹底解説 連載目次

連載執筆講師が講座開講中!ITスクール SAK

ITスクールSAK | LPIC Lv1合格保証コース 講座紹介ページ