On Sun, Sep 27, 2026 at 4:09 PM Jonas Smedegaard <[email protected]> wrote:
>
> Quoting Wei Zhou (2026-09-27 05:10:13)
> > ruby-sass installs /usr/bin/sass and /usr/share/man/man1/sass.1.gz as plain
> > files, so no other Sass implementation can offer that command name: a second
> > implementation would either have to conflict with ruby-sass or take over a 
> > file
> > this package owns.
> >
> > Policy 3.9 asks packages that supply an instance of a common command name to
> > use update-alternatives "so that they can be installed together".  Would you
> > consider shipping the Ruby Sass launcher under a non-conflicting name and
> > offering the generic one as an alternative, e.g.:
> >
> >   debian/ruby-sass.postinst:
> >     update-alternatives --install /usr/bin/sass sass /usr/bin/ruby-sass 20 \
> >         --slave /usr/share/man/man1/sass.1.gz sass.1.gz \
> >         /usr/share/man/man1/ruby-sass.1.gz
> >
> >   debian/ruby-sass.prerm:
> >     update-alternatives --remove sass /usr/bin/ruby-sass
> >
> > /usr/bin/scss and /usr/bin/sass-convert would need no change; they have no
> > counterpart in other implementations.
> >
> > Background: dart-sass (ITP #998024) is the upstream reference 
> > implementation and
> > the only one still maintained.  Its package registers /usr/bin/sass with
> > priority 40 the same way, and deliberately uses neither Conflicts/Replaces 
> > nor
> > dpkg-divert, so today it does not take the name over on systems that have
> > ruby-sass installed.  Once both sides offer the alternative they simply 
> > coexist
> > and the admin selects with "update-alternatives --config sass".  The 
> > priority
> > above is only a suggestion -- we are happy to adjust ours instead.
>
> I suspect that it is wrong to treat ruby-sass as equivalent to
> dart-sass, exactly because they represent different major revisions of
> the SASS/SCSS specification, and therefore by definition are not
> equivalent.
>
> It is confusing today to have the prominent "sass" name occupied by a
> dying revision of the spec, but that is a consequence of Debian being
> long-term stable contrary to upstream that can easier choose to declare
> an older spec obsolete and dead.
>
> It might make sense for ruby-sass and *other* sass implementations to
> register as equivalent (if e.g. some node implementation comply with
> same older spec), and it might make sense for dart-sass to register as
> equivalent with rsass, grass and/or other more modern implementations.
> But I fear that declaring equivalence where it does not exist is asking
> for trouble.

It is a general misunderstanding that update-alternatives declare
equivalent variants of a program or app, but according to its manpage:
"It is possible for several programs fulfilling the same or *similar*
functions to be installed on a single system at the same time."
So it can serve the need for similar apps, not only same ones. In
fact, former use is more common, take window-manager for example:
update-alternatives --config x-window-manager
There are 3 choices for the alternative x-window-manager (providing
/usr/bin/x-window-manager).

  Selection    Path               Priority   Status
------------------------------------------------------------
* 0            /usr/bin/muffin     90        auto mode
  1            /usr/bin/metacity   60        manual mode
  2            /usr/bin/muffin     90        manual mode
  3            /usr/bin/xfwm4      60        manual mode

Other example may be the different version of same program:
update-alternatives --list automake
/usr/bin/automake-1.19

Here in our situation, we just point different implementations to
/usr/bin/sass, u-a keeps them parallelly installable, no matter what
revision it targets or which language it uses.

Reply via email to