はじめに
アプリをインストールする場合、apt-get installコマンドで、リモートリポジトリからアプリをダウンロードしてインストールすることになるが、それ以外にも、ソースファイルをダウンロードして、自分の環境でコンパイルしてインストールする方法もあります。ただし、この場合は、自己責任で行って下さいという話になります。
ソースコードからコンパイルする方法について、rsyncというアプリを手本に、実際に試してみることにする。
rsyncの公式サイトはこちらです。
https://rsync.samba.org/
環境
focal (Ubuntu 20.04)
やったこと
ダウンロード先ディレクトリをtmpにするために、tmpにカーソルを移動します。
cd /tmp
wgetコマンドを使ってソースファイルをダウンロードします。拡張子はtar.gzとなっています。拡張子のtarは複数ファイルを1つのファイルにまとめたファイルで、tarファイルだけであれば、圧縮は行われていません。圧縮するとgzの拡張子がつきます。.tar.gzと拡張子が2つあるということは、複数のファイルを1つのファイルにまとめた後、そのファイル対して圧縮をかけたということになります。
wget https://download.samba.org/pub/rsync/src/rsync-3.2.3.tar.gz
tarコマンドでアーカイブを解凍して展開します。
オプションの意味は次のとおりです。
xは、アーカイブを展開する
vは、展開した後の個々のファイルを表示する
fは、ファイル名を指定します
tar -xvf rsync-3.2.3.tar.gz
ls -lすると、rsync-3.2.3というディレクトリが作成されていることが確認できます。rsync-3.2.3ディレクトリに移動します。
cd rsync-3.2.3
ls -l | grep configureすると、configure.shというスクリプトファイルがあります。このスクリプトファイルを実行します。
./configure
スクリプトファイルの実行が失敗しました。エラーが表示されています。
Configure found the following issues:
- Failed to find xxhash.h for xxhash checksum support.
- Failed to find zstd.h for zstd compression support.
- Failed to find lz4.h for lz4 compression support.
See the INSTALL file for hints on how to install the missing libraries and/or
how to generate (or fetch) man pages:
https://github.com/WayneD/rsync/blob/master/INSTALL.md
To disable one or more features, the relevant configure options are:
--disable-xxhash
--disable-zstd
--disable-lz4
configure.sh: error: Aborting configure run
xxhash、zstd、lz4の3つのライブラリが存在していないことが原因です。ライブラリを別途インストールしてもいいが、--disable-xxhash、--disable-zstd、--disable-lz4の3つのオプションをつけることで、ライブラリの機能を無効化して実行することができるようです。
無効化して実行します。
./configure --disable-xxhash --disable-zstd --disable-lz4
スクリプトファイルの実行が成功しました。
rsync 3.2.3 configuration successful
configureは、Makefileを生成するためのスクリプトファイルです。Makefileが作成されていることが確認できます。(grep makefileでは検索されないので注意)
ls -l | grep Makefile
makeコマンドで生成されたMakefileを実行します。
make
これでコンパイル(ビルド)が完了しました。バージョンを表示して、正しく表示されればOKです。
./rsync --version
コンパイルされたアプリをインストールをします。make installは、makeファイルで作成された実行ファイルをインストールするコマンドです。nオプションをつけると、確認のために疑似的にインストールコマンドが実行されるだけで、実際にインストールは行われません。
make -n install
やりたいことが終わったので、ダウンロードしたファイルを削除します。
cd ..
rm -rf rsync-3.2.3
rm rsync-3.2.3.*