Difference between revisions of "DESK-MX8M-AN-0001: Package Management with apt-get"

From DAVE Developer's Wiki
Jump to: navigation, search
(Created page with "{{InfoBoxTop}} {{AppliesTo ORCA AN}} {{AppliesTo MITO 8M Mini AN}} {{InfoBoxBottom}} {{ImportantMessage|text=This application note has been validated using the '''kit version...")
 
Line 38: Line 38:
 
===Configuring <code>apt</code>===
 
===Configuring <code>apt</code>===
 
Edit the file <code>/etc/apt/apt.conf</code> like this:
 
Edit the file <code>/etc/apt/apt.conf</code> like this:
<pre class="board-terminal">
+
<pre>
 
APT::Architecture "arm64";
 
APT::Architecture "arm64";
 
APT::Get::AllowUnauthenticated "true";
 
APT::Get::AllowUnauthenticated "true";
Line 52: Line 52:
 
</pre>
 
</pre>
  
Execute the following commands:
+
Execute the following commands in order to re-create the ''apt'' cache based on the new server's list:
 +
 
 +
<pre>
 +
rm -rf /var/lib/apt/lists/*
 +
apt-get clean
 +
apt-get update
 +
</pre>
 +
 
 
<pre class="board-terminal">
 
<pre class="board-terminal">
 
root@desk-mx8mp:~# rm -rf /var/lib/apt/lists/*
 
root@desk-mx8mp:~# rm -rf /var/lib/apt/lists/*
Line 72: Line 79:
 
Fetched 3280 kB in 6s (545 kB/s)
 
Fetched 3280 kB in 6s (545 kB/s)
 
Reading package lists... Done
 
Reading package lists... Done
root@orca:~# sed -i 's/\.\//aarch64\//g' /var/lib/apt/lists/yocto.dave.eu_imx-5.4.70-2.3.0_aarch64_Packages
+
</pre>
root@orca:~# sed -i 's/\.\//all\//g' /var/lib/apt/lists/yocto.dave.eu_imx-5.4.70-2.3.0_all_Packages
+
 
root@orca:~# sed -i 's/\.\//aarch64-mx8mp\//g' /var/lib/apt/lists/yocto.dave.eu_imx-5.4.70-2.3.0_aarch64-mx8mp_Packages
+
Then, modify the cached package list due to the proper DAVE's server configuration:
 +
 
 +
<pre>
 +
sed -i 's/\.\//aarch64\//g' /var/lib/apt/lists/yocto.dave.eu_imx-5.4.70-2.3.0_aarch64_Packages
 +
sed -i 's/\.\//all\//g' /var/lib/apt/lists/yocto.dave.eu_imx-5.4.70-2.3.0_all_Packages
 +
sed -i 's/\.\//aarch64-mx8mp\//g' /var/lib/apt/lists/yocto.dave.eu_imx-5.4.70-2.3.0_aarch64-mx8mp_Packages
 
</pre>
 
</pre>
  
Line 151: Line 163:
  
 
<pre class="board-terminal">
 
<pre class="board-terminal">
 +
root@desk-mx8mp:~# apt-cache search vim
 +
vim-dbg - Vi IMproved - enhanced vi editor - Debugging files
 +
vim - Vi IMproved - enhanced vi editor
 +
vim-common - Vi IMproved - enhanced vi editor
 +
vim-src - Vi IMproved - enhanced vi editor - Source files
 +
vim-tutor - Vi IMproved - enhanced vi editor
 +
vim-vimrc - Vi IMproved - enhanced vi editor
 +
vim-syntax - Vi IMproved - enhanced vi editor
 +
vim-tools - Vi IMproved - enhanced vi editor
 +
vim-help - Vi IMproved - enhanced vi editor
 +
vim-dev - Vi IMproved - enhanced vi editor - Development files
 +
vim-doc - Vi IMproved - enhanced vi editor - Documentation files
 +
root@desk-mx8mp:~#
 
</pre>
 
</pre>
  
 
=== List of installed packages ===
 
=== List of installed packages ===
  
User can see the list of installed packages with <code>apt list --installed</code>
+
User can see the list of installed packages with <code>dpkg --get-selections | sed 's:install$::'</code> (sed removes the ''install'' string from the output list)
  
<pre class="board-terminal">
+
<pre>
 +
acl
 +
acl-dev
 +
adwaita-icon-theme-symbolic
 +
alsa-conf
 +
alsa-state
 +
alsa-states
 +
alsa-tools
 +
alsa-utils
 +
alsa-utils-aconnect
 +
alsa-utils-alsactl
 +
alsa-utils-alsaloop
 +
alsa-utils-alsamixer
 +
alsa-utils-alsatplg
 +
...
 +
[snip]
 +
...
 +
volatile-binds-dev
 +
wayland
 +
wayland-dev
 +
which
 +
which-dev
 +
wireless-regdb-static
 +
wireless-tools
 +
wpa-supplicant
 +
wpa-supplicant-cli
 +
wpa-supplicant-passphrase
 +
xinetd
 +
xz
 +
xz-dev
 +
root@desk-mx8mm:~#
 
</pre>
 
</pre>

Revision as of 08:24, 3 May 2022

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 Apr 2022 DESK-MX8M-L 2.0.0-rc2

Introduction[edit | edit source]

Since NXP BSP 5.4.24 Yocto release, apt-get has been added as a package manager for installing packages in the DUT (target machine).

As reported by NXP official documentation:

The default package management with Yocto Project is rpm. The i.MX distro now enables debian as the package management. This can be easily turned off by add PACKAGE_CLASSES set to package_rpm to the local.conf (or creating a custom distro without the debian package feed PACKAGE_CLASSES = "package_rpm".
With the addition of the debian package feed, a sources.list can be added /etc/apt that links in Debian's package feed. This allows users to install packages not provided in the image without having to add them to a yocto image. Because this package feed is not generated by the i.MX Yocto build process, there is no guarantee each package will work with the right dependencies but it allows simpler tools to be provided. Software that is complex and has more dependencies on specific versions might have issues with an external package feed.

apt-get performs runtime package management of .deb packages. In order to use apt-get 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.

In principle, the adoption of the Debian package management should allow to use prebuilt package archives available for Debian distributions. However, close attention should be paid when mixing packages of different distributions. For instance, Debian packages installed on a Yocto file system could not work. Even worse, they could interfere with existing packages and make these unusable.

This Application Note (AN) describes a way to apply the approach illustrated here to a Yocto distribution that makes use of Debian packetization. In other words, a local archive of Yocto-generated, prebuilt .deb packages is used in combination with the well known apt-get utility.

apt-get[edit | edit source]

The following instructions detail how to use apt-get for installing packages with Yocto repositories created by DAVE's build system for DESK-MX8M-L.

Configuring apt[edit | edit source]

Edit the file /etc/apt/apt.conf like this:

APT::Architecture "arm64";
APT::Get::AllowUnauthenticated "true";
Acquire::Languages "none";

Edit the file /etc/apt/sources.list.d/debian-10.list like this:

root@desk-mx8mp:~# cat /etc/apt/sources.list.d/debian-10.list
deb [trusted=yes] http://yocto.dave.eu/imx-5.4.70-2.3.0/ all/
deb [trusted=yes] http://yocto.dave.eu/imx-5.4.70-2.3.0/ aarch64/
deb [trusted=yes] http://yocto.dave.eu/imx-5.4.70-2.3.0/ aarch64-mx8mp/

Execute the following commands in order to re-create the apt cache based on the new server's list:

rm -rf /var/lib/apt/lists/*
apt-get clean
apt-get update
root@desk-mx8mp:~# rm -rf /var/lib/apt/lists/*
root@desk-mx8mp:~# apt-get clean
root@orca:~# apt-get update
0% [Working]
Ign:1 http://yocto.dave.eu/imx-5.4.70-2.3.0 all/ InRelease
Ign:2 http://yocto.dave.eu/imx-5.4.70-2.3.0 aarch64/ InRelease
Ign:3 http://yocto.dave.eu/imx-5.4.70-2.3.0 aarch64-mx8mp/ InRelease
Get:4 http://yocto.dave.eu/imx-5.4.70-2.3.0 all/ Release [1213 B]
Get:5 http://yocto.dave.eu/imx-5.4.70-2.3.0 aarch64/ Release [1217 B]
Get:6 http://yocto.dave.eu/imx-5.4.70-2.3.0 aarch64-mx8mp/ Release [1223 B]
Ign:7 http://yocto.dave.eu/imx-5.4.70-2.3.0 all/ Release.gpg
Ign:8 http://yocto.dave.eu/imx-5.4.70-2.3.0 aarch64/ Release.gpg
Ign:9 http://yocto.dave.eu/imx-5.4.70-2.3.0 aarch64-mx8mp/ Release.gpg
Get:10 http://yocto.dave.eu/imx-5.4.70-2.3.0 all/ Packages [146 kB]
Get:11 http://yocto.dave.eu/imx-5.4.70-2.3.0 aarch64/ Packages [2848 kB]
Get:12 http://yocto.dave.eu/imx-5.4.70-2.3.0 aarch64-mx8mp/ Packages [283 kB]
Fetched 3280 kB in 6s (545 kB/s)
Reading package lists... Done

Then, modify the cached package list due to the proper DAVE's server configuration:

sed -i 's/\.\//aarch64\//g' /var/lib/apt/lists/yocto.dave.eu_imx-5.4.70-2.3.0_aarch64_Packages
sed -i 's/\.\//all\//g' /var/lib/apt/lists/yocto.dave.eu_imx-5.4.70-2.3.0_all_Packages
sed -i 's/\.\//aarch64-mx8mp\//g' /var/lib/apt/lists/yocto.dave.eu_imx-5.4.70-2.3.0_aarch64-mx8mp_Packages

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.

The target is finally ready to install new packages. The following example shows for instance the installation of vim:

root@orca:~# apt-get install vim
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  vim-common vim-help vim-syntax vim-tutor vim-vimrc
The following NEW packages will be installed:
  vim vim-common vim-help vim-syntax vim-tutor vim-vimrc
0 upgraded, 6 newly installed, 0 to remove and 20 not upgraded.
Need to get 6584 kB of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://yocto.dave.eu/imx-5.4.70-2.3.0 aarch64/ vim 8.1.1518-r0 [1051 kB]
Get:2 http://yocto.dave.eu/imx-5.4.70-2.3.0 aarch64/ vim-common 8.1.1518-r0 [2314 kB]
Get:3 http://yocto.dave.eu/imx-5.4.70-2.3.0 aarch64/ vim-help 8.1.1518-r0 [1757 kB]
Get:4 http://yocto.dave.eu/imx-5.4.70-2.3.0 aarch64/ vim-syntax 8.1.1518-r0 [1049 kB]
Get:5 http://yocto.dave.eu/imx-5.4.70-2.3.0 aarch64/ vim-tutor 8.1.1518-r0 [411 kB]
Get:6 http://yocto.dave.eu/imx-5.4.70-2.3.0 aarch64/ vim-vimrc 8.1.1518-r0 [1596 B]
Fetched 6584 kB in 9s (660 kB/s)
Selecting previously unselected package vim.
(Reading database ... 71726 files and directories currently installed.)
Preparing to unpack .../vim_8.1.1518-r0_arm64.deb ...
Unpacking vim (8.1.1518-r0) ...
Selecting previously unselected package vim-common.
Preparing to unpack .../vim-common_8.1.1518-r0_arm64.deb ...
Unpacking vim-common (8.1.1518-r0) ...
Selecting previously unselected package vim-help.
Preparing to unpack .../vim-help_8.1.1518-r0_arm64.deb ...
Unpacking vim-help (8.1.1518-r0) ...
Selecting previously unselected package vim-syntax.
Preparing to unpack .../vim-syntax_8.1.1518-r0_arm64.deb ...
Unpacking vim-syntax (8.1.1518-r0) ...
Selecting previously unselected package vim-tutor.
Preparing to unpack .../vim-tutor_8.1.1518-r0_arm64.deb ...
Unpacking vim-tutor (8.1.1518-r0) ...
Selecting previously unselected package vim-vimrc.
Preparing to unpack .../vim-vimrc_8.1.1518-r0_arm64.deb ...
Unpacking vim-vimrc (8.1.1518-r0) ...
Setting up vim (8.1.1518-r0) ...
update-alternatives: Linking /bin/vi to /usr/bin/vim.vim
update-alternatives: Linking /usr/bin/vim to /usr/bin/vim.vim
update-alternatives: Linking /usr/bin/xxd to /usr/bin/xxd.vim
Setting up vim-common (8.1.1518-r0) ...
Setting up vim-help (8.1.1518-r0) ...
Setting up vim-syntax (8.1.1518-r0) ...
Setting up vim-tutor (8.1.1518-r0) ...
Setting up vim-vimrc (8.1.1518-r0) ...

Other useful apt commands[edit | edit source]

List of configured software repositories[edit | edit source]

As shown before, the target is configured for accessing the Yocto repositories as listed in the /etc/apt/sources.list.d apt configuration directory:

root@desk-mx8mp:~# cat /etc/apt/sources.list.d/debian-10.list
deb [trusted=yes] http://yocto.dave.eu/imx-5.4.70-2.3.0/ all/
deb [trusted=yes] http://yocto.dave.eu/imx-5.4.70-2.3.0/ aarch64/
deb [trusted=yes] http://yocto.dave.eu/imx-5.4.70-2.3.0/ aarch64-mx8mp/

Search for packages[edit | edit source]

To search for an available package into the current configured channels use apt-cache search

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

root@desk-mx8mp:~# apt-cache search vim
vim-dbg - Vi IMproved - enhanced vi editor - Debugging files
vim - Vi IMproved - enhanced vi editor
vim-common - Vi IMproved - enhanced vi editor
vim-src - Vi IMproved - enhanced vi editor - Source files
vim-tutor - Vi IMproved - enhanced vi editor
vim-vimrc - Vi IMproved - enhanced vi editor
vim-syntax - Vi IMproved - enhanced vi editor
vim-tools - Vi IMproved - enhanced vi editor
vim-help - Vi IMproved - enhanced vi editor
vim-dev - Vi IMproved - enhanced vi editor - Development files
vim-doc - Vi IMproved - enhanced vi editor - Documentation files
root@desk-mx8mp:~#

List of installed packages[edit | edit source]

User can see the list of installed packages with dpkg --get-selections | sed 's:install$::' (sed removes the install string from the output list)

acl
acl-dev
adwaita-icon-theme-symbolic
alsa-conf
alsa-state
alsa-states
alsa-tools
alsa-utils
alsa-utils-aconnect
alsa-utils-alsactl
alsa-utils-alsaloop
alsa-utils-alsamixer
alsa-utils-alsatplg
...
[snip]
...
volatile-binds-dev
wayland
wayland-dev
which
which-dev
wireless-regdb-static
wireless-tools
wpa-supplicant
wpa-supplicant-cli
wpa-supplicant-passphrase
xinetd
xz
xz-dev
root@desk-mx8mm:~#