DESK-MX6-L-AN-0003: Package Management with Yocto and DNF

From DAVE Developer's Wiki
Jump to: navigation, search
Info Box


200px-Emblem-important.svg.png

This application note has been validated using the kit version in the History table.

History[edit | edit source]

Version Date Development Kit version
1.0.0 Oct 2021 DESK-MX6UL-L 1.0.1
1.0.1 Apr 2022 Upated info for DESK-MX6UL-L-3.0.0 and DESK-MX6-L-3.0.0

Introduction[edit | edit source]

Since Pyro (2.3) Yocto release, DNF is the default package manager for installing packages in the DUT (target machine).

The Dandified Packaging Tool (DNF) performs runtime package management of RPM packages. In order to use DNF for runtime package management, you must perform an initial setup on the target machine for cases where the PACKAGE_FEED_* variables were not set as part of the image that is running on the target.

This application note details how to use DNF for installing packages with a Yocto based root file system

DNF[edit | edit source]

DNF is a software package manager that installs, updates, and removes packages on RPM-based Linux distributions. It automatically computes dependencies and determines the actions required to install packages. DNF also makes it easier to maintain groups of machines, eliminating the need to manually update each one using rpm. Introduced in Fedora 18, it has been the default package manager since Fedora 22.

More information can be found on Fedora's wiki DNF page

Configuring the DNF repository[edit | edit source]

It is possibile to add and configure DNF repositories using additional .repo files: it is recommended to define individual repositories in new or existing .repo files in the /etc/yum.repos.d/ directory.

More information in the Configuring DNF and DNF_Repositories Fedora's page.

Here below an example on how to create the .repo with the proper setting options using DAVE's Yocto server and AXEL ULite package repositories:

root@desk-mx6ul-axelulite:~# mkdir -p /etc/yum.repos.d 
root@desk-mx6ul-axelulite:~# 
{
  echo [cortexa7hf_neon]
  echo name=desk-mx6ul-cortexa7hf
  echo enabled=1                                                    
  echo gpgcheck=0                                                  
  echo baseurl=http://yocto.dave.eu/desk-mx6ul-l-3.0.0/cortexa7hf_neon/
} | tee > /etc/yum.repos.d/dave.repo
root@desk-mx6ul-axelulite:~# 
{
  echo [cortexa7t2hf_neon]
  echo name=desk-mx6ul-cortexa7t2hf_neon
  echo enabled=1                                                    
  echo gpgcheck=0                                                  
  echo baseurl=http://yocto.dave.eu/desk-mx6ul-l-3.0.0/cortexa7t2hf_neon/
} | tee >> /etc/yum.repos.d/dave.repo
root@desk-mx6ul-axelulite:~# 
{
  echo [noarch]
  echo name=desk-mx6ul-noarch
  echo enabled=1                                                    
  echo gpgcheck=0                                                  
  echo baseurl=http://yocto.dave.eu/desk-mx6ul-l-3.0.0/noarch/
} | tee >> /etc/yum.repos.d/dave.repo
root@desk-mx6ul-axelulite:~# 

This allows to configure threee DNF repositories available on DAVE's Yocto package server:

root@desk-mx6ul-axelulite:~# cat /etc/yum.repos.d/dave.repo
[cortexa7hf_neon]
name=desk-mx6ul-cortexa7hf
enabled=1
gpgcheck=0
baseurl=http://yocto.dave.eu/desk-mx6ul-l-3.0.0/cortexa7hf_neon/
[cortexa7t2hf_neon]
name=desk-mx6ul-cortexa7t2hf_neon
enabled=1
gpgcheck=0
baseurl=http://yocto.dave.eu/desk-mx6ul-l-3.0.0/cortexa7t2hf_neon/
[noarch]
name=desk-mx6ul-noarch
enabled=1
gpgcheck=0
baseurl=http://yocto.dave.eu/desk-mx6ul-l-3.0.0/noarch/
root@desk-mx6ul-axelulite:~#

Other DAVE repositories[edit | edit source]

Here below the repositories directories for the DESK-MX6-L:

http://yocto.dave.eu/desk-mx6-l-3.0.0/cortexa9hf_neon/
http://yocto.dave.eu/desk-mx6-l-3.0.0/cortexa9t2hf_neon/
http://yocto.dave.eu/desk-mx6-l-3.0.0/noarch/

Installing packages on target[edit | edit source]

We assume that network interface has been already configured for Internet access. In any case, a simple network configuration can be done according to the How to configure the network interfaces wiki page:

root@desk-mx6ul-axelulite:~# cat /etc/systemd/network/eth0.network
[Match]
Name=eth0

# Prevent the interface loading if the kernel boots from nfs
KernelCommandLine=!nfsroot

[Network]
Address=192.168.0.90
Gateway=192.168.0.254
DNS=192.168.0.1
root@desk-mx6ul-axelulite:~#

Then, for installing a package, it is enough to invoke dnf with the install parameter, for example:

root@desk-mx6ul-axelulite:~# dnf install lighttpd
Last metadata expiration check: 0:06:50 ago on Wed Apr 13 09:02:51 2022.
Dependencies resolved.
=======================================================================================================================================================================
 Package                                         Architecture                           Version                           Repository                              Size
=======================================================================================================================================================================
Installing:
 lighttpd                                        cortexa7t2hf_neon                      1.4.59-r0                         cortexa7t2hf_neon                      146 k
Installing dependencies:
 lighttpd-module-dirlisting                      cortexa7t2hf_neon                      1.4.59-r0                         cortexa7t2hf_neon                       15 k
 lighttpd-module-indexfile                       cortexa7t2hf_neon                      1.4.59-r0                         cortexa7t2hf_neon                      8.8 k
 lighttpd-module-staticfile                      cortexa7t2hf_neon                      1.4.59-r0                         cortexa7t2hf_neon                      8.5 k
Installing weak dependencies:
 lighttpd-module-access                          cortexa7t2hf_neon                      1.4.59-r0                         cortexa7t2hf_neon                      8.5 k
 lighttpd-module-accesslog                       cortexa7t2hf_neon                      1.4.59-r0                         cortexa7t2hf_neon                       15 k

Transaction Summary
=======================================================================================================================================================================
Install  6 Packages

Total download size: 201 k
Installed size: 313 k
Is this ok [y/N]: y
Downloading Packages:
(1/6): lighttpd-module-access-1.4.59-r0.cortexa7t2hf_neon.rpm                                                                          1.7 kB/s | 8.5 kB     00:05
(2/6): lighttpd-module-accesslog-1.4.59-r0.cortexa7t2hf_neon.rpm                                                                       2.9 kB/s |  15 kB     00:05
(3/6): lighttpd-module-indexfile-1.4.59-r0.cortexa7t2hf_neon.rpm                                                                       160 kB/s | 8.8 kB     00:00
(4/6): lighttpd-module-dirlisting-1.4.59-r0.cortexa7t2hf_neon.rpm                                                                      168 kB/s |  15 kB     00:00
(5/6): lighttpd-1.4.59-r0.cortexa7t2hf_neon.rpm                                                                                         28 kB/s | 146 kB     00:05
(6/6): lighttpd-module-staticfile-1.4.59-r0.cortexa7t2hf_neon.rpm                                                                      110 kB/s | 8.5 kB     00:00
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                   38 kB/s | 201 kB     00:05
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                               1/1
  Installing       : lighttpd-module-staticfile-1.4.59-r0.cortexa7t2hf_neon                                                                                        1/6
  Running scriptlet: lighttpd-module-staticfile-1.4.59-r0.cortexa7t2hf_neon                                                                                        1/6
...
...
...
  Verifying        : lighttpd-1.4.59-r0.cortexa7t2hf_neon                                                                                                          1/6
  Verifying        : lighttpd-module-access-1.4.59-r0.cortexa7t2hf_neon                                                                                            2/6
  Verifying        : lighttpd-module-accesslog-1.4.59-r0.cortexa7t2hf_neon                                                                                         3/6
  Verifying        : lighttpd-module-dirlisting-1.4.59-r0.cortexa7t2hf_neon                                                                                        4/6
  Verifying        : lighttpd-module-indexfile-1.4.59-r0.cortexa7t2hf_neon                                                                                         5/6
  Verifying        : lighttpd-module-staticfile-1.4.59-r0.cortexa7t2hf_neon                                                                                        6/6

Installed:
  lighttpd-1.4.59-r0.cortexa7t2hf_neon                   lighttpd-module-access-1.4.59-r0.cortexa7t2hf_neon    lighttpd-module-accesslog-1.4.59-r0.cortexa7t2hf_neon
  lighttpd-module-dirlisting-1.4.59-r0.cortexa7t2hf_neon lighttpd-module-indexfile-1.4.59-r0.cortexa7t2hf_neon lighttpd-module-staticfile-1.4.59-r0.cortexa7t2hf_neon

Complete!
root@desk-mx6ul-axelulite:~#

Other useful DNF commands[edit | edit source]

List of configured software repositories[edit | edit source]

root@desk-mx6ul-axelulite:~# dnf repolist
repo id                               repo name
cortexa7hf_neon                       desk-mx6ul-cortexa7hf
cortexa7t2hf_neon                     desk-mx6ul-cortexa7t2hf_neon
noarch                                desk-mx6ul-noarch

Search for packages[edit | edit source]

To search for an available package into the current configured channels use dnf repoquery

Please note that this will show all packages, it's usually more useful to give it a pattern, e.g.:

root@desk-mx6ul-axelulite:~# dnf repoquery *fb*
desk-mx6ul-cortexa7hf                18 kB/s | 3.8 kB      00:00
desk-mx6ul-cortexa7t2hf_neon         693 kB/s | 2.9 MB     00:04
desk-mx6ul-noarch                    442 kB/s | 123 kB     00:00
fb-test-0:1.1.0-r0.cortexa7t2hf_neon
fb-test-dbg-0:1.1.0-r0.cortexa7t2hf_neon
fb-test-dev-0:1.1.0-r0.cortexa7t2hf_neon
fbida-0:2.14-r0.cortexa7t2hf_neon
fbida-dbg-0:2.14-r0.cortexa7t2hf_neon
fbida-dev-0:2.14-r0.cortexa7t2hf_neon
fbida-doc-0:2.14-r0.cortexa7t2hf_neon
fbida-src-0:2.14-r0.cortexa7t2hf_neon
fbset-0:2.1-r4.cortexa7t2hf_neon
fbset-dbg-0:2.1-r4.cortexa7t2hf_neon
fbset-dev-0:2.1-r4.cortexa7t2hf_neon
fbset-doc-0:2.1-r4.cortexa7t2hf_neon
libharfbuzz-bin-0:2.7.4-r0.cortexa7t2hf_neon
libharfbuzz-dbg-0:2.7.4-r0.cortexa7t2hf_neon
libharfbuzz-dev-0:2.7.4-r0.cortexa7t2hf_neon
libharfbuzz-icu-dev-0:2.7.4-r0.cortexa7t2hf_neon
libharfbuzz-icu0-0:2.7.4-r0.cortexa7t2hf_neon
libharfbuzz-src-0:2.7.4-r0.cortexa7t2hf_neon
libharfbuzz-subset0-0:2.7.4-r0.cortexa7t2hf_neon
libharfbuzz0-0:2.7.4-r0.cortexa7t2hf_neon
root@desk-mx6ul-axelulite:~#

List of installed packages[edit | edit source]

User can see the list of installed packages with dnf repoquery --installed

root@desk-mx6ul-axelulite:~# dnf repoquery --installed
acl-0:2.2.53-r0.cortexa7t2hf_neon
acl-dev-0:2.2.53-r0.cortexa7t2hf_neon
alsa-conf-0:1.2.4-r0.cortexa7t2hf_neon
alsa-state-0:0.2.0-r5.desk_mx6ul_lynx
alsa-states-0:0.2.0-r5.desk_mx6ul_lynx
alsa-tools-0:1.2.2-r0.cortexa7t2hf_neon
...
...
which-0:2.21-r3.cortexa7t2hf_neon
which-dev-0:2.21-r3.cortexa7t2hf_neon
wireless-regdb-static-0:2020.11.20-r0.noarch
wireless-tools-1:30.pre9-r0.cortexa7t2hf_neon
wl18xx-firmware-0:R8.5+git0+02df01f8b9-r0.noarch
wpa-supplicant-0:2.9-r0.cortexa7t2hf_neon
wpa-supplicant-cli-0:2.9-r0.cortexa7t2hf_neon
wpa-supplicant-passphrase-0:2.9-r0.cortexa7t2hf_neon
xinetd-0:2.3.15.4-r0.cortexa7t2hf_neon
xorgproto-dev-0:2020.1-r0.cortexa7t2hf_neon
xz-0:5.2.5-r0.cortexa7t2hf_neon
xz-dev-0:5.2.5-r0.cortexa7t2hf_neon
root@desk-mx6ul-axelulite:~#

DNF activity history[edit | edit source]

User can see the activity on packages with dnf history

root@desk-mx6ul-axelulite:~# dnf history
ID     | Command line                                                                                                     | Date and time    | Action(s)      | Altered
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
     4 | install lighttpd                                                                                                 | 2022-04-13 09:09 | Install        |    6 EE
     3 | -v --rpmverbosity=info -y -c /home/jenkins/workspace/workspace/DESK-MX6UL-L-3.x.x_Yocto/yocto/build-fb/tmp/work/ | 2022-02-16 16:19 | Removed        |    1 E<
     2 | -v --rpmverbosity=info -y -c /home/jenkins/workspace/workspace/DESK-MX6UL-L-3.x.x_Yocto/yocto/build-fb/tmp/work/ | 2022-02-16 16:19 | Install        |   16 >
     1 | -v --rpmverbosity=info -y -c /home/jenkins/workspace/workspace/DESK-MX6UL-L-3.x.x_Yocto/yocto/build-fb/tmp/work/ | 2022-02-16 16:14 | Install        | 1593 EE
root@desk-mx6ul-axelulite:~#

References[edit | edit source]