Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

[インデックス 17675] ファイルの概要

このコミットは、Go 1.2のリリースノートに関するドキュメントの更新です。具体的には、godocvetというGoツールが、$GOPATH/binではなく、以前からの場所にインストールされ続けることを明記しています。

コミット

doc/go1.2: godocとvetが常に古い場所($GOPATH/binではない)にインストールされることを文書化。

GitHub上でのコミットページへのリンク

https://github.com/golang/go/commit/d00fb0a1ea881f43ef320c65ef606c9900a9df86

元コミット内容

doc/go1.2: document that godoc and vet will always be installed to their old locations (not $GOPATH/bin).

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/13830043

変更の背景

Go 1.2のリリースでは、Goツールのインストールパスに関する変更がありました。通常、go getコマンドで取得したバイナリは$GOPATH/binにインストールされるようになりました。しかし、godocvetという特定のツールについては、この新しい規則が適用されず、以前からの場所にインストールされ続けることになりました。このコミットは、この例外的な挙動をユーザーに明確に伝えるために、Go 1.2のリリースノート(doc/go1.2.html)にその旨を追記することを目的としています。

この変更の背景には、Goツールの配布と管理に関する設計上の考慮事項があります。godocvetはGoディストリビューションのコア部分と見なされており、Goのインストールディレクトリ(通常は$GOROOT/bin)に直接配置されることが期待されていました。これにより、Goのインストールが完了すれば、これらのツールがすぐに利用可能になるという利点があります。もしこれらが$GOPATH/binにインストールされると、ユーザーは$GOPATHを設定し、そのパスを$PATHに追加する必要があり、Goの初期設定が複雑になる可能性がありました。

前提知識の解説

  • Go言語: Googleによって開発されたオープンソースのプログラミング言語。シンプルさ、効率性、並行処理のサポートが特徴です。
  • godoc: Go言語のドキュメンテーションツール。Goのソースコードからドキュメントを生成し、Webサーバーとして提供することもできます。開発者がGoの標準ライブラリやサードパーティライブラリのドキュメントを簡単に参照するために不可欠なツールです。
  • vet: Go言語の静的解析ツール。Goのソースコードを検査し、潜在的なバグや疑わしい構造(例: Printfのフォーマット文字列と引数の不一致、到達不能なコードなど)を報告します。コードの品質と信頼性を向上させるために使用されます。
  • $GOPATH: Go言語のワークスペースのルートディレクトリを指す環境変数です。Go 1.11以前では、Goのソースコード、パッケージ、バイナリを配置するための必須の場所でした。Go 1.11以降のGo Modulesの導入により、$GOPATHの重要性は低下しましたが、依然として一部のツールやレガシーなプロジェクトでは使用されます。
    • $GOPATH/src: ソースコードが配置されるディレクトリ。
    • $GOPATH/pkg: コンパイルされたパッケージオブジェクトが配置されるディレクトリ。
    • $GOPATH/bin: go installgo getでインストールされた実行可能バイナリが配置されるディレクトリ。
  • go get: Go言語のコマンドラインツールで、リモートリポジトリからGoパッケージをダウンロードし、インストールするために使用されます。通常、ダウンロードされたソースコードは$GOPATH/srcに配置され、コンパイルされたバイナリは$GOPATH/binに配置されます。
  • Go 1.2: 2013年12月にリリースされたGo言語のバージョンです。このバージョンでは、ランタイムの改善、ツールの強化、言語仕様の微調整など、多くの変更が加えられました。特に、$GOPATH/binへのバイナリのインストールに関する挙動の変更は、ユーザーにとって重要な情報でした。

技術的詳細

このコミットは、Go 1.2のリリースノートであるdoc/go1.2.htmlファイルに、godocvetのインストールパスに関する重要な注意書きを追加するものです。

Go 1.2では、go getコマンドによってインストールされるバイナリのデフォルトのインストール先が$GOPATH/binに変更されました。これは、ユーザーがGoのプロジェクトを管理し、依存関係を解決する方法を標準化するための一環でした。しかし、godocvetは、Goのディストリビューションに密接に関連するツールであり、Goのインストールが完了した時点で、特別な設定なしに利用できることが望ましいと判断されました。

そのため、これらのツールは、go getでインストールされた場合でも、従来の場所(通常は$GOROOT/bin、Goのインストールディレクトリ内のbinサブディレクトリ)に引き続きインストールされることになりました。この挙動は、他のgo getでインストールされるツールとは異なるため、ユーザーが混乱しないように明示的に文書化する必要がありました。

コミットによって追加されたテキストは、この例外を明確に説明しています。

<p>
When building from source, users must use "go get" to install godoc and vet.
+(The binaries will continue to be installed in their usual locations, not
+<code>$GOPATH/bin</code>.)
</p>

この記述は、ソースからGoをビルドするユーザーがgodocvetをインストールするためにgo getを使用する必要があることを再確認しつつ、そのバイナリが$GOPATH/binではなく、従来の場所にインストールされることを強調しています。これにより、ユーザーは$GOPATH/bin$PATHに追加していなくても、これらのツールを直接実行できることを理解できます。

この変更は、Goのツールチェーンの一貫性を保ちつつ、特定のコアツールのアクセシビリティを優先するという設計判断を反映しています。

コアとなるコードの変更箇所

変更はdoc/go1.2.htmlファイルに対して行われました。

--- a/doc/go1.2.html
+++ b/doc/go1.2.html
@@ -175,6 +175,8 @@ include these binaries, so users of these distributions are unaffected.

 <p>
 When building from source, users must use "go get" to install godoc and vet.
+(The binaries will continue to be installed in their usual locations, not
+<code>$GOPATH/bin</code>.)
 </p>

 <pre>

具体的には、以下の2行が追加されました。

+(The binaries will continue to be installed in their usual locations, not
+<code>$GOPATH/bin</code>.)

コアとなるコードの解説

追加されたコードはHTMLの段落タグ<p>内に挿入されています。

  • + は追加された行を示します。
  • (The binaries will continue to be installed in their usual locations, not は、godocvetのバイナリが、$GOPATH/binではない「通常の場所」にインストールされ続けることを説明するテキストです。
  • <code>$GOPATH/bin</code>.) は、$GOPATH/binというパスをコードとして強調表示し、その場所にはインストールされないことを明確に示しています。

この変更は、Go 1.2のリリースノートにおいて、godocvetのインストール挙動に関する重要な例外を明記することで、ユーザーの混乱を防ぎ、正しい情報を提供することを目的としています。

関連リンク

参考にした情報源リンク