Re: Modularity and the system-upgrade path

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



----- Original Message -----
> From: "Matthew Miller" <mattdm@xxxxxxxxxxxxxxxxx>
> To: "Development discussions related to Fedora" <devel@xxxxxxxxxxxxxxxxxxxxxxx>
> Sent: Monday, October 7, 2019 4:31:18 PM
> Subject: Re: Modularity and the system-upgrade path
> 
> On Mon, Oct 07, 2019 at 03:20:21PM -0400, Alexander Scheel wrote:
> > > And where is the software for those containers coming from? Some
> > > container registry like Docker Hub? One of the main points of
> > > Modularity is to provide a trusted source of software to install into
> > > containers.
> > I never really understood this argument. Could you help me understand
> > it?
> > In what way do ursine RPMs not already do this? And more importantly,
> > what benefits does Modularity bring, based on an earlier thread with
> > Modularity use cases?
> 
> I'm going to avoid the word "ursine" because I think it's more confusing
> then helpful. It's all the same RPMs, after all.

Ok... But we need some word to describe "RPMs without weird context that
behave like they're supposed to and somebody maintains them" instead of "RPMs
in a module somewhere". Otherwise the discussion gets confusing fast. So
if you don't mind, I'll stick with "ursine RPMs" vs "modular RPMs" for now. :)

> Without modularity, RPM doesn't offer a good way to choose between different
> versions of the same thing. One can squash version numbers into the name,
> which covers some use cases, but also becomes unwieldy and loses the _idea_
> that these things are different branches of the same basic software.

This is not true at all.

For starters, if you have parallel packages available [0], `rpm -i` will
let you install them all just fine and track each individually [1]. When
you go to uninstall it (`rpm -e rpm-test`), it'll complain that you didn't
specify which one [2], so you'll of course have to specify a version [3].

If you then go stick it in a repo, DNF will show you the highest version,
which is expected since DNF generally concerns itself with the updated-ness
of your system [4]. But you can always pass --showduplicates to show the
older versions. And nothing prevents you from selecting a different version
of the package if they exist in the repo [5]. The one place this fails
is that DNF will perform an upgrade, removing the older version, even if you
choose install [6].

So really, the only thing missing here is an option to make `dnf install` mean
"install" and not "install or upgrade, whatever DNF feels is best". And then
you can do all your user intent on the side: I installed "rpm-test-1.0", so
I should always keep it installed... but if I also install "rpm-test", I should
take whatever version that was and upgrade it... etc. 

To be fair, the packages in [0] are parallel installable too. But for the
case where you only want parallel availability, you already have that, and
can use dnf version locking [7] to prevent unintended upgrades if you manually
specified a version.

So I really think this is a non-issue in ursine RPMs. Modularity only gives
you a way to group packages together, like software collections would've.
It seems like the problem isn't in RPM or DNF, but is instead in Fedora's
package tooling not letting you ship multiple versions of ursine RPMs without
modularity. :)

But while it might work better, it wouldn't be as cool and sexy as modules...

> 
> >  - Modularity doesn't bring parallel-installability. You'd have to support
> >    it at the RPM level, which means ursine RPMs would support it to. [0]
> 
> Well, the idea is: if you need parallel install, don't mess with it at the
> RPM level. Separate at the container level.

See above; RPM actually supports parallel install just fine. We just need
packaging guidelines we all agree on to ensure packages at different versions
don't conflict and what that means. And lots of upstream work to make that
happen for the packages we care about. And a little bit of alternatives
magic to choose a default version for us and let us switch conveniently.

> 
> 
> >  - Any size reduction in modular RPMs can be made to urisine RPMs.
> 
> Maybe. But what if it reduces functionality? Modularity allows there to be a
> reduced version or a full version which can be swapped in.
> 
> 
> --
> Matthew Miller
> <mattdm@xxxxxxxxxxxxxxxxx>
> Fedora Project Leader
> _______________________________________________
> devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
> To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
> Fedora Code of Conduct:
> https://docs.fedoraproject.org/en-US/project/code-of-conduct/
> List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
> List Archives:
> https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
> 


[0]: https://github.com/cipherboy/testbed/rpm-versions

[1]: # rpm -qa | grep -i 'rpm-test' | sort
     rpm-test-1.0-1.x86_64
     rpm-test-1.1-1.x86_64
     rpm-test-2.0-1.x86_64

[2]: # rpm -e rpm-test
     error: "rpm-test" specifies multiple packages:
       rpm-test-1.0-1.x86_64
       rpm-test-1.1-1.x86_64
       rpm-test-2.0-1.x86_64

[3]: # rpm -e rpm-test-1.0
     # rpm -e rpm-test-1.1
     # rpm -e rpm-test-2.0

[4]: # dnf info rpm-test
     Available Packages
     Name         : rpm-test
     Version      : 2.0
     Release      : 1
     Architecture : x86_64
     Size         : 6.8 k
     Source       : rpm-test-2.0-1.src.rpm
     Repository   : Test
     Summary      : A test package for seeing how RPM handles different RPM versions.
     URL          : https://github.com/cipherboy/testbed/rpm-versions
     License      : AGPLv3
     Description  : A test package for seeing how RPM handles different RPM versions.
                  : 
                  : This is version 2.0

[5]: # dnf install rpm-test-1.0
     Last metadata expiration check: 0:01:01 ago on Mon 07 Oct 2019 07:36:10 PM EDT.
     Dependencies resolved.
     ======================================================================================================================
      Package                       Architecture                Version                    Repository                 Size
     ======================================================================================================================
     Installing:
      rpm-test                      x86_64                      1.0-1                      Test                      6.7 k

     Transaction Summary
     ======================================================================================================================
     Install  1 Package

     Total size: 6.7 k
     Installed size: 12  
     Is this ok [y/N]: y
     Downloading Packages:
     Running transaction check
     Transaction check succeeded.
     Running transaction test
     Transaction test succeeded.
     Running transaction
       Preparing        :                                                                                              1/1 
       Installing       : rpm-test-1.0-1.x86_64                                                                        1/1 
       Verifying        : rpm-test-1.0-1.x86_64                                                                        1/1 

     Installed:
       rpm-test-1.0-1.x86_64                                                                                               

     Complete!

[6]: # dnf install rpm-test-1.1
     Last metadata expiration check: 0:02:21 ago on Mon 07 Oct 2019 07:36:10 PM EDT.
     Dependencies resolved.
     ======================================================================================================================
      Package                       Architecture                Version                    Repository                 Size
     ======================================================================================================================
     Upgrading:
      rpm-test                      x86_64                      1.1-1                      Test                      6.8 k

     Transaction Summary
     ======================================================================================================================
     Upgrade  1 Package

     Total size: 6.8 k
     Is this ok [y/N]: y
     Downloading Packages:
     Running transaction check
     Transaction check succeeded.
     Running transaction test
     Transaction test succeeded.
     Running transaction
       Preparing        :                                                                                              1/1 
       Upgrading        : rpm-test-1.1-1.x86_64                                                                        1/2 
       Cleanup          : rpm-test-1.0-1.x86_64                                                                        2/2 
       Verifying        : rpm-test-1.1-1.x86_64                                                                        1/2 
       Verifying        : rpm-test-1.0-1.x86_64                                                                        2/2 

     Upgraded:
       rpm-test-1.1-1.x86_64                                                                                               

     Complete!

[7]: https://dnf-plugins-core.readthedocs.io/en/latest/versionlock.html
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux