pavlog

ウェブエンジニアがあれやこれやを書きます

【Golang】ghqでGitRepositoryのパッケージをインストールする / 備忘録

僕はGolang初心者です。そして普段ghqを使ってgitrepositoryの管理をしています。

ブログやリポジトリには、稀にレポジトリ階層下のパッケージのインストールだけ明示する説明があったりします。

そのため、筆者は雛形を生成するためのskeletonというCLIツールを作りました。 次のようにgo getでインストールすることができます。

$ go get github.com/tenntenn/gosa/skeleton

出典: Goにおける静的解析のモジュール化について - Mercari Engineering Blog

(※今回「静的解析ハンズオン」のために記事を読み進めつつ、 手を動かしていたので使っているパッケージが @tenntenn さんのものとなっています。)

golangtokyo.connpass.com


・目次


発生したエラー


話を戻して、直接ghqを用いてダウンロードを行ってみます。

今回は先で挙げた勉強会の学習用に skeleton をインストールしてみます。

❯ ghq get github.com/tenntenn/gosa/skeleton
     error Not a valid repository: https://github.com/github.com/tenntenn/gosa/skeleton

当たり前ですが、上記のようなエラーが発生するはずです。

パッケージ単位でのインストールが必要になったりするので、備忘録的に記事に起こしておきます。

リポジトリ単位でダウンロードする


パッケージ単位で試みると、Not a Valid repository と言われるので、

リポジトリ単位で指定してからパッケージのインストールを行います。

❯ ghq get github.com/tenntenn/gosa
     clone ssh://git@github.com/tenntenn/gosa.git -> /Users/ikezawa-ryota/src/github.com/tenntenn/gosa
       git clone ssh://git@github.com/tenntenn/gosa.git /Users/ikezawa-ryota/src/github.com/tenntenn/gosa
Cloning into '/Users/ikezawa-ryota/src/github.com/tenntenn/gosa'...
Warning: Permanently added 'github.com,192.30.255.112' (RSA) to the list of known hosts.
remote: Enumerating objects: 228, done.
remote: Counting objects: 100% (228/228), done.
remote: Compressing objects: 100% (153/153), done.
remote: Total 228 (delta 57), reused 185 (delta 31), pack-reused 0
Receiving objects: 100% (228/228), 2.98 MiB | 918.00 KiB/s, done.
Resolving deltas: 100% (57/57), done.

ダウンロードできました。

❯ ghq list | grep gosa
github.com/tenntenn/gosa

実際にパッケージをインストールする


それでは、実際にパッケージをインストールしていきます。

といっても手順は簡単です。

事前に skeleton が存在しないことを確認します。

~/src/github.com/tenntenn/gosa/skeleton master
❯ pwd
/Users/ikezawa-ryota/src/github.com/tenntenn/gosa/skeleton
❯ which skeleton
skeleton not found

存在しないことが確認できたら、 skeleton ディレクトリに移動して go install を行います。

~/src/github.com/tenntenn/gosa/skeleton master
❯ go install
❯ which skeleton
/Users/ikezawa-ryota/bin/skeleton

実際に which コマンドで叩いて見ても skeleton が存在しているようです。

今回出てきたツールと静的解析向け記事の紹介


  • ghq
    • go標準で使える go get のようなコマンドを提供するツールです。特定のルートディレクトリを指定することが可能で、指定したディレクトリ以下へ git clone を行います。

github.com

budougumi0617.github.io

goの勉強頑張っていきます。