gopasspw / gopass

The slightly more awesome standard unix password manager for teams
https://www.gopass.pw/
MIT License
5.83k stars 485 forks source link

Packaging: Debian #2441

Open dominikschulz opened 1 year ago

dominikschulz commented 1 year ago

We should try to get gopass into the official Debian repos. Unfortunately gopass is already taken (ref), but maybe a package name of gopasspw would work.

Any help here is appreciated since I'm not very keen Debian policies and proceses myself.

We should:

If any changes to gopass are necessary to ease that work I will look into it.

dominikschulz commented 1 year ago

Actually there is an ITP already: #901133.

Someone already started working on packaging gopass as gopasspw for Debian a long time ago. Seems like this work never finished.

I'll try reaching out to them to see if we can make progress somehow.

dominikschulz commented 1 year ago

IIRC a proper Debian package in the archive requires all dependencies to be packaged as their own proper packages.

Looking at our go.mod and packages.debian.org this is the list of missing packages. Most are packaged already, but a few remain. Either we get rid of these dependencies or get them packaged as well.

dominikschulz commented 1 year ago

I've reached out a few days ago but no response so far.

Maybe we can at least send some PRs to get the existing repo on Salsa up to date. Then there are maybe four libraries missing.

Reference

dominikschulz commented 1 year ago

Adding the missing libraries might be fairly easy, but I don't know how to collaborate on Salsa. Opening Pull Requests doesn't seem to be possible for outside contributors.

AnomalRoil commented 1 year ago

Aren't Go binaries circumventing this since we're building a static binary except for our dependencies on git, gpg, vim?

dominikschulz commented 1 year ago

For all other distros: Yes.

But Debian is special. Don't ask me to explain why. I did not make an attempt to understand the "why", yet.

rjt commented 1 year ago

Are both multierr packages below required? github.com/hashicorp/go-multierror - golang-github-hashicorp-go-multierror-dev go.uber.org/multierr - golang-go.uber.org-multierr-dev

The uber version requires go 1.19 but on the debian derivative PoPOS, go is 1.18.1.

I just wasted so much time not realizing the gopass i was using was not your gopass.

dominikschulz commented 1 year ago

@rjt Sorry to hear that, I'd love to improve the situation for Debian users.

In the long run I don't think we'll need any third party multierror package since Go got native error wrapping support. But these are still likely used by some of our dependencies. If this will help the Debian packaging I will try to hunt down these and try to get rid of one (or maybe both).

dominikschulz commented 1 year ago

github.com/hashicorp/go-multierror seems to be only used in internal/store/root/fsck.go. I'm sure we can replace that with errors.Join.

The go.uber.org/multierr package is used by github.com/twpayne/go-pinentry/. This might require some investigation if it can be removed, but we can try.