mirror of
https://github.com/golang/go
synced 2024-11-18 19:24:39 -07:00
ac1e4b1998
Initial commit of getgo, a "one-line installer". Example use from bash: curl -LO https://get.golang.org/$(uname)/go_installer && chmod +x go_installer && ./go_installer && rm go_installer It's comprised of two parts: cmd/getgo/server: an App Engine application that redirects users to an appropriate installer based on the request path, which identifies the user's operating system. It's deployed to get.golang.org. cmd/getgo: a cross-compiled binary that does the heavy lifting of downloading and installing the latest Go version (including setting up the environment) to the user's system. The installers are served from the golang GCS bucket. Currently supported systems: linux, darwin, windows / amd64, 386 Authored by Jess Frazelle, Steve Francia, Chris Broadfoot. Change-Id: I615de86e198d3bd93e418fa23055d00ddbdd99fb Reviewed-on: https://go-review.googlesource.com/51115 Reviewed-by: Jaana Burcu Dogan <jbd@google.com>
72 lines
2.5 KiB
Markdown
72 lines
2.5 KiB
Markdown
# getgo
|
|
|
|
A proof-of-concept command-line installer for Go.
|
|
|
|
This installer is designed to both install Go as well as do the initial configuration
|
|
of setting up the right environment variables and paths.
|
|
|
|
It will install the Go distribution (tools & stdlib) to "/.go" inside your home directory by default.
|
|
|
|
It will setup "$HOME/go" as your GOPATH.
|
|
This is where third party libraries and apps will be installed as well as where you will write your Go code.
|
|
|
|
If Go is already installed via this installer it will upgrade it to the latest version of Go.
|
|
|
|
Currently the installer supports Windows, \*nix and macOS on x86 & x64.
|
|
It supports Bash and Zsh on all of these platforms as well as powershell & cmd.exe on Windows.
|
|
|
|
## Usage
|
|
|
|
Windows Powershell/cmd.exe:
|
|
|
|
`(New-Object System.Net.WebClient).DownloadFile('https://get.golang.org/installer.exe', 'installer.exe'); Start-Process -Wait -NonewWindow installer.exe; Remove-Item installer.exe`
|
|
|
|
Shell (Linux/macOS/Windows):
|
|
|
|
`curl -LO https://get.golang.org/$(uname)/go_installer && chmod +x go_installer && ./go_installer && rm go_installer`
|
|
|
|
## To Do
|
|
|
|
* Check if Go is already installed (via a different method) and update it in place or at least notify the user
|
|
* Lots of testing. It's only had limited testing so far.
|
|
* Add support for additional shells.
|
|
|
|
## Development instructions
|
|
|
|
### Testing
|
|
|
|
There are integration tests in [`main_test.go`](main_test.go). Please add more
|
|
tests there.
|
|
|
|
#### On unix/linux with the Dockerfile
|
|
|
|
The Dockerfile automatically builds the binary, moves it to
|
|
`/usr/local/bin/getgo` and then unsets `$GOPATH` and removes all `$GOPATH` from
|
|
`$PATH`.
|
|
|
|
```bash
|
|
$ docker build --rm --force-rm -t getgo .
|
|
...
|
|
$ docker run --rm -it getgo bash
|
|
root@78425260fad0:~# getgo -v
|
|
Welcome to the Go installer!
|
|
Downloading Go version go1.8.3 to /usr/local/go
|
|
This may take a bit of time...
|
|
Adding "export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin" to /root/.bashrc
|
|
Downloaded!
|
|
Setting up GOPATH
|
|
Adding "export GOPATH=/root/go" to /root/.bashrc
|
|
Adding "export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/root/go/bin" to /root/.bashrc
|
|
GOPATH has been setup!
|
|
root@78425260fad0:~# which go
|
|
/usr/local/go/bin/go
|
|
root@78425260fad0:~# echo $GOPATH
|
|
/root/go
|
|
root@78425260fad0:~# echo $PATH
|
|
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/root/go/bin
|
|
```
|
|
|
|
## Release instructions
|
|
|
|
To upload a new release of getgo, run `./make.bash && ./upload.bash`.
|