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
