LoginSignup
6
2

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-01-10

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

参考

6
2
0

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
  3. You can use dark theme
What you can do with signing up
6
2