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 Fedora IoT image
How to test
- Install the 'wget' package
# rpm-ostree install wget 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: wget-1.20.3-4.fc32.x86_64 Run "systemctl reboot" to start a reboot
- Reboot the system
- Verify that the 'wget' 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: wget
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 wget
wget-1.20.3-4.fc32.x86_64
# wget --version
GNU Wget 1.20.3 built on linux-gnu.
-cares +digest +gpgme +https +ipv6 +iri +large-file +metalink +nls
+ntlm +opie +psl +ssl/gnutls
...
- Install 'httpd' which pulls in multiple dependencies
# 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 'wget' is still layered and 'httpd' is also layered with dependencies
# 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 wget
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: wget
# rpm -q wget
wget-1.20.3-4.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
# 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 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 'wget' and 'httpd'
# rpm-ostree uninstall wget 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 wget-1.20.3-4.fc32.x86_64 Run "systemctl reboot" to start a reboot
- Reboot host
- Verify that 'wget' and 'httpd' 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 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
- Verify that all layering operations were successful
