Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🐛 Cannot be installed with delta in Debian #1210

Closed
baryluk opened this issue Oct 17, 2022 · 8 comments · Fixed by #1217
Closed

🐛 Cannot be installed with delta in Debian #1210

baryluk opened this issue Oct 17, 2022 · 8 comments · Fixed by #1217

Comments

@baryluk
Copy link
Contributor

baryluk commented Oct 17, 2022

user@debian:~$ sudo gdebi git-delta_0.14.0_amd64.deb 
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Reading state information... Done
This package is uninstallable
Breaks existing package 'delta' that conflict: 'delta'. But the 'git-delta_0.14.0_amd64.deb' provides it via: 'delta'

This is because git-delta incorrectly sets "Provides: delta`

I use both delta (tigris tool for minimizing compiler and code bugs), and git-delta.

@dandavison
Copy link
Owner

Hi @baryluk, I'm sorry you're suffering from this clash and genuinely use both.

This is because git-delta incorrectly sets "Provides: delta`

Hm, it is correct that it provides that executable isn't it? I mean, it would provide it were it allowed to be installed.

@dandavison
Copy link
Owner

Let's merge this with #26

@baryluk
Copy link
Contributor Author

baryluk commented Oct 24, 2022

Hm, it is correct that it provides that executable isn't it?

No, Provides: delta has nothing to do with how executable is named. Package can be named xyz, and have Provides foo and have executable bazz. These are different things. Package can have 100 executable and still not use any Provides. And that is correct to do.

Provide: delta means that program provides same functionality as real or virtual package named delta Which is not true here.

Debian Policy manual section 7 has more information about this https://www.debian.org/doc/debian-policy/ch-relationships.html#virtual-packages-provides

Citation:

A virtual package is one which appears in the Provides control field of another package.
...
...
If there are both concrete and virtual packages of the same name, then the dependency may be satisfied (or the conflict caused) by either the concrete package with the name in question or any other concrete package which provides the virtual package with the name in question. This is so that, for example, supposing we have

Package: foo
Depends: bar

and someone else releases an enhanced version of the bar package they can say:

Package: bar-plus
Provides: bar

and the bar-plus package will now also satisfy the dependency for the foo package.

It is an error to put Provides in your package. Just remove Provides: delta and it will all be good and fully conformant to Debian policy.

@baryluk
Copy link
Contributor Author

baryluk commented Oct 24, 2022

Please unmerge, as this is really rather different and easier to fix problem.

@baryluk
Copy link
Contributor Author

baryluk commented Oct 24, 2022

I found where it is set, and I will send PR with the fix.

@baryluk
Copy link
Contributor Author

baryluk commented Oct 24, 2022

I see the issue. You are building two packages. One with glibc one with musl, and try to set so they do not install at the same time.

I think this indeed might require Provides, but for this to work, it should also have Replaces and Conflicts set, as mentioned in section 7.6.1 and 7.6.2.

In that case renaming a package might be indeed required, or at least other name used that is unique.

@baryluk
Copy link
Contributor Author

baryluk commented Oct 24, 2022

After reading manual, it looks that Conflicts as is already in the package is sufficient.

@dandavison dandavison reopened this Oct 24, 2022
@dandavison
Copy link
Owner

Thanks for looking into this @baryluk. I'm must admit that I just copied etc/ci/before_deploy.sh from another project (bat I think; when I started delta), and I had not given it much thought since.

dandavison pushed a commit that referenced this issue Nov 15, 2022
Remove Provides in Debian package as this is incorrect usage of this flag.

To provide two versions of packages `Conflicts` as used is sufficient.

See Debian Policy Manual (v4.6.1.1) section 7.5

When at it Remove trailing dot in Description header to comply with section 5.6.13
Fixes: #1210
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants