Hi наб,
Hi debian-mentors (package replacement question below),

On Sat, Sep 07, 2024 at 03:31:16AM +0200, наб wrote:
> * Package name    : libcurlfs
>   Version         : 0
>   Upstream Contact: наб <nabijaczlew...@nabijaczleweli.xyz>
> * URL             : https://sr.ht/~nabijaczleweli/libcurlfs
> * License         : 0BSD
>   Programming Lang: C++
>   Description     : mounts remote HTTP/HTTPS URLs as a FUSE filesystem

this package looks useful. I'll sponsor it. Thanks for working on this.

> This was written as a direct replacement for httpfs2

Looking at d/control, you don't seem to declare the replacement properly.

You need Conflicts+Replaces, not +Breaks,
cf. 
https://www.debian.org/doc/debian-policy/ch-relationships.html#replacing-whole-packages-forcing-their-removal

Quoting policy:

> When one binary package declares a conflict with another using a
> Conflicts field, dpkg will refuse to allow them to be unpacked on the
> system at the same time. This is a stronger restriction than Breaks,
> which prevents the broken package from being configured while the
> breaking package is in the “Unpacked” state but allows both packages to
> be unpacked at the same time.

Since you include an overlapping httpfs2 symlink in your package Breaks is
inappropriate as even just unpacking would cause a file conflict with
httpfs2.

I get this when trying to install libcurlfs over httpfs2:

    dpkg: regarding libcurlfs_0-1_amd64.deb containing libcurlfs:
     libcurlfs breaks httpfs2
      httpfs2 (version 0.1.4-1.1) is present and installed.
    
    dpkg: error processing archive libcurlfs_0-1_amd64.deb (--install):
     installing libcurlfs would break httpfs2, and
     deconfiguration is not permitted (--auto-deconfigure might help)

Further

    Provides: httpfs2 (= 1)

doesn't look right. I don't think you need a versioned provides here since
no other packages depend on httpfs2, but I don't have much experience with
replaceing packages.

I think it would also be useful to just take over httpfs2 on upgrade from
bookworm, but I can't find any relevant advice on how one might do that. I
thought perhaps the provides with a higher version number than httpfs2 in
stable would encourage apt to upgrade from httpfs2 to libcurlfs on it's own
but I didn't see that happen when upgrade testing in my local repo setup.

One idea I had was to just to build a httpfs2 pseudopackage that depends on
libcurlfs as part of src:libcurlfs.

Thoughts?

Thanks,
--Daniel

Attachment: signature.asc
Description: PGP signature

Reply via email to