TL;DR
- ソースコードからコンパイルするソフトウェアツールを,ubuntu 18.04などのdebパッケージにまとめる手順を説明します
- いわゆる野良ビルドなので,利用には注意が必要です
-
go
のインストールを例に説明します
手順
-
check-install
コマンドを使用してdebパッケージを作ります. - ツールをソースからインストールする際に行う,いつもの手順
./configure && make && sudo make install
の3番めのmake install
の代わりに,checkinstall
コマンドを使用するだけで,debパッケージを生成できます. - golangのソースコードにはMakefileが無いので,自分でMakefileを作ってしまいます
- Makefileには,
all
,install
,uninstall
の3つのディレクティブの記載が必要です
- Makefileには,
check-installのインストール
aptitude isntall checkinstall
go用Makefileの作成
- 以下のコードをMakefileとして保存します.
- goをソースコードからビルドする手順を
all
ディレクティブに記述します - ビルド済みバイナリを(実行できるディレクトリに)コピーする手順を,
install
ディレクティブに記述します- バージョンをディレクトリ名に追記しているので,
/usr/local/go
ディレクトリにシンボリックリンクを張ります
- バージョンをディレクトリ名に追記しているので,
- インストールしたファイル群を削除する手順を,
uninstall
ディレクティブに記述します
- goをソースコードからビルドする手順を
Makefile
#!/bin/env make
all:
wget https://dl.google.com/go/go1.13.5.src.tar.gz
wget https://dl.google.com/go/go1.4-bootstrap-20171003.tar.gz
mkdir go1.13.5 && tar xzvf go1.13.5.src.tar.gz -C go1.13.5 --strip-components 1
mkdir go1.4-bootstrap && tar xzvf go1.4-bootstrap-20171003.tar.gz -C go1.4-bootstrap --strip-components 1
cd ./go1.4-bootstrap/src && \
CGO_ENABLED=0 bash ./make.bash && \
cd -
cd ./go1.13.5/src && \
GOROOT_BOOTSTRAP=${PWD}/go1.4-bootstrap bash ./all.bash && \
cd -
install:
cp -r go1.13.5 /usr/local/go1.13.5
ln -s /usr/local/go1.13.5 /usr/local/go
uninstall:
rm -rf /usr/local/go1.13.5 /usr/local/go
clean:
rm -f go1.13.5.src.tar.gz go1.4-bootstrap-20171003.tar.gz
rm -rf go1.13.5 go1.4-bootstrap
debパッケージの作成
-
make install
の代わりに,checkinstall
コマンドを実行します-
--install=no
オプションを使用しインストール作業は行いません - インストールは生成されたdebパッケージを使用します
- checkinstall時に出てくる質問には基本的にはすべてエンターキーでデフォルト値を選択します
-
sudo checkinstall --install=no
# 質問には基本的にはすべてエンターキーでデフォルト値を選択する
# go_20191227-1_amd64.deb
パッケージのインストール&アンインストール
### インストール
dpkg -i go_20191227-1_amd64.deb
### 確認作業
export PATH=/usr/local/go/bin:${PATH}
which go
# /usr/local/go/bin/go
go version
# go version go1.13.5 linux/amd64
### アンインストール
dpkg -r go