{"id":13563611,"url":"https://github.com/owenthereal/goup","last_synced_at":"2025-05-15T14:02:08.211Z","repository":{"id":37875742,"uuid":"299215896","full_name":"owenthereal/goup","owner":"owenthereal","description":"Elegant Go installer","archived":false,"fork":false,"pushed_at":"2024-12-11T23:52:13.000Z","size":13123,"stargazers_count":566,"open_issues_count":13,"forks_count":49,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-15T03:51:52.959Z","etag":null,"topics":["golang","installer","version-manager"],"latest_commit_sha":null,"homepage":"https://owenou.com/goup","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/owenthereal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-09-28T06:52:46.000Z","updated_at":"2025-04-12T02:50:31.000Z","dependencies_parsed_at":"2023-12-13T06:21:29.946Z","dependency_job_id":"1c4771c2-20dc-4f0c-8b53-d630073488c0","html_url":"https://github.com/owenthereal/goup","commit_stats":{"total_commits":110,"total_committers":12,"mean_commits":9.166666666666666,"dds":0.2272727272727273,"last_synced_commit":"55280b85d7c326ab4d6acdb2ce663766a3f2bfbc"},"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/owenthereal%2Fgoup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/owenthereal%2Fgoup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/owenthereal%2Fgoup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/owenthereal%2Fgoup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/owenthereal","download_url":"https://codeload.github.com/owenthereal/goup/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254355324,"owners_count":22057352,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["golang","installer","version-manager"],"created_at":"2024-08-01T13:01:21.347Z","updated_at":"2025-05-15T14:02:08.149Z","avatar_url":"https://github.com/owenthereal.png","language":"Go","funding_links":[],"categories":["开源类库","Go","Version Managers"],"sub_categories":["依赖管理","Go"],"readme":"# Goup\n\n`goup` (pronounced Go Up) is an elegant Go version manager.\n\nIt is notorious that an operating system's package manager takes time to update Go to the latest version, particularly on Linux distros.\nAt the time of this writing in October 2020, Fedora 32's Go version from [dnf](https://fedoraproject.org/wiki/DNF) is 1.14.9, while the latest Go version is 1.15.2.\n\nThere are a bunch of solutions to install Go or manage Go versions outside of a package manager:\n[golang/dl](https://github.com/golang/dl), [getgo](https://github.com/golang/tools/tree/master/cmd/getgo), [gvm](https://github.com/moovweb/gvm), [goenv](https://github.com/syndbg/goenv), to name a few.\nAll of them either do not work well on all Linux distros (I ran into errors with `gvm` and `goenv` on Fedora) or do not provide the developer experience that I like (`golang/dl` requires a Go compiler to pre-exist; `getgo` can only install the latest Go)\n\nI want a Go version manager that:\n\n* Has a minimum prerequisite to install, e.g., does not need a Go compiler to pre-exist.\n* Is installed with a one-liner.\n* Runs well on all operating systems (at least runs well on *uix as a start).\n* Installs any version of Go (any version from [golang.org/dl](https://golang.org/dl) or tip) and switches to it.\n* Does not inject magic into your shell.\n* Is written in Go.\n\n`goup` is an attempt to fulfill the above features and is heavily inspired by [Rustup](https://rustup.rs/), [golang/dl](https://github.com/golang/dl) and [getgo](https://github.com/golang/tools/tree/master/cmd/getgo).\n\n## Installation\n\n### One-liner\n\n```\ncurl -sSf https://raw.githubusercontent.com/owenthereal/goup/master/install.sh | sh\n```\n\nInstall by skipping the confirmation prompt, e.g., for automation:\n\n```\ncurl -sSf https://raw.githubusercontent.com/owenthereal/goup/master/install.sh | sh -s -- '--skip-prompt'\n```\n\n### With Go Toolchain\n\n```\ngo install github.com/owenthereal/goup/cmd/goup@latest\n```\n\n### Manual\n\nIf you want to install manually, there are the steps:\n\n* Download the latest `goup` from https://github.com/owenthereal/goup/releases\n* Drop the `goup` executable to your `PATH` and make it executable: `mv GOUP_BIN /usr/local/bin/goup \u0026\u0026 chmod +x /usr/local/bin/goup`\n* Add the Go bin directory to your shell startup script: `echo 'export PATH=\"$HOME/.go/current/bin:$PATH\"' \u003e\u003e ~/.bashrc`\n\n## Quick Start\n\n```\n$ goup install\nDownloaded   0.0% (    32768 / 121149509 bytes) ...\nDownloaded  12.4% ( 15007632 / 121149509 bytes) ...\nDownloaded  30.2% ( 36634352 / 121149509 bytes) ...\nDownloaded  47.6% ( 57703440 / 121149509 bytes) ...\nDownloaded  65.9% ( 79855008 / 121149509 bytes) ...\nDownloaded  84.2% (101972672 / 121149509 bytes) ...\nDownloaded 100.0% (121149509 / 121149509 bytes)\nINFO[0030] Unpacking /home/owen/.go/go1.15.2/go1.15.2.linux-amd64.tar.gz ...\nINFO[0043] Success: go1.15.2 downloaded in /home/owen/.go/go1.15.2\nINFO[0043] Default Go is set to 'go1.15.2'\n$ goup ls\ngo1.15.2\n$ go env GOROOT\n/home/owen/.go/go1.15.2\n$ go version\ngo version go1.15.2 linux/amd64\n\n$ goup install tip\nCloning into '/home/owen/.go/gotip'...\nremote: Counting objects: 10041, done\nremote: Finding sources: 100% (10041/10041)\nremote: Total 10041 (delta 1347), reused 6538 (delta 1347)\nReceiving objects: 100% (10041/10041), 23.83 MiB | 3.16 MiB/s, done.\nResolving deltas: 100% (1347/1347), done.\nUpdating files: 100% (9212/9212), done.\nINFO[0078] Updating the go development tree...\nFrom https://go.googlesource.com/go\n * branch            master     -\u003e FETCH_HEAD\nHEAD is now at 5d13781 cmd/cgo: add more architectures to size maps\nBuilding Go cmd/dist using /home/owen/.go/go1.15.2. (go1.15.2 linux/amd64)\nBuilding Go toolchain1 using /home/owen/.go/go1.15.2.\nBuilding Go bootstrap cmd/go (go_bootstrap) using Go toolchain1.\nBuilding Go toolchain2 using go_bootstrap and Go toolchain1.\nBuilding Go toolchain3 using go_bootstrap and Go toolchain2.\nBuilding packages and commands for linux/amd64.\n---\nInstalled Go for linux/amd64 in /home/owen/.go/gotip\nInstalled commands in /home/owen/.go/gotip/bin\nINFO[0297] Default Go is set to 'gotip'\n$ goup ls\ngotip\n$ go env GOROOT\n/home/owen/.go/gotip\n$ go version\ngo version devel +5d13781 Thu Oct 8 00:28:09 2020 +0000 linux/amd64\n\n\n$ GOUP_GO_HOST=golang.google.cn goup install # For Gophers in China, see https://github.com/owenthereal/goup/issues/2\n```\n\n## How it works\n\n* `install.sh` downloads the latest Goup release for your platform and appends Goup's bin directory (`$HOME/.go/bin`) \u0026 Go's bin directory (`$HOME/.go/current/bin`) to your PATH environment variable.\n* `goup` switches to selected Go version.\n* `goup set` switches to selected Go version.\n* `goup install` downloads specified version of Go to`$HOME/.go/VERSION` and symlinks it to `$HOME/.go/current`.\n* `goup ls` list all installed Go version located at `$HOME/.go/current`.\n* `goup remove` removes the specified Go version.\n* `goup search` lists all available Go versions from https://golang.org/dl.\n* `goup upgrade` upgrades goup.\n\n## License\n\n[Apache 2.0](https://github.com/owenthereal/goup/blob/master/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fowenthereal%2Fgoup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fowenthereal%2Fgoup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fowenthereal%2Fgoup/lists"}