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
Issue Date Notes

2021/10/06

DESK-MX6UL-L 1.0.1

2022/04/13

DESK-MX6UL-L-3.0.0 and DESK-MX6-L-3.0.0
2024/07/01 DESK-MX6UL-L-4.0.0 and DESK-MX6-L-4.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-4.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-4.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-4.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-4.0.0/cortexa7hf_neon/
[cortexa7t2hf_neon]
name=desk-mx6ul-cortexa7t2hf_neon
enabled=1
gpgcheck=0
baseurl=http://yocto.dave.eu/desk-mx6ul-l-4.0.0/cortexa7t2hf_neon/
[noarch]
name=desk-mx6ul-noarch
enabled=1
gpgcheck=0
baseurl=http://yocto.dave.eu/desk-mx6ul-l-4.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-4.0.0/cortexa9hf_neon/
http://yocto.dave.eu/desk-mx6-l-4.0.0/cortexa9t2hf_neon/
http://yocto.dave.eu/desk-mx6-l-4.0.0/noarch/

For desk-mx6-l-4.0.0 we need to define /etc/yum.repos.d/dave.repo like below

[cortexa9hf_neon]
name=desk-mx6-cortexa9hf
enabled=1
gpgcheck=0
baseurl=http://yocto.dave.eu/desk-mx6-l-4.0.0/cortexa9hf_neon/
[cortexa9t2hf_neon]
name=desk-mx6-cortexa9t2hf_neon
enabled=1
gpgcheck=0
baseurl=http://yocto.dave.eu/desk-mx6-l-4.0.0/cortexa9t2hf_neon/
[noarch]
name=desk-mx6-noarch
enabled=1
gpgcheck=0
baseurl=http://yocto.dave.eu/desk-mx6-l-4.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:08:43 ago on Mon Jul  1 14:21:04 2024.
Dependencies resolved.
=============================================================================================================================================================================================================================================
 Package                                                           Architecture                                             Version                                           Repository                                                Size
=============================================================================================================================================================================================================================================
Installing:
 lighttpd                                                          cortexa7t2hf_neon                                        1.4.66-r0                                         cortexa7t2hf_neon                                        162 k
Installing dependencies:
 lighttpd-module-dirlisting                                        cortexa7t2hf_neon                                        1.4.66-r0                                         cortexa7t2hf_neon                                         17 k
 lighttpd-module-indexfile                                         cortexa7t2hf_neon                                        1.4.66-r0                                         cortexa7t2hf_neon                                        8.7 k
 lighttpd-module-staticfile                                        cortexa7t2hf_neon                                        1.4.66-r0                                         cortexa7t2hf_neon                                        8.4 k
Installing weak dependencies:
 lighttpd-module-access                                            cortexa7t2hf_neon                                        1.4.66-r0                                         cortexa7t2hf_neon                                        8.3 k
 lighttpd-module-accesslog                                         cortexa7t2hf_neon                                        1.4.66-r0                                         cortexa7t2hf_neon                                         14 k

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

Total download size: 219 k
Installed size: 313 k
Is this ok [y/N]: y
Downloading Packages:
(1/6): lighttpd-module-access-1.4.66-r0.cortexa7t2hf_neon.rpm                                                                                                                                                 12 kB/s | 8.3 kB     00:00
(2/6): lighttpd-module-accesslog-1.4.66-r0.cortexa7t2hf_neon.rpm                                                                                                                                              20 kB/s |  14 kB     00:00
(3/6): lighttpd-module-dirlisting-1.4.66-r0.cortexa7t2hf_neon.rpm                                                                                                                                            138 kB/s |  17 kB     00:00
(4/6): lighttpd-module-indexfile-1.4.66-r0.cortexa7t2hf_neon.rpm                                                                                                                                              60 kB/s | 8.7 kB     00:00
(5/6): lighttpd-1.4.66-r0.cortexa7t2hf_neon.rpm                                                                                                                                                              181 kB/s | 162 kB     00:00
(6/6): lighttpd-module-staticfile-1.4.66-r0.cortexa7t2hf_neon.rpm                                                                                                                                            141 kB/s | 8.4 kB     00:00
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                                                        230 kB/s | 219 kB     00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                                                                                     1/1
  Installing       : lighttpd-module-staticfile-1.4.66-r0.cortexa7t2hf_neon                                                                                                                                                              1/6
  Installing       : lighttpd-module-indexfile-1.4.66-r0.cortexa7t2hf_neon                                                                                                                                                               2/6
  Installing       : lighttpd-module-dirlisting-1.4.66-r0.cortexa7t2hf_neon                                                                                                                                                              3/6
  Installing       : lighttpd-module-accesslog-1.4.66-r0.cortexa7t2hf_neon                                                                                                                                                               4/6
  Installing       : lighttpd-module-access-1.4.66-r0.cortexa7t2hf_neon                                                                                                                                                                  5/6
  Installing       : lighttpd-1.4.66-r0.cortexa7t2hf_neon                                                                                                                                                                                6/6
  Running scriptlet: lighttpd-1.4.66-r0.cortexa7t2hf_neon                                                                                                                                                                                6/6
%post(lighttpd-1.4.66-r0.cortexa7t2hf_neon): scriptlet start
%post(lighttpd-1.4.66-r0.cortexa7t2hf_neon): execv(/bin/sh) pid 322
+ set -e
+ systemctl
+ OPTS=
+ '[' -n '' ']'
+ '[' enable = enable ']'
+ for service in lighttpd.service
+ systemctl enable lighttpd.service
Created symlink /etc/systemd/system/multi-user.target.wants/lighttpd.service -> /lib/systemd/system/lighttpd.service.
+ '[' -z '' ']'
+ systemctl daemon-reload
+ systemctl preset lighttpd.service
+ '[' enable = enable ']'
+ systemctl --no-block restart lighttpd.service
%post(lighttpd-1.4.66-r0.cortexa7t2hf_neon): waitpid(322) rc 322 status 0

  Verifying        : lighttpd-1.4.66-r0.cortexa7t2hf_neon                                                                                                                                                                                1/6
  Verifying        : lighttpd-module-access-1.4.66-r0.cortexa7t2hf_neon                                                                                                                                                                  2/6
  Verifying        : lighttpd-module-accesslog-1.4.66-r0.cortexa7t2hf_neon                                                                                                                                                               3/6
  Verifying        : lighttpd-module-dirlisting-1.4.66-r0.cortexa7t2hf_neon                                                                                                                                                              4/6
  Verifying        : lighttpd-module-indexfile-1.4.66-r0.cortexa7t2hf_neon                                                                                                                                                               5/6
  Verifying        : lighttpd-module-staticfile-1.4.66-r0.cortexa7t2hf_neon                                                                                                                                                              6/6

Installed:
  lighttpd-1.4.66-r0.cortexa7t2hf_neon                      lighttpd-module-access-1.4.66-r0.cortexa7t2hf_neon         lighttpd-module-accesslog-1.4.66-r0.cortexa7t2hf_neon     lighttpd-module-dirlisting-1.4.66-r0.cortexa7t2hf_neon
  lighttpd-module-indexfile-1.4.66-r0.cortexa7t2hf_neon     lighttpd-module-staticfile-1.4.66-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                                                                                                                                                                                        207 kB/s |  76 kB     00:00
desk-mx6ul-cortexa7t2hf_neon                                                                                                                                                                                 2.3 MB/s | 7.9 MB     00:03
desk-mx6ul-noarch                                                                                                                                                                                            653 kB/s | 276 kB     00:00
con2fbmap-0:git-r0.cortexa7t2hf_neon
con2fbmap-dbg-0:git-r0.cortexa7t2hf_neon
con2fbmap-dev-0:git-r0.cortexa7t2hf_neon
con2fbmap-src-0:git-r0.cortexa7t2hf_neon
directfb-0:1.7.7-r0.cortexa7t2hf_neon
directfb-dbg-0:1.7.7-r0.cortexa7t2hf_neon
directfb-dev-0:1.7.7-r0.cortexa7t2hf_neon
directfb-doc-0:1.7.7-r0.cortexa7t2hf_neon
directfb-examples-0:1.7.0-r0.cortexa7t2hf_neon
directfb-examples-dbg-0:1.7.0-r0.cortexa7t2hf_neon
directfb-examples-dev-0:1.7.0-r0.cortexa7t2hf_neon
directfb-examples-src-0:1.7.0-r0.cortexa7t2hf_neon
directfb-src-0:1.7.7-r0.cortexa7t2hf_neon
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
fbgrab-0:1.5-r0.cortexa7t2hf_neon
fbgrab-dbg-0:1.5-r0.cortexa7t2hf_neon
fbgrab-dev-0:1.5-r0.cortexa7t2hf_neon
fbgrab-doc-0:1.5-r0.cortexa7t2hf_neon
fbgrab-src-0:1.5-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
fbv-0:1.0b-r2.cortexa7t2hf_neon
fbv-dbg-0:1.0b-r2.cortexa7t2hf_neon
fbv-dev-0:1.0b-r2.cortexa7t2hf_neon
fbv-doc-0:1.0b-r2.cortexa7t2hf_neon
libharfbuzz-bin-0:4.0.1-r0.cortexa7t2hf_neon
libharfbuzz-dbg-0:4.0.1-r0.cortexa7t2hf_neon
libharfbuzz-dev-0:4.0.1-r0.cortexa7t2hf_neon
libharfbuzz-icu-dev-0:4.0.1-r0.cortexa7t2hf_neon
libharfbuzz-icu0-0:4.0.1-r0.cortexa7t2hf_neon
libharfbuzz-src-0:4.0.1-r0.cortexa7t2hf_neon
libharfbuzz-subset0-0:4.0.1-r0.cortexa7t2hf_neon
libharfbuzz0-0:4.0.1-r0.cortexa7t2hf_neon
python3-configshell-fb-0:1.1.29-r0.cortexa7t2hf_neon
python3-configshell-fb-dbg-0:1.1.29-r0.cortexa7t2hf_neon
python3-configshell-fb-dev-0:1.1.29-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.3.1-r0.cortexa7t2hf_neon
acl-dev-0:2.3.1-r0.cortexa7t2hf_neon
alsa-conf-0:1.2.6.1-r0.cortexa7t2hf_neon_mx6ul
alsa-plugins-pulseaudio-conf-0:1.2.6-r0.cortexa7t2hf_neon
alsa-state-0:0.2.0-r5.desk_mx6ul_axelulite
alsa-states-0:0.2.0-r5.desk_mx6ul_axelulite
alsa-tools-0:1.2.5-r0.cortexa7t2hf_neon
alsa-topology-conf-0:1.2.5.1-r0.noarch
alsa-ucm-conf-0:1.2.6.3-r0.noarch
alsa-utils-0:1.2.6-r0.cortexa7t2hf_neon
...
...
volatile-binds-0:1.0-r0.noarch
which-0:2.21-r3.cortexa7t2hf_neon
wireless-regdb-static-0:2022.08.12-r0.noarch
wireless-tools-1:30.pre9-r0.cortexa7t2hf_neon
wl18xx-firmware-0:R8.5+git0+02df01f8b9-r0.noarch
wpa-supplicant-0:2.10-r0.cortexa7t2hf_neon
wpa-supplicant-cli-0:2.10-r0.cortexa7t2hf_neon
wpa-supplicant-passphrase-0:2.10-r0.cortexa7t2hf_neon
xinetd-0:2.3.15.4-r0.cortexa7t2hf_neon
zstd-0:1.5.2-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                                                                                                                                                                       | 2024-07-01 14:29 | Install        |    6 EE
     3 | -v --rpmverbosity=info -y -c /home/norlando/yocto/meta-desk-mx/build/tmp/work/desk_mx6ul_axelulite-poky-linux-gnueabi/dave-image-devel/1.0-r0/rootfs/etc/dnf/dnf.conf --setopt=reposdi | 2024-07-01 12:24 | Removed        |    1 E<
     2 | -v --rpmverbosity=info -y -c /home/norlando/yocto/meta-desk-mx/build/tmp/work/desk_mx6ul_axelulite-poky-linux-gnueabi/dave-image-devel/1.0-r0/rootfs/etc/dnf/dnf.conf --setopt=reposdi | 2024-07-01 12:24 | Install        |   18 >
     1 | -v --rpmverbosity=info -y -c /home/norlando/yocto/meta-desk-mx/build/tmp/work/desk_mx6ul_axelulite-poky-linux-gnueabi/dave-image-devel/1.0-r0/rootfs/etc/dnf/dnf.conf --setopt=reposdi | 2024-07-01 12:21 | Install        | 1372 EE
root@desk-mx6ul-axelulite:~#

References[edit | edit source]