From Fedora Project Wiki
Description
This testcase ensures it's possible to use package layering features of rpm-ostree.
Setup
- Ensure you have a booted rpm-ostree-based Fedora install (e.g. IoT, CoreOS, Silverblue or Kinoite)
How to test
- Install a package for a simple application with no dependencies which is not in the base image, e.g. 'htop'
# rpm-ostree install htop Checking out tree 7130f87... done ... Resolving dependencies... done Will download: 1 package (815.9?kB) Downloading from 'updates-testing'... done Importing packages... done Checking out packages... done Running pre scripts... done Running post scripts... done Running posttrans scripts... done Writing rpmdb... done Writing OSTree commit... done Staging deployment... done Added: htop-2.2.0-8.fc32.x86_64 Run "systemctl reboot" to start a reboot
- Reboot the system
- Verify that the 'htop' package is layered succesfully and usable
rpm-ostree status * ostree://fedora-iot:fedora/devel/x86_64/iot Version: 32.20200408.0 (2020-04-08T11:07:02Z) BaseCommit: 7130f8716204842f0959498b2e86ef06d6e2a7dc5be036c9c84a4f28e1bca990 GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0 LayeredPackages: htop ostree://fedora-iot:fedora/devel/x86_64/iot Version: 32.20200408.0 (2020-04-08T11:07:02Z) Commit: 7130f8716204842f0959498b2e86ef06d6e2a7dc5be036c9c84a4f28e1bca990 GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0 # rpm -q htop htop-2.2.0-8.fc32.x86_64 # htop --version htop 2.2.0
- Install a server-type package which pulls in multiple dependencies, e.g. 'httpd'. If 'httpd' is in the base image, try 'postgresql-server'
# rpm-ostree install httpd Checking out tree 7130f87... done ... Downloading from 'fedora'... done Downloading from 'updates-testing'... done Importing packages... done Checking out packages... done Running pre scripts... done Running post scripts... done Running posttrans scripts... done Writing rpmdb... done Writing OSTree commit... done Staging deployment... done Added: apr-1.7.0-3.fc32.x86_64 apr-util-1.6.1-12.fc32.x86_64 apr-util-bdb-1.6.1-12.fc32.x86_64 apr-util-openssl-1.6.1-12.fc32.x86_64 fedora-logos-httpd-30.0.2-4.fc32.noarch httpd-2.4.43-1.fc32.x86_64 httpd-filesystem-2.4.43-1.fc32.noarch httpd-tools-2.4.43-1.fc32.x86_64 mailcap-2.1.48-7.fc32.noarch mod_http2-1.15.5-1.fc32.x86_64 Run "systemctl reboot" to start a reboot
- Reboot host
- Verify that 'htop' is still layered and 'httpd' (or 'postgresql-server') is also layered with dependencies (for 'postgresql-server', check that 'postgresql' is also installed)
# rpm-ostree status State: idle AutomaticUpdates: disabled Deployments: * ostree://fedora-iot:fedora/devel/x86_64/iot Version: 32.20200408.0 (2020-04-08T11:07:02Z) BaseCommit: 7130f8716204842f0959498b2e86ef06d6e2a7dc5be036c9c84a4f28e1bca990 GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0 LayeredPackages: httpd htop ostree://fedora-iot:fedora/devel/x86_64/iot Version: 32.20200408.0 (2020-04-08T11:07:02Z) BaseCommit: 7130f8716204842f0959498b2e86ef06d6e2a7dc5be036c9c84a4f28e1bca990 GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0 LayeredPackages: htop # rpm -q htop htop-2.2.0-8.fc32.x86_64 # rpm -q httpd httpd-2.4.43-1.fc32.x86_64 # rpm -q apr apr-1.7.0-3.fc32.x86_64
- Verify that you can start the 'httpd' service and connect to the server. For postgresql, run
/usr/bin/postgresql-setup --initdb
then start and test the 'postgresql' service, and runsu postgres -c "psql -l"
to check that it works
# 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 2020-04-08 15:36:17 CDT; 4s ago Docs: man:httpd.service(8) Main PID: 2333 (httpd) Status: "Processing requests..." Tasks: 213 (limit: 9245) Memory: 20.1M CPU: 172ms CGroup: /system.slice/httpd.service ├─2333 /usr/sbin/httpd -DFOREGROUND ├─2334 /usr/sbin/httpd -DFOREGROUND ├─2335 /usr/sbin/httpd -DFOREGROUND ├─2336 /usr/sbin/httpd -DFOREGROUND └─2337 /usr/sbin/httpd -DFOREGROUND Apr 08 15:36:17 fitlet2 systemd[1]: Starting The Apache HTTP Server... Apr 08 15:36:17 fitlet2 httpd[2333]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 19> Apr 08 15:36:17 fitlet2 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" /> ...
Enable the httpd (or postgresql) service to start at boot and reboot the system.
systemctl enable httpd Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service. systemctl reboot
Log back into the system and make sure the httpd service is running.
systemctl status httpd ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2020-04-08 15:39:44 CDT; 5s ago Docs: man:httpd.service(8) Main PID: 1251 (httpd) Status: "Processing requests..." Tasks: 213 (limit: 9245)
...
- Uninstall 'htop' and 'httpd' (or 'postgresql-server')
# rpm-ostree uninstall htop httpd Staging deployment... done Removed: apr-1.7.0-3.fc32.x86_64 apr-util-1.6.1-12.fc32.x86_64 apr-util-bdb-1.6.1-12.fc32.x86_64 apr-util-openssl-1.6.1-12.fc32.x86_64 fedora-logos-httpd-30.0.2-4.fc32.noarch httpd-2.4.43-1.fc32.x86_64 httpd-filesystem-2.4.43-1.fc32.noarch httpd-tools-2.4.43-1.fc32.x86_64 mailcap-2.1.48-7.fc32.noarch mod_http2-1.15.5-1.fc32.x86_64 htop-2.2.0-8.fc32.x86_64 Run "systemctl reboot" to start a reboot
- Reboot host
- Verify that 'htop' and 'httpd' (or 'postgresql-server') are no longer layered and cannot be used
# rpm-ostree status State: idle AutomaticUpdates: disabled Deployments: * ostree://fedora-iot:fedora/devel/x86_64/iot Version: 32.20200408.0 (2020-04-08T11:07:02Z) Commit: 7130f8716204842f0959498b2e86ef06d6e2a7dc5be036c9c84a4f28e1bca990 GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0 ostree://fedora-iot:fedora/devel/x86_64/iot Version: 32.20200408.0 (2020-04-08T11:07:02Z) BaseCommit: 7130f8716204842f0959498b2e86ef06d6e2a7dc5be036c9c84a4f28e1bca990 GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0 LayeredPackages: httpd htop # rpm -q htop package htop is not installed # rpm -q httpd package httpd is not installed # htop --version bash: htop: command not found # systemctl status httpd Unit httpd.service could not be found.
Expected Results
- Verify that all layering operations were successful