blob: e9f0f0dc095c5c920aab6d855196dbdda2c5d449 [file] [log] [blame]
Brent Austinba3052e2015-04-21 16:08:23 -07001<!--{
2 "Title": "Getting Started",
3 "Path": "/doc/install"
4}-->
5
Dan Willemsen09eb3b12015-09-16 14:34:17 -07006<div class="hideFromDownload">
7
Brent Austinba3052e2015-04-21 16:08:23 -07008<h2 id="download">Download the Go distribution</h2>
9
10<p>
Dan Willemsen09eb3b12015-09-16 14:34:17 -070011<a href="https://golang.org/dl/" id="start" class="download">
Brent Austinba3052e2015-04-21 16:08:23 -070012<span class="big">Download Go</span>
13<span class="desc">Click here to visit the downloads page</span>
14</a>
15</p>
16
17<p>
18<a href="https://golang.org/dl/" target="_blank">Official binary
Dan Willemsen09eb3b12015-09-16 14:34:17 -070019distributions</a> are available for the FreeBSD (release 8-STABLE and above),
20Linux, Mac OS X (10.7 and above), and Windows operating systems and
21the 32-bit (<code>386</code>) and 64-bit (<code>amd64</code>) x86 processor
22architectures.
Brent Austinba3052e2015-04-21 16:08:23 -070023</p>
24
25<p>
26If a binary distribution is not available for your combination of operating
27system and architecture, try
28<a href="/doc/install/source">installing from source</a> or
29<a href="/doc/install/gccgo">installing gccgo instead of gc</a>.
30</p>
31
32
33<h2 id="requirements">System requirements</h2>
34
35<p>
Dan Willemsen09eb3b12015-09-16 14:34:17 -070036Go binary distributions are available for these supported operating systems and architectures.
37Please ensure your system meets these requirements before proceeding.
38If your OS or architecture is not on the list, you may be able to
39<a href="/doc/install/source">install from source</a> or
40<a href="/doc/install/gccgo">use gccgo instead</a>.
Brent Austinba3052e2015-04-21 16:08:23 -070041</p>
42
43<table class="codetable" frame="border" summary="requirements">
44<tr>
45<th align="center">Operating system</th>
46<th align="center">Architectures</th>
47<th align="center">Notes</th>
48</tr>
49<tr><td colspan="3"><hr></td></tr>
Dan Willemsen09eb3b12015-09-16 14:34:17 -070050<tr><td>FreeBSD 8-STABLE or later</td> <td>amd64</td> <td>Debian GNU/kFreeBSD not supported</td></tr>
51<tr><td>Linux 2.6.23 or later with glibc</td> <td>amd64, 386, arm</td> <td>CentOS/RHEL 5.x not supported; install from source for ARM</td></tr>
52<tr><td>Mac OS X 10.7 or later</td> <td>amd64</td> <td>use the clang or gcc<sup>&#8224;</sup> that comes with Xcode<sup>&#8225;</sup></td></tr>
Brent Austinba3052e2015-04-21 16:08:23 -070053<tr><td>Windows XP or later</td> <td>amd64, 386</td> <td>use MinGW gcc<sup>&#8224;</sup>. No need for cygwin or msys.</td></tr>
54</table>
55
56<p>
57<sup>&#8224;</sup><code>gcc</code> is required only if you plan to use
58<a href="/cmd/cgo">cgo</a>.<br/>
59<sup>&#8225;</sup>You only need to install the command line tools for
60<a href="http://developer.apple.com/Xcode/">Xcode</a>. If you have already
61installed Xcode 4.3+, you can install it from the Components tab of the
62Downloads preferences panel.
63</p>
64
Dan Willemsen09eb3b12015-09-16 14:34:17 -070065</div><!-- hideFromDownload -->
66
Brent Austinba3052e2015-04-21 16:08:23 -070067
68<h2 id="install">Install the Go tools</h2>
69
70<p>
71If you are upgrading from an older version of Go you must
72first <a href="#uninstall">remove the existing version</a>.
73</p>
74
Dan Willemsen09eb3b12015-09-16 14:34:17 -070075<div id="tarballInstructions">
76
Brent Austinba3052e2015-04-21 16:08:23 -070077<h3 id="tarball">Linux, Mac OS X, and FreeBSD tarballs</h3>
78
79<p>
80<a href="https://golang.org/dl/">Download the archive</a>
81and extract it into <code>/usr/local</code>, creating a Go tree in
82<code>/usr/local/go</code>. For example:
83</p>
84
85<pre>
Dan Willemsen09eb3b12015-09-16 14:34:17 -070086tar -C /usr/local -xzf <span class="downloadFilename">go$VERSION.$OS-$ARCH.tar.gz</span>
Brent Austinba3052e2015-04-21 16:08:23 -070087</pre>
88
Dan Willemsen09eb3b12015-09-16 14:34:17 -070089<p class="hideFromDownload">
Brent Austinba3052e2015-04-21 16:08:23 -070090Choose the archive file appropriate for your installation.
91For instance, if you are installing Go version 1.2.1 for 64-bit x86 on Linux,
92the archive you want is called <code>go1.2.1.linux-amd64.tar.gz</code>.
93</p>
94
95<p>
96(Typically these commands must be run as root or through <code>sudo</code>.)
97</p>
98
99<p>
100Add <code>/usr/local/go/bin</code> to the <code>PATH</code> environment
101variable. You can do this by adding this line to your <code>/etc/profile</code>
102(for a system-wide installation) or <code>$HOME/.profile</code>:
103</p>
104
105<pre>
106export PATH=$PATH:/usr/local/go/bin
107</pre>
108
109<h4 id="tarball_non_standard">Installing to a custom location</h4>
110
111<p>
112The Go binary distributions assume they will be installed in
113<code>/usr/local/go</code> (or <code>c:\Go</code> under Windows),
114but it is possible to install the Go tools to a different location.
115In this case you must set the <code>GOROOT</code> environment variable
116to point to the directory in which it was installed.
117</p>
118
119<p>
120For example, if you installed Go to your home directory you should add the
121following commands to <code>$HOME/.profile</code>:
122</p>
123
124<pre>
125export GOROOT=$HOME/go
126export PATH=$PATH:$GOROOT/bin
127</pre>
128
129<p>
130<b>Note</b>: <code>GOROOT</code> must be set only when installing to a custom
131location.
132</p>
133
Dan Willemsen09eb3b12015-09-16 14:34:17 -0700134</div><!-- tarballInstructions -->
135
136<div id="darwinPackageInstructions">
137
Brent Austinba3052e2015-04-21 16:08:23 -0700138<h3 id="osx">Mac OS X package installer</h3>
139
140<p>
141<a href="https://golang.org/dl/">Download the package file</a>,
142open it, and follow the prompts to install the Go tools.
143The package installs the Go distribution to <code>/usr/local/go</code>.
144</p>
145
146<p>
147The package should put the <code>/usr/local/go/bin</code> directory in your
148<code>PATH</code> environment variable. You may need to restart any open
149Terminal sessions for the change to take effect.
150</p>
151
Dan Willemsen09eb3b12015-09-16 14:34:17 -0700152</div><!-- darwinPackageInstructions -->
153
154<div id="windowsInstructions">
155
Brent Austinba3052e2015-04-21 16:08:23 -0700156<h3 id="windows">Windows</h3>
157
Dan Willemsen09eb3b12015-09-16 14:34:17 -0700158<p class="hideFromDownload">
Brent Austinba3052e2015-04-21 16:08:23 -0700159The Go project provides two installation options for Windows users
160(besides <a href="/doc/install/source">installing from source</a>):
161a zip archive that requires you to set some environment variables and an
162MSI installer that configures your installation automatically.
163</p>
164
Dan Willemsen09eb3b12015-09-16 14:34:17 -0700165<div id="windowsInstallerInstructions">
166
Brent Austinba3052e2015-04-21 16:08:23 -0700167<h4 id="windows_msi">MSI installer</h4>
168
169<p>
170Open the <a href="https://golang.org/dl/">MSI file</a>
171and follow the prompts to install the Go tools.
172By default, the installer puts the Go distribution in <code>c:\Go</code>.
173</p>
174
175<p>
176The installer should put the <code>c:\Go\bin</code> directory in your
177<code>PATH</code> environment variable. You may need to restart any open
178command prompts for the change to take effect.
179</p>
180
Dan Willemsen09eb3b12015-09-16 14:34:17 -0700181</div><!-- windowsInstallerInstructions -->
182
183<div id="windowsZipInstructions">
184
Brent Austinba3052e2015-04-21 16:08:23 -0700185<h4 id="windows_zip">Zip archive</h4>
186
187<p>
188<a href="https://golang.org/dl/">Download the zip file</a> and extract it into the directory of your choice (we suggest <code>c:\Go</code>).
189</p>
190
191<p>
192If you chose a directory other than <code>c:\Go</code>,
193you must set the <code>GOROOT</code> environment variable to your chosen path.
194</p>
195
196<p>
197Add the <code>bin</code> subdirectory of your Go root (for example, <code>c:\Go\bin</code>) to your <code>PATH</code> environment variable.
198</p>
199
Dan Willemsen09eb3b12015-09-16 14:34:17 -0700200</div><!-- windowsZipInstructions -->
201
Brent Austinba3052e2015-04-21 16:08:23 -0700202<h4 id="windows_env">Setting environment variables under Windows</h4>
203
204<p>
205Under Windows, you may set environment variables through the "Environment
206Variables" button on the "Advanced" tab of the "System" control panel. Some
207versions of Windows provide this control panel through the "Advanced System
208Settings" option inside the "System" control panel.
209</p>
210
Dan Willemsen09eb3b12015-09-16 14:34:17 -0700211</div><!-- windowsInstructions -->
212
Brent Austinba3052e2015-04-21 16:08:23 -0700213
214<h2 id="testing">Test your installation</h2>
215
216<p>
Dan Willemsen09eb3b12015-09-16 14:34:17 -0700217Check that Go is installed correctly by setting up a workspace
218and building a simple program, as follows.
Brent Austinba3052e2015-04-21 16:08:23 -0700219</p>
220
221<p>
Dan Willemsen09eb3b12015-09-16 14:34:17 -0700222Create a directory to contain your <a href="code.html#Workspaces">workspace</a>,
223<code>$HOME/work</code> for example, and set the <code>GOPATH</code> environment
224variable to point to that location.
225</p>
226
227<pre>
228$ <b>export GOPATH=$HOME/work</b>
229</pre>
230
231<p>
232You should put the above command in your shell startup script
233(<code>$HOME/.profile</code> for example) or, if you use Windows,
234follow the <a href="#windows_env">instructions above</a> to set the
235<code>GOPATH</code> environment variable on your system.
236</p>
237
238<p>
239Next, make the directories <code>src/github.com/user/hello</code> inside your
240workspace (if you use GitHub, substitute your user name for <code>user</code>),
241and inside the <code>hello</code> directory create a file named <code>hello.go</code>
242with the following contents:
Brent Austinba3052e2015-04-21 16:08:23 -0700243</p>
244
245<pre>
246package main
247
248import "fmt"
249
250func main() {
251 fmt.Printf("hello, world\n")
252}
253</pre>
254
255<p>
Dan Willemsen09eb3b12015-09-16 14:34:17 -0700256Then compile it with the <code>go</code> tool:
Brent Austinba3052e2015-04-21 16:08:23 -0700257</p>
258
259<pre>
Dan Willemsen09eb3b12015-09-16 14:34:17 -0700260$ <b>go install github.com/user/hello</b>
261</pre>
262
263<p>
264The above command will put an executable command named <code>hello</code>
265(or <code>hello.exe</code>) inside the <code>bin</code> directory of your workspace.
266Execute the command to see the greeting:
267</p>
268
269<pre>
270$ <b>$GOPATH/bin/hello</b>
Brent Austinba3052e2015-04-21 16:08:23 -0700271hello, world
272</pre>
273
274<p>
275If you see the "hello, world" message then your Go installation is working.
276</p>
277
Brent Austinba3052e2015-04-21 16:08:23 -0700278<p>
Dan Willemsen09eb3b12015-09-16 14:34:17 -0700279Before rushing off to write Go code please read the
280<a href="/doc/code.html">How to Write Go Code</a> document,
281which describes some essential concepts about using the Go tools.
Brent Austinba3052e2015-04-21 16:08:23 -0700282</p>
283
284
285<h2 id="uninstall">Uninstalling Go</h2>
286
287<p>
288To remove an existing Go installation from your system delete the
289<code>go</code> directory. This is usually <code>/usr/local/go</code>
290under Linux, Mac OS X, and FreeBSD or <code>c:\Go</code>
291under Windows.
292</p>
293
294<p>
295You should also remove the Go <code>bin</code> directory from your
296<code>PATH</code> environment variable.
297Under Linux and FreeBSD you should edit <code>/etc/profile</code> or
298<code>$HOME/.profile</code>.
299If you installed Go with the <a href="#osx">Mac OS X package</a> then you
300should remove the <code>/etc/paths.d/go</code> file.
301Windows users should read the section about <a href="#windows_env">setting
302environment variables under Windows</a>.
303</p>
304
305
306<h2 id="help">Getting help</h2>
307
308<p>
309For real-time help, ask the helpful gophers in <code>#go-nuts</code> on the
310<a href="http://freenode.net/">Freenode</a> IRC server.
311</p>
312
313<p>
314The official mailing list for discussion of the Go language is
315<a href="//groups.google.com/group/golang-nuts">Go Nuts</a>.
316</p>
317
318<p>
319Report bugs using the
320<a href="//golang.org/issue">Go issue tracker</a>.
321</p>