GoFish is a cross-platform systems package manager, bringing the ease of use of Homebrew to Linux and Windows.

GoFish, The Package Manager

Build Status

Features, usage and installation instructions can be found on the homepage.

What does GoFish do?

GoFish is a cross-platform systems package manager, bringing the ease of use of Homebrew to Linux and Windows.

$ gofish install go
==> Installing go...
🐠  go 1.10.1: installed in 2.307602197s

GoFish works across all three major operating systems (Windows, MacOS, and Linux). It installs packages into its own directory and symlinks their files into /usr/local (or C:\ProgramData for Windows). You can think of it as the cross-platform Homebrew.

Want to add your project to the list of installable thingies?

Make a PR at fishworks/fish-food! Just make sure to follow the Contributing Guide first.

Troubleshooting

For troubleshooting, see the Troubleshooting Guide.

Security

Please email security issues to Matt Fisher.

License

GoFish is licensed under the Apache v2 License.

Comments
  • implement `gofish bump`

    implement `gofish bump`

    Hi, i'm testing/using gofish since a few weeks and really like the idea but updating food is in my opinion a bit to unhandy.. at the moment i need to update the version and all checksums, which can be many.. also many project are already providing the checksum for each release in a separate file.. so it be really great if the could use these files for verifying downloads.. if this would be possible a update of my food would be only to increment the version itself.. so updating food would be a small step and can be done quickly.. so what do you think? could this be an option?

    thanks eloo

  • feature: ability to swap out the default rig

    feature: ability to swap out the default rig

    It looks like no matter what it's searching the default "Rig" even if it has been removed. Also it looks like support for Private or SSH based repos doesn't work? image

    If there's any way to configure gofish to use a private Fish Food repository instead of the default, this would be an amazing tool.

  • Issue 113 upgrade added rigs

    Issue 113 upgrade added rigs

    Allows the use of added rigs and updating Provides a rig.conf that details which rig the food were installed from. Currently, the rig.conf is simply adding the rig and no other values.

  • Feature request: Creating symlinks under $GOFISH_BINPATH

    Feature request: Creating symlinks under $GOFISH_BINPATH

    Hi! Thanks for starting and sharing this awesome project ☺️

    I'm using gofish to install "project dependencies", not system-wide dependencies, i.e. to manage symlinks across many directories other than /usr/local/bin.

    After reading gofish code, I realized that there is an envvar named $GOFISH_BINPATH, that is read by gofish, expected setting it to somewhere other than /usr/loca/bin would do my job, but it didn't.

    Let's say I want to install go under $(pwd)/.tools/bin, I'd run:

    export GOFISH_BINPATH=$(pwd)/.tools/bin
    
    gofish init
    gofish install go
    

    so that I can use the project-specific go by setting:

    export PATH=$GOFISH_BINPATH:${PATH}
    

    But this doesn't work as I wanted. init created $(pwd)/.tools/bin, but install installed the symlink under /usr/local/bin on my macOS and Linux machines, regardless of what I set to GOFISH_BINPATH.

    Can we make GOFISH_BINPATH to change where the install command installs symlinks? Or would there be any other (possible) workaround or feature to address my use-case?

    Thanks!

    Related https://github.com/fishworks/gofish/pull/174

  • SSL cert verification error trying to download helm

    SSL cert verification error trying to download helm

    I am virtually certain that there is something misconfigured on my (MacOS 10.14 Catalina) system, but I haven't had this problem before with any other tools so far, and I couldn't find any docs or code at all about how SSL certificates are verified in gofish, or related issues, so I'm opening an issue for it.

    $ gofish --log-level 9999 install helm
    ==> Installing helm...
    ERRO[0001] Get "https://get.helm.sh/helm-v3.5.4-darwin-amd64.tar.gz": x509: certificate signed by unknown authority
    Error: failed to download package for OS/arch darwin/amd64 with URL https://get.helm.sh/helm-v3.5.4-darwin-amd64.tar.gz to filepath /Users/kingdonb/Library/Caches/gofish/helm-3.5.4-darwin-amd64.tar.gz
    

    I'm not certain how to diagnose this further, and I thought it might be quicker to ask a question, if you might have seen this before. I'll keep trying in case you haven't seen it.

  • Create symlinks under $GOFISH_BINPATH

    Create symlinks under $GOFISH_BINPATH

    This fixes go-fish install to use $GOFISH_BINPATH when installing foods.

    To be clear, go-fish init had been correctly using $GOFISH_BINPATH to override the default bin path(e.g. /usr/local/bin on *nix) to be created. So, I had expected go-fish install to install binaries under the path go-fish init created, but it didn't.

    This patch updates gofish install to create symlinks under $GOFISH_BINPATH if set, so that the behavior is consistent with init.

  • agnostic storage provider

    agnostic storage provider

    I am using this for package management and it occurred to me it would also be a nice addition to goFish

    https://github.com/gomods/athens

    It would allow GoFish to store the app binaries anywhere in any cloud but also onpremise. It also seems to have a great velocity in the golang community.

    https://github.com/gomods/athens/blob/master/pkg/repo/fetcher.go Has a APi to github as GoFish will need it.

    let me knwo what you think.

  • darwin-arm64 build

    darwin-arm64 build

    Hi!

    Do you think we could get a manual rebuild of v0.14.0 or a minor v0.14.1 bump, so that the darwin-arm64 binary appears at: https://gofi.sh/releases/gofish-v0.14.0-darwin-arm64.tar.gz

  • Add support for more archive formats

    Add support for more archive formats

    Not sure if this works, it seems that gofish is still using the old unarchiving code

    My setup:

    cd %USERPROFILE%\go\src\github.com\fishworks
    git clone https://github.com/fishworks/gofish
    cd gofish
    dep ensure
    cd cmd\gofish
    go run . install cabal-install
    
  • Support for .tar.xz archives?

    Support for .tar.xz archives?

    Would .tar.xz support be possible? Here's a sample file: https://downloads.haskell.org/~cabal/cabal-install-latest/cabal-install-3.0.0.0-x86_64-apple-darwin17.7.0.tar.xz

  • How to handle major version changes / breaking changes ?

    How to handle major version changes / breaking changes ?

    Helm v3 has been released. Should we update food to that version?

    Taking terraform example, we have updated it always, irrespective of breaking changes

  • "gofish cleanup xyz" does not do anything!

    Hello, I'm on Fedora 35, let's say I want to cleanup all helm versions, I issue: gofish cleanup helm

    That just returns immediately without any output. Then I check with gofish rotten and the old versions are still there:

    NAME     	VERSION
    helm     	3.5.4  
    helm     	3.6.0  
    kompose  	1.26.0 
    kubectl  	1.22.3 
    terraform	0.15.4 
    terraform	1.0.11 
    yq       	4.14.1 
    yq       	4.4.0  
    

    Also the -n does not seem to be supported as it says "Error: unknown shorthand flag: 'n' in -n", and last but not least it would be wonderful to have a gofish cleanup all option, to clean everything up!

    Thanks and keep up the good work!

  • install completions

    install completions

    On homebrew you can install completions (fish, zsh, bash)... is this something planned for gofish as well?

    I did look for issues et al, but didn't find anything. Also didn't find any fish food using resources to do it, so I'm assuming its not possible right now (please let me know if my assessment is incorrect)

    Thanks!

  • feat: basic auth credentials from netrc

    feat: basic auth credentials from netrc

    add basic auth credentials to request for food packages if present in users netrc file

    add 'Accept: application/octet-stream' header to permit working through github api

    ref: fishworks#190

  • proposal: ability to provide credentials to download releases

    proposal: ability to provide credentials to download releases

    gofish can install private rigs as it uses the hosts git configuration

    however to download the release itself it just does a simple http get request

    could we support netrc files or similar?

    gitlab needs an authorization header like the following

    curl --header "Authorization: Bearer ${GITLAB_TOKEN}" 
    "https://somegitlab.com/stuart.warren/some-tool/-/releases/0.3.0/downloads/some-tool_0.3.0_darwin_amd64.tar.gz"
    

    github needs something similar "Authorization: token ${GITHUB_API_TOKEN}"

    perhaps we could set both?

  • Brewfile equivalent?

    Brewfile equivalent?

    I looked at the docs and skimmed the code and didn't see anything, but I'm curious if there's an equivalent to Brewfile. With a Brewfile you can define your dependencies in a list and run brew bundle from the same directory that the Brewfile lives in and it will install all of the dependencies listed there.

    If this functionality doesn't exist, would it be cool to PR adding it?

gPac - a linux package manager

gPac is a useless package manager. It is included in the gSuite, which is a suite of tools written in GO. gPac is a KISS - like package manager.

Mar 13, 2022
🦄 Easy, fast and open-source local package manager for Python!

Unikorn ?? Easy, fast and open-source local package manager for Python! Key Features Speed: You can add a package in one second.

Dec 11, 2021
Package manager for future projects

PCKGER is a package manager for my next project but when it will be able to build binaries and move libs it will be used like a normal package manager

Dec 20, 2021
gobin is a package manager for /go/bin

gobin gobin is a package manager for /go/bin Features List installed packages. Check for updates. Install packages (like go install). Uninstall packag

Nov 12, 2022
📦 An independent package manager for compiled binaries.
📦 An independent package manager for compiled binaries.

stew An independent package manager for compiled binaries. Features Easily distribute binaries across teams and private repositories. Get the latest r

Dec 13, 2022
Go Manager - bundle for go

gom - Go Manager Why The go get command is useful. But we want to fix the problem where package versions are different from the latest update. Are you

Nov 20, 2022
A simple dependency manager for Go (golang), inspired by Bundler.
A simple dependency manager for Go (golang), inspired by Bundler.

Goop A dependency manager for Go (golang), inspired by Bundler. It is different from other dependency managers in that it does not force you to mess w

Sep 27, 2022
Barebones dependency manager for Go.
Barebones dependency manager for Go.

Go Package Manager Go Package Manager (or gpm, for short) is a tool that helps achieve reproducible builds for Go applications by specifying the revis

Dec 14, 2022
Barebones dependency manager for Go.
Barebones dependency manager for Go.

Johnny Deps Johnny Deps is a small tool from VividCortex that provides minimalistic dependency versioning for Go repositories using Git. Its primary p

Sep 27, 2022
Golang Version Manager

g 注意:master分支可能处于开发之中并非稳定版本,请通过tag下载稳定版本的源代码,或通过release下载已编译的二进制可执行文件。 g是一个Linux、macOS、Windows下的命令行工具,可以提供一个便捷的多版本go环境的管理和切换。 特性 支持列出可供安装的go版本号 支持列出已安

Dec 30, 2022
Package core is a service container that elegantly bootstrap and coordinate twelve-factor apps in Go.

Package core is a service container that elegantly bootstrap and coordinate twelve-factor apps in Go. Background The twelve-factor methodology has pro

Nov 3, 2022
Package Management for Golang
Package Management for Golang

Glide: Vendor Package Management for Golang Are you used to tools such as Cargo, npm, Composer, Nuget, Pip, Maven, Bundler, or other modern package ma

Dec 27, 2022
GoLobby DotEnv is a lightweight package for loading dot env (.env) files into structs for Go projects

DotEnv GoLobby DotEnv is a lightweight package for loading dot env (.env) files into structs for Go projects Documentation Supported Versions It requi

Dec 30, 2022
Create and manage Isolated Virtual Environments for Go
Create and manage Isolated Virtual Environments for Go

VenGO Create and manage Isolated Virtual Environments for Golang. Motivation Why a tool to generate and manage virtual environments in Go?. Well, some

Jan 6, 2023
Fetch license information for all direct and indirect dependencies of your Golang project
Fetch license information for all direct and indirect dependencies of your Golang project

gocomply beta Give open source Golang developers the credit they deserve, follow your legal obligations, and save time with gocomply. This tiny little

Nov 1, 2022
📋 cross-platform clipboard package that supports accessing text and image in Go (macOS/Linux/Windows/Android/iOS)

clipboard Cross platform (macOS/Linux/Windows/Android/iOS) clipboard package in Go import "golang.design/x/clipboard" Features Cross platform supports

Dec 24, 2022
The missing package manager for golang binaries (its homebrew for "go install")

Bingo: The missing package manager for golang binaries (its homebrew for "go install") Do you love the simplicity of being able to download & compile

Oct 31, 2022
Distributed lock manager. Warning: very hard to use it properly. Not because it's broken, but because distributed systems are hard. If in doubt, do not use this.

What Dlock is a distributed lock manager [1]. It is designed after flock utility but for multiple machines. When client disconnects, all his locks are

Dec 24, 2019
Package for controlling the Windows firewall (aka Windows Filtering Platform, WFP)

wf What This is a package for controlling the Windows Filtering Platform (WFP), also known as the Windows firewall. See its docs: https://godoc.org/in

Dec 6, 2022