Difference between revisions of "DESK-MX6-L-AN-0003: Package Management with Yocto and DNF"

From DAVE Developer's Wiki
Jump to: navigation, search
(Introduction)
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
{{InfoBoxTop}}
 
{{InfoBoxTop}}
{{AppliesToAXEL Lite AN}}
 
 
{{AppliesToAXEL ULite AN}}
 
{{AppliesToAXEL ULite AN}}
{{AppliesTo RIALTO SBC AN}}
 
 
{{InfoBoxBottom}}
 
{{InfoBoxBottom}}
  
Line 13: Line 11:
 
!Development Kit version
 
!Development Kit version
 
|-
 
|-
| 1.0.0
+
| 1.0.1
 
| Oct 2021
 
| Oct 2021
 
|[[DESK-MX6UL-L/General/Release_Notes#DESK-MX6UL-L_1.0.1|DESK-MX6UL-L 1.0.1]]
 
|[[DESK-MX6UL-L/General/Release_Notes#DESK-MX6UL-L_1.0.1|DESK-MX6UL-L 1.0.1]]
|-
 
|1.0.1
 
|Apr 2022
 
|Upated info for [[DESK-MX6UL-L|DESK-MX6UL-L-3.0.0]] and [[DESK-MX6-L|DESK-MX6-L-3.0.0]]
 
 
|-
 
|-
 
|}
 
|}
Line 25: Line 19:
 
==Introduction==
 
==Introduction==
  
Since [https://www.yoctoproject.org/docs/2.3/dev-manual/dev-manual.html#using-runtime-package-management Pyro (2.3) Yocto release], DNF is the default package manager for installing packages in the DUT (target machine).  
+
Since some Yocto releases, DNF is the default package manager for installing packages in the DUT (target machine).  
  
 
The [https://en.wikipedia.org/wiki/DNF_(software) 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.  
 
The [https://en.wikipedia.org/wiki/DNF_(software) 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.  
Line 41: Line 35:
 
More information in the [https://docs.fedoraproject.org/en-US/fedora/f34/system-administrators-guide/package-management/DNF/#sec-Configuring_DNF_and_DNF_Repositories Configuring DNF and DNF_Repositories] Fedora's page.
 
More information in the [https://docs.fedoraproject.org/en-US/fedora/f34/system-administrators-guide/package-management/DNF/#sec-Configuring_DNF_and_DNF_Repositories Configuring DNF and DNF_Repositories] Fedora's page.
  
Here below an example on how to create the <code>.repo</code> with the proper [https://docs.fedoraproject.org/en-US/fedora/f34/system-administrators-guide/package-management/DNF/#sec-Setting_repository_Options setting options] using DAVE's Yocto server and [[AXEL ULite SOM|AXEL ULite]] package repositories:
+
Here below an example on how to create the <code>.repo</code> with the proper [https://docs.fedoraproject.org/en-US/fedora/f34/system-administrators-guide/package-management/DNF/#sec-Setting_repository_Options setting options]
  
 
<pre class="board-terminal">
 
<pre class="board-terminal">
Line 47: Line 41:
 
root@desk-mx6ul-axelulite:~#  
 
root@desk-mx6ul-axelulite:~#  
 
{
 
{
   echo [cortexa7hf_neon]
+
   echo [cortexa7hf]
   echo name=desk-mx6ul-cortexa7hf
+
   echo name=desk-mx6ul-1.0.1
 
   echo enabled=1                                                     
 
   echo enabled=1                                                     
 
   echo gpgcheck=0                                                   
 
   echo gpgcheck=0                                                   
   echo baseurl=http://yocto.dave.eu/desk-mx6ul-l-3.0.0/cortexa7hf_neon/
+
   echo baseurl=http://yocto.dave.eu/desk-mx6ul-l-1.0.1/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
 
} | 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:~#
 
</pre>
 
 
This allows to configure threee DNF repositories available on [http://yocto.dave.eu/ DAVE's Yocto package server]:
 
 
<pre class="board-terminal">
 
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:~#
 
root@desk-mx6ul-axelulite:~#
</pre>
 
 
==== Other DAVE repositories ====
 
Here below the repositories directories for the DESK-MX6-L:
 
 
<pre>
 
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/
 
 
</pre>
 
</pre>
  
 
== Installing packages on target ==
 
== Installing packages on target ==
  
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 [[DESK-MX6UL-L/Deployment/How_to_configure_the_network_interfaces#Static_IP_address | How to configure the network interfaces]] wiki page:
+
We assume that network interface has been already configured for Internet access. In any case, a simple network configuration can be done directly on serial console with the following commands:
  
 
<pre class="board-terminal">
 
<pre class="board-terminal">
root@desk-mx6ul-axelulite:~# cat /etc/systemd/network/eth0.network
+
root@desk-mx6ul-axelulite:~# ifconfig eth0 192.168.0.94
[Match]
+
root@desk-mx6ul-axelulite:~# route add default gw 192.168.0.254
Name=eth0
+
root@desk-mx6ul-axelulite:~# echo "nameserver 8.8.8.8" > /etc/resolv.conf
 
 
# 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:~#
 
 
</pre>
 
</pre>
  
 
Then, for installing a package, it is enough to invoke <code>dnf</code> with the ''install'' parameter, for example:
 
Then, for installing a package, it is enough to invoke <code>dnf</code> with the ''install'' parameter, for example:
 
+
'''
<pre class="board-terminal">
 
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:~#
 
</pre>
 
 
 
== Other useful DNF commands ==
 
 
 
=== List of configured software repositories ===
 
 
 
 
<pre class="board-terminal">
 
<pre class="board-terminal">
root@desk-mx6ul-axelulite:~# dnf repolist
+
root@desk-mx6ul-axelulite:~# dnf install fb-test
repo id                              repo name
 
cortexa7hf_neon                      desk-mx6ul-cortexa7hf
 
cortexa7t2hf_neon                    desk-mx6ul-cortexa7t2hf_neon
 
noarch                                desk-mx6ul-noarch
 
 
</pre>
 
</pre>
  
=== Search for packages ===
 
 
To search for an available package into the current configured channels use <code>dnf repoquery</code>
 
 
Please note that this will show all packages, it's usually more useful to give it a pattern, e.g.:
 
 
<pre class="board-terminal">
 
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:~#
 
</pre>
 
 
=== List of installed packages ===
 
 
User can see the list of installed packages with <code>dnf repoquery --installed</code>
 
 
<pre class="board-terminal">
 
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:~#
 
</pre>
 
 
=== DNF activity history ===
 
 
User can see the activity on packages with <code>dnf history</code>
 
 
<pre class="board-terminal">
 
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:~#
 
</pre>
 
  
 
== References ==
 
== References ==
 
* https://en.wikipedia.org/wiki/DNF_(software)
 
* https://en.wikipedia.org/wiki/DNF_(software)
* https://dnf.readthedocs.io/en/latest/index.html
 
 
* https://linux.die.net/man/5/yum.conf
 
* https://linux.die.net/man/5/yum.conf
* http://yocto.dave.eu/
 

Revision as of 07:47, 5 October 2021

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.1 Oct 2021 DESK-MX6UL-L 1.0.1

Introduction[edit | edit source]

Since some Yocto releases, 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

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

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 directly on serial console with the following commands:

root@desk-mx6ul-axelulite:~# ifconfig eth0 192.168.0.94
root@desk-mx6ul-axelulite:~# route add default gw 192.168.0.254
root@desk-mx6ul-axelulite:~# echo "nameserver 8.8.8.8" > /etc/resolv.conf

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

root@desk-mx6ul-axelulite:~# dnf install fb-test


References[edit | edit source]