digコマンドのクローンである dog を自分でビルドしてインストールする

dog とは

dog is a command-line DNS client, like dig. It has colourful output, understands normal command-line argument syntax, supports the DNS-over-TLS and DNS-over-HTTPS protocols, and can emit JSON.

github.com

リリースバイナリが実行できないことがある

インストール方法として、公式ドキュメント には、リリースバイナリ をそのままダウンロードする方法が挙げられています。

が、僕の環境では*1、実行時に以下のようなエラーが出て実行できません。依存関係によるもので、完全な解決も難しそうです。

$ bin/dog www.yahoo.co.jp
bin/dog: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by bin/dog)

直接ビルドしてインストールする

なので、直接ビルドしてインストールしましょう。常にこの方法を採ったほうが最新版を使えていいかもしれません。なお、$ cargo install dog を実行してインストールすることはできません(パッケージが用意されていない)。

1. リポジトリをクローンする

dog のリポジトリをクローンしましょう。

$ git clone https://github.com/ogham/dog.git

2. リポジトリのディレクトリに移動する

$ cd dog

3. 正しくビルドできるかを確かめる(開発用)

いきなりリリースビルドを行うのではなく、開発用のバイナリをビルド(とテスト)してみましょう。公式ドキュメント にある方法に従えばよいです。

$ cargo build
$ cargo test

正しくビルドおよびテストが出来たならば以下のような表示が得られるはずです。もしビルドに失敗した場合はエラーメッセージを見て対応しましょう。

$ cargo build
...
...
    Finished dev [unoptimized + debuginfo] target(s) in 32.40s
$ cargo test
...
...
test result: ok. 38 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

なお、開発用にビルドされたバイナリは target/debug/dog にあります。

4. リリースビルドを行う

開発用ビルドが問題ないならばリリースビルドしましょう。

$ cargo build --release
...
...
    Finished release [optimized] target(s) in 35.79s

リリースビルドは target/release/dog にあります。実行してみましょう。

$ target/release/dog --version
dog ● command-line DNS client
v0.1.0
https://dns.lookup.dog/

5. パスの通ったところに dog を置く

あとはパスの通った任意の場所に、生成された dog ファイルを置きましょう。

*1:Windows 上の WSL2 にインストールした、Ubuntu 20.04

Powered by はてなブログ