From Fedora Project Wiki

Description

This testcase ensures it's possible to use package layering features of rpm-ostree

Prerequisite
This testcase assumes you have already ran the boot testcase.

Setup

  1. Ensure you have a booted working Atomic Host

How to test

  1. Install the 'wget' package
# rpm-ostree install wget
Checking out tree ba63713... done
Enabled rpm-md repositories: updates-testing updates fedora

Updating metadata for 'updates-testing': [=============] 100%
rpm-md repo 'updates-testing'; generated: 2018-04-10 22:36:28

Updating metadata for 'updates': [=============] 100%
rpm-md repo 'updates'; generated: 2018-02-20 19:18:14

Updating metadata for 'fedora': [=============] 100%
rpm-md repo 'fedora'; generated: 2018-04-09 12:06:38

Importing metadata [=============] 100%
Resolving dependencies... done
Will download: 1 package (746.7 kB)

  Downloading from fedora: [=============] 100%

Importing (1/1) [=============] 100%
Applying 1 overlay

Building filesystem (1/1) [=============] 100%
Running pre scripts... 0 done
Running post scripts... 8 done
Writing rpmdb... done
Writing OSTree commit... done
Copying /etc changes: 21 modified, 0 removed, 68 added
Transaction complete; bootconfig swap: yes deployment count change: 1
Added:
  wget-1.19.4-2.fc28.x86_64
Run "systemctl reboot" to start a reboot

  1. Reboot the system
  2. Verify that the 'wget' package is layered succesfully and usable
 rpm-ostree status                               
State: idle; auto updates disabled                                                                       
Deployments:                                                                                             
● ostree://fedora-atomic:fedora/28/x86_64/atomic-host                               
                   Version: 28_Beta.1.3 (2018-03-28 22:24:38)                 
                BaseCommit: ba6371389226223fb8ba055fb02b92febf4d00e1ccd435cc21cba6af19088c73
              GPGSignature: Valid signature by 128CF232A9371991C8A65695E08E7E629DB62FB1
           LayeredPackages: wget                     
                                                                                                         
  ostree://fedora-atomic:fedora/28/x86_64/atomic-host                                                    
                   Version: 28_Beta.1.3 (2018-03-28 22:24:38)                   
                    Commit: ba6371389226223fb8ba055fb02b92febf4d00e1ccd435cc21cba6af19088c73             
              GPGSignature: Valid signature by 128CF232A9371991C8A65695E08E7E629DB62FB1                  
# rpm -q wget                        
wget-1.19.4-2.fc28.x86_64
# wget --version
GNU Wget 1.19.4 built on linux-gnu.

-cares +digest +gpgme +https +ipv6 +iri +large-file +metalink +nls 
+ntlm +opie +psl +ssl/gnutls 
...

  1. Install 'httpd' which pulls in multiple dependencies
# rpm-ostree install httpd
Checking out tree ba63713... done
Enabled rpm-md repositories: updates-testing updates fedora
rpm-md repo 'updates-testing' (cached); generated: 2018-04-10 22:36:28
rpm-md repo 'updates' (cached); generated: 2018-02-20 19:18:14
rpm-md repo 'fedora' (cached); generated: 2018-04-09 12:06:38

Importing metadata [=============] 100%
Resolving dependencies... done
Will download: 9 packages (2.3 MB)

  Downloading from fedora: [=============] 100%

  Downloading from updates-testing: [=============] 100%

Importing (9/9) [=============] 100%
Applying 10 overlays

Building filesystem (10/10) [=============] 100%
Running pre scripts... 1 done
Running post scripts... 10 done
Writing rpmdb... done
Writing OSTree commit... done
Copying /etc changes: 21 modified, 0 removed, 71 added
Transaction complete; bootconfig swap: no deployment count change: 0
Added:
  apr-1.6.3-5.fc28.x86_64
  apr-util-1.6.1-5.fc28.x86_64
  brotli-1.0.1-3.fc28.x86_64
  fedora-logos-httpd-28.0.2-3.fc28.noarch
  httpd-2.4.33-2.fc28.x86_64
  httpd-filesystem-2.4.33-2.fc28.noarch
  httpd-tools-2.4.33-2.fc28.x86_64
  mailcap-2.1.48-3.fc28.noarch
  mod_http2-1.10.16-1.fc28.x86_64
Run "systemctl reboot" to start a reboot

  1. Reboot host
  2. Verify that 'wget' is still layered and 'httpd' is also layered with dependencies
# rpm-ostree status
State: idle; auto updates disabled
Deployments:
● ostree://fedora-atomic:fedora/28/x86_64/atomic-host
                   Version: 28_Beta.1.3 (2018-03-28 22:24:38)
                BaseCommit: ba6371389226223fb8ba055fb02b92febf4d00e1ccd435cc21cba6af19088c73
              GPGSignature: Valid signature by 128CF232A9371991C8A65695E08E7E629DB62FB1
           LayeredPackages: httpd wget

  ostree://fedora-atomic:fedora/28/x86_64/atomic-host
                   Version: 28_Beta.1.3 (2018-03-28 22:24:38)
                BaseCommit: ba6371389226223fb8ba055fb02b92febf4d00e1ccd435cc21cba6af19088c73
              GPGSignature: Valid signature by 128CF232A9371991C8A65695E08E7E629DB62FB1
           LayeredPackages: wget
# rpm -q wget
wget-1.19.4-2.fc28.x86_64
# rpm -q httpd
httpd-2.4.33-2.fc28.x86_64
# rpm -q apr
apr-1.6.3-5.fc28.x86_64

  1. Verify that you can start the 'httpd' service and connect to the server
# systemctl start httpd
# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2018-04-11 02:59:48 UTC; 3s ago
     Docs: man:httpd.service(8)
 Main PID: 1778 (httpd)
   Status: "Processing requests..."
    Tasks: 213 (limit: 2324)
   Memory: 21.6M
   CGroup: /system.slice/httpd.service
           ├─1778 /usr/sbin/httpd -DFOREGROUND
           ├─1779 /usr/sbin/httpd -DFOREGROUND
           ├─1780 /usr/sbin/httpd -DFOREGROUND
           ├─1781 /usr/sbin/httpd -DFOREGROUND
           └─1782 /usr/sbin/httpd -DFOREGROUND

Apr 11 02:59:48 atomichost-by-dustymabe systemd[1]: Starting The Apache HTTP Server...
Apr 11 02:59:48 atomichost-by-dustymabe httpd[1778]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 192.168.124.20. Set the 'ServerName' directive globally to suppr>
Apr 11 02:59:48 atomichost-by-dustymabe systemd[1]: Started The Apache HTTP Server.
# curl http://localhost                                                  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">        
                                                                       
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">                                                                                                                                                
        <head>                                   
                <title>Test Page for the Apache HTTP Server on Fedora</title>                                                                                                                                                      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />              
...

  1. Uninstall 'wget' and 'httpd'
# rpm-ostree uninstall wget httpd
Checking out tree ba63713... done
Copying /etc changes: 21 modified, 0 removed, 73 added
Transaction complete; bootconfig swap: no deployment count change: 0
Removed:
  apr-1.6.3-5.fc28.x86_64
  apr-util-1.6.1-5.fc28.x86_64
  brotli-1.0.1-3.fc28.x86_64
  fedora-logos-httpd-28.0.2-3.fc28.noarch
  httpd-2.4.33-2.fc28.x86_64
  httpd-filesystem-2.4.33-2.fc28.noarch
  httpd-tools-2.4.33-2.fc28.x86_64
  mailcap-2.1.48-3.fc28.noarch
  mod_http2-1.10.16-1.fc28.x86_64
  wget-1.19.4-2.fc28.x86_64
Run "systemctl reboot" to start a reboot

  1. Reboot host
  2. Verify that 'wget' and 'httpd' are no longer layered and cannot be used
# rpm-ostree status
State: idle; auto updates disabled
Deployments:
● ostree://fedora-atomic:fedora/28/x86_64/atomic-host
                   Version: 28_Beta.1.3 (2018-03-28 22:24:38)
                    Commit: ba6371389226223fb8ba055fb02b92febf4d00e1ccd435cc21cba6af19088c73
              GPGSignature: Valid signature by 128CF232A9371991C8A65695E08E7E629DB62FB1

  ostree://fedora-atomic:fedora/28/x86_64/atomic-host
                   Version: 28_Beta.1.3 (2018-03-28 22:24:38)
                BaseCommit: ba6371389226223fb8ba055fb02b92febf4d00e1ccd435cc21cba6af19088c73
              GPGSignature: Valid signature by 128CF232A9371991C8A65695E08E7E629DB62FB1
           LayeredPackages: httpd wget
# rpm -q wget 
package wget is not installed
# rpm -q httpd
package httpd is not installed
# wget --version
bash: wget: command not found
# systemctl status httpd
Unit httpd.service could not be found.

Expected Results

  1. Verify that all layering operations were successful