Re: Downgrading glibc from Rawhide removed /bin/sh (!)

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

 




On Thu, Mar 7, 2019, at 10:53 AM, Florian Weimer wrote:
> 
> > The %transfiletriggerpostun would've probably fixed it if it used -p 
> > <lua> instead of shell.
> 
> We switched to the shell for the benefit of rpm-ostree.

Short answer: https://github.com/projectatomic/rpm-ostree/issues/749#issuecomment-470926180
(Let me know if that would help something, here or in the issue; it wouldn't be hard for us to implement)

Slightly longer answer: There are *multiple* layers of defenses in rpm-ostree against exactly this sort of problem.  The reason we don't implement Lua is (as the later linked issue spells out in more detail) is to ensure we can reliably construct a *new* root filesystem in a transactional model without having any potential effects on your running filesystem.

The fact that with rpm-ostree you always have a "base image" that is constructed on the server side is the first primary line of defense; we won't ship you a new image (ostree commit) that isn't known good.

The second line of defense is that *client side* rpm-ostree always runs a "sanity check" in the new deployment:
https://github.com/projectatomic/rpm-ostree/pull/892

The third line of defense is that somehow even if you do get a broken tree, you always have the previous one in the bootloader.

But we do support both layering and overrides - you can engage the package system side.  

Now personally if I wanted to test a new glibc I'd first do it in a disposable clone of my development podman container, rather than replacing the one on the root filesystem of my host.    But let's assume for whatever reason we do need to test an updated glibc on the host system; rpm-ostree supports that too:

[root@localhost ~]# rpm-ostree status
State: idle                                                                                                                                                                                                       
AutomaticUpdates: disabled                                                                                                                                                                                        
Deployments:                                                                                                                                                                                                      
● ostree://fedora-atomic:fedora/29/x86_64/atomic-host
                   Version: 29.20190306.2 (2019-03-06T23:32:07Z)                                                                                                                                                  
                    Commit: 57297da7779ed8b7b7b9a0f39f6f12a703000a40cf451770fe23749a5558f60d                                                                                                                      
              GPGSignature: Valid signature by 5A03B4DD8254ECA02FDA1637A20AA56B429476B4                                                                                                                           

  ostree://fedora-atomic:fedora/29/x86_64/atomic-host
                   Version: 29.20190219.0 (2019-02-19T04:52:26Z)
                    Commit: d00adf110907f93f6cdd05deda0e2878c9bd71c74e0c4c2e9a5250d2f4cc8868
              GPGSignature: Valid signature by 5A03B4DD8254ECA02FDA1637A20AA56B429476B4
[root@localhost ~]# rpm -q glibc 
glibc-2.28-26.fc29.x86_64      

(Here I browse to https://koji.fedoraproject.org/koji/packageinfo?packageID=57 and find the previous glibc built for f29):

[root@localhost ~]# rpm-ostree override replace https://kojipkgs.fedoraproject.org//packages/glibc/2.28/25.fc29/x86_64/glibc-{common-,}2.28-25.fc29.x86_64.rpm
Downloading 'https://kojipkgs.fedoraproject.org//packages/glibc/2.28/25.fc29/x86_64/glibc-common-2.28-25.fc29.x86_64.rpm'... done!
Downloading 'https://kojipkgs.fedoraproject.org//packages/glibc/2.28/25.fc29/x86_64/glibc-2.28-25.fc29.x86_64.rpm'... done!                                                                                       
Checking out tree 57297da... done                                                                                                                                                                                 
Enabled rpm-md repositories: updates fedora fahc     
rpm-md repo 'updates' (cached); generated: 2019-03-07T20:40:34Z                                                                                                                                                   
rpm-md repo 'fedora' (cached); generated: 2018-10-24T22:20:15Z                                                                    
rpm-md repo 'fahc' (cached); generated: 2019-03-07T05:41:31Z                                                               
Importing rpm-md... done         
Resolving dependencies... done                  
error: Could not depsolve transaction; 2 problems detected:                                                                                                  
0. nothing provides glibc-langpack = 2.28-25.fc29 needed by glibc-2.28-25.fc29.x86_64                                              
1. nothing provides glibc-langpack = 2.28-25.fc29 needed by glibc-2.28-25.fc29.x86_64

Hmm.  Oh right, this is libsolv's way of telling me I forgot a package probably...
Ah, yep, I need to also take in glibc-all-langpacks:

[root@localhost ~]# rpm-ostree override replace https://kojipkgs.fedoraproject.org//packages/glibc/2.28/25.fc29/x86_64/glibc-{common-,all-langpacks-,}2.28-25.fc29.x86_64.rpm                                     
Downloading 'https://kojipkgs.fedoraproject.org//packages/glibc/2.28/25.fc29/x86_64/glibc-common-2.28-25.fc29.x86_64.rpm'... done!
Downloading 'https://kojipkgs.fedoraproject.org//packages/glibc/2.28/25.fc29/x86_64/glibc-all-langpacks-2.28-25.fc29.x86_64.rpm'... done!
Downloading 'https://kojipkgs.fedoraproject.org//packages/glibc/2.28/25.fc29/x86_64/glibc-2.28-25.fc29.x86_64.rpm'... done!
Checking out tree 57297da... done
...
Applying 3 overrides
Processing packages... done
Running pre scripts... done
Running post scripts... done
Writing rpmdb... done
Writing OSTree commit... done
Staging deployment... done
Freed: 227.0 MB (pkgcache branches: 3)
Downgraded:
  glibc 2.28-26.fc29 -> 2.28-25.fc29
  glibc-all-langpacks 2.28-26.fc29 -> 2.28-25.fc29
  glibc-common 2.28-26.fc29 -> 2.28-25.fc29
Run "systemctl reboot" to start a reboot
[root@localhost ~]# rpm-ostree status
State: idle
AutomaticUpdates: disabled
Deployments:
  ostree://fedora-atomic:fedora/29/x86_64/atomic-host
                   Version: 29.20190306.2 (2019-03-06T23:32:07Z)
                BaseCommit: 57297da7779ed8b7b7b9a0f39f6f12a703000a40cf451770fe23749a5558f60d
              GPGSignature: Valid signature by 5A03B4DD8254ECA02FDA1637A20AA56B429476B4
      ReplacedBasePackages: glibc-all-langpacks glibc-common glibc 2.28-26.fc29 -> 2.28-25.fc29

● ostree://fedora-atomic:fedora/29/x86_64/atomic-host
                   Version: 29.20190306.2 (2019-03-06T23:32:07Z)
                    Commit: 57297da7779ed8b7b7b9a0f39f6f12a703000a40cf451770fe23749a5558f60d
              GPGSignature: Valid signature by 5A03B4DD8254ECA02FDA1637A20AA56B429476B4

  ostree://fedora-atomic:fedora/29/x86_64/atomic-host
                   Version: 29.20190219.0 (2019-02-19T04:52:26Z)
                    Commit: d00adf110907f93f6cdd05deda0e2878c9bd71c74e0c4c2e9a5250d2f4cc8868
              GPGSignature: Valid signature by 5A03B4DD8254ECA02FDA1637A20AA56B429476B4
[root@localhost ~]# 

Now, I also can see we executed the transfiletriggerin in question:

[root@localhost ~]# journalctl -b -r  -u rpm-ostreed | grep transfiletriggerin | head -1
Mar 08 13:36:37 localhost.localdomain rpm-ostree[1753]: Executed %transfiletriggerin(glibc-common) for lib, lib64, usr/lib, usr/lib64 in 203ms; 24842 matched files

So yes, I would need to reboot to test it now, but on the flip side rpm-ostree carefully maintained the integrity of my system, and didn't touch my booted deployment.  This property relies on not executing arbitrary lua code in the context of the daemon.
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html
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