【Golang】ghqでGitRepositoryのパッケージをインストールする / 備忘録
僕はGolang初心者です。そして普段ghqを使ってgitrepositoryの管理をしています。
ブログやリポジトリには、稀にレポジトリ階層下のパッケージのインストールだけ明示する説明があったりします。
そのため、筆者は雛形を生成するためのskeletonというCLIツールを作りました。 次のようにgo getでインストールすることができます。
$ go get github.com/tenntenn/gosa/skeleton
出典: Goにおける静的解析のモジュール化について - Mercari Engineering Blog
(※今回「静的解析ハンズオン」のために記事を読み進めつつ、 手を動かしていたので使っているパッケージが @tenntenn さんのものとなっています。)
・目次
発生したエラー
話を戻して、直接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
を行います。
- go標準で使える
goの勉強頑張っていきます。