search
LoginSignup
2

More than 3 years have passed since last update.

posted at

updated at

Organization

ソースコードからdebパッケージを作成する(goの参考ビルド例付き)

TL;DR

  • ソースコードからコンパイルするソフトウェアツールを,ubuntu 18.04などのdebパッケージにまとめる手順を説明します
    • いわゆる野良ビルドなので,利用には注意が必要です
    • goのインストールを例に説明します

手順

  • check-installコマンドを使用してdebパッケージを作ります.
  • ツールをソースからインストールする際に行う,いつもの手順./configure && make && sudo make installの3番めのmake installの代わりに,checkinstallコマンドを使用するだけで,debパッケージを生成できます.
  • golangのソースコードにはMakefileが無いので,自分でMakefileを作ってしまいます
    • Makefileには,allinstalluninstallの3つのディレクティブの記載が必要です

check-installのインストール

aptitude isntall checkinstall

go用Makefileの作成

  • 以下のコードをMakefileとして保存します.
    • goをソースコードからビルドする手順をallディレクティブに記述します
    • ビルド済みバイナリを(実行できるディレクトリに)コピーする手順を,installディレクティブに記述します
      • バージョンをディレクトリ名に追記しているので,/usr/local/goディレクトリにシンボリックリンクを張ります
    • インストールしたファイル群を削除する手順を,uninstallディレクティブに記述します
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

参考

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2