{"id":15209437,"url":"https://github.com/prantlf/goup","last_synced_at":"2026-01-20T22:35:22.472Z","repository":{"id":253560227,"uuid":"840661521","full_name":"prantlf/goup","owner":"prantlf","description":"Upgrades to the latest version of Go, or manages more versions on the same machine, supporting all platforms including RISC-V, as simple es rustup.","archived":false,"fork":false,"pushed_at":"2024-09-29T14:16:18.000Z","size":123,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-29T15:40:51.081Z","etag":null,"topics":["bash","go","gvm","install","shell","version","version-manager","zsh"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/prantlf.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2024-08-10T09:49:52.000Z","updated_at":"2024-09-29T14:16:21.000Z","dependencies_parsed_at":"2024-08-17T18:21:10.059Z","dependency_job_id":"5ea99575-8c05-4cea-9a68-602e796e771a","html_url":"https://github.com/prantlf/goup","commit_stats":null,"previous_names":["prantlf/goup"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/prantlf/goup","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prantlf%2Fgoup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prantlf%2Fgoup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prantlf%2Fgoup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prantlf%2Fgoup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prantlf","download_url":"https://codeload.github.com/prantlf/goup/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prantlf%2Fgoup/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28616991,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T22:24:05.405Z","status":"ssl_error","status_checked_at":"2026-01-20T22:20:31.342Z","response_time":117,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["bash","go","gvm","install","shell","version","version-manager","zsh"],"created_at":"2024-09-28T07:40:14.908Z","updated_at":"2026-01-20T22:35:22.430Z","avatar_url":"https://github.com/prantlf.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Go Upgrader and Version Manager\n\nUpgrades to the latest version of Go, or manages more versions of Go on the same machine, supporting all platforms including RISC-V, as simple es `rustup`.\n\n* Small. Written in `bash`, easily extensible.\n* Fast. Downloads and unpacks pre-built binary builds.\n* Portable. Writes only to the user home directory.\n* Simple. Switches the version globally, no environment variable changes needed.\n* Efficient. Just run `goup up`.\n\nPlatforms: `aix-ppc64`, `darwin-amd64`, `darwin-arm64`, `dragonfly-amd64`, `freebsd-386`, `freebsd-amd64`, `freebsd-arm64`, `freebsd-arm`, `freebsd-riscv64`, `illumos-amd64`, `linux-386`, `linux-amd64`, `linux-arm64`, `linux-armv6l`, `linux-loong64`, `linux-mips`, `linux-mips64`, `linux-mips64le`, `linux-mipsle`, `linux-ppc64`, `linux-ppc64le`, `linux-riscv64`, `linux-s390x`, `netbsd-386`, `netbsd-amd64`, `netbsd-arm64`, `netbsd-arm`, `openbsd-386`, `openbsd-amd64`, `openbsd-arm64`, `openbsd-arm`, `openbsd-ppc64`, `plan9-386`, `plan9-amd64`, `plan9-arm`, `solaris-amd64`, `windows-386`, `windows-amd64`, `windows-arm64`, `windows-arm`.\n\n## Getting Started\n\nMake sure that you have `bash` 4 or newer and `curl` available, execute the following command:\n\n    curl -fSs https://raw.githubusercontent.com/prantlf/goup/master/install.sh | bash\n\nBefore you continue, make sure that you have the following tools available: `curl`, `grep`, `jq`, `ln`, `rm`, `rmdir`, `sed`, `tar` (non-Windows), `uname`, `unzip` (Windows). It's likely that `jq` will be missing. You can install it like this on Debian: `apt-get install -y jq`.\n\nInstall the latest version of Go, if it hasn't been installed yet:\n\n    goup install latest\n\nUpgrade both the installer script and the Go language, if they're not the latest versions, and delete the previously active latest version from the disk too:\n\n    goup up\n\n## Installation\n\nMake sure that you have `bash` 4 or newer and `curl` available, execute the following command:\n\n    curl -fSs https://raw.githubusercontent.com/prantlf/goup/master/install.sh | bash\n\nBoth the `goup` and `go` should be executable in any directory via the `PATH` environment variable. The installer script will modify the RC-file of the shell, from which you launched it. The following RC-files are supported:\n\n    ~/.bashrc\n    ~/.zshrc\n    ~/.config/fish/config.fish\n\nIf you use other shell or more shells, update the other RC-files by putting both the installer directory and the Go binary directory to `PATH`, for example:\n\n    $HOME/.goup:$HOME/.go/bin:$PATH\n\nStart a new shell after the installer finishes. Or extend the `PATH` in the current shell as the instructions on the console will tell you.\n\n## Locations\n\n| Path      | Description                                            |\n|:----------|:-------------------------------------------------------|\n| `~/.goup` | directory with the installer script and versions of Go |\n| `~/.go`   | symbolic link to the currently active version of Go    |\n\nFor example, with the Go 1.23.0 activated:\n\n    /home/prantlf/.goup\n      ├── 1.22.0  (another version)\n      ├── 1.23.0  (linked to /home/prantlf/.go)\n      └── goup    (installer script)\n\n## Usage\n\n    goup \u003ctask\u003e [version]\n\n    Tasks:\n\n      current              print the currently selected version of Go\n      latest               print the latest version of Go for download\n      local                print versions of Go ready to be selected\n      remote               print versions of Go available for download\n      update               update this tool to the latest version\n      upgrade              upgrade Go to the latest and remove the current version\n      up                   perform both update and upgrade tasks\n      install \u003cversion\u003e    add the specified or the latest version of Go\n      uninstall \u003cversion\u003e  remove the specified version of Go\n      use \u003cversion\u003e        use the specified or the latest version of Go\n      help                 print usage instructions for this tool\n      version              print the version of this tool\n\nYou can enter just `MAJ` or `MAJ.MIN` as `\u003cversion\u003e`, instead of the full `MAJ.MIN.PAT`. When using the `install` or `use` tasks, the *most* recent full version that starts by the entered partial version will be picked. When using the `uninstall` task, the *least* recent full version that starts by the entered partial version will be picked.\n\n## Debugging\n\nIf you enable `bash` debugging, every line of the script will be printed on the console. You'll be able to see values of local variables and follow the script execution:\n\n    bash -x goup ...\n\nYou can debug the installer too:\n\n    curl -fSs https://raw.githubusercontent.com/prantlf/goup/master/install.sh | bash -x\n\n## Platform Detection\n\n### Environment Variables\n\nThe following environment variables can be set before running `install.sh` or `goup`, if you know what you're doing:\n\n| Variable          | Default value                            |\n|:------------------|:-----------------------------------------|\n| `PLATFORM`        | detected using `uname`                   |\n| `OS`              | part of `PLATFORM` before `-`            |\n| `ARCH`            | part of `PLATFORM` after `-`             |\n| `TOOL_URL_LIST`   | https://go.dev/dl/?mode=json\u0026include=all |\n| `TOOL_URL_LATEST` | https://go.dev/dl/?mode=json             |\n| `TOOL_URL_DIR`    | https://dl.google.com/go                 |\n| `INST_DIR`        | `$HOME/.goup`                            |\n| `TOOL_DIR`        | `$HOME/.go`                              |\n\n### ARM Architectures\n\nThe detection of the architecture ARM v6 and v7 may not work in your environment. For example, `uname -m` in Debian reports:\n\n| Architecture | Output   |\n|:-------------|:---------|\n| ARM v6       | `armhf`  |\n| ARM v7       | `armhf`  |\n| ARM v8       | `arm64`  |\n\nWhile, `uname -m` in Raspbian reports:\n\n| Architecture | Output    |\n|:-------------|:----------|\n| ARM v6       | `armhf`   |\n| ARM v7       | `armv7l`  |\n| ARM v8       | `aarch64` |\n\n`nodeup` regognises `armhf` as ARM v6. If you use it on Debian and ARM v7, enforce the proper architecture by setting the environment variable `ARCH` explicitly:\n\n    ARCH=armv7l nodeup ...\n\nIf you don't do it, the `node` executable will work well nevertheless, because binaries for ARM v6 can be run on ARM v7. Just the performance of floating point computations may be lower.\n\nIf `uname` reports other value than `armhf`, the platform recognition will work well. Pay attention to the console output, in particular to this line:\n\n    detected platform linux-armv6l\n\n## Contributing\n\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Lint and test your code.\n\n## License\n\nCopyright (c) 2024 Ferdinand Prantl\n\nLicensed under the MIT license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprantlf%2Fgoup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprantlf%2Fgoup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprantlf%2Fgoup/lists"}