Changes

Jump to: navigation, search

MISC-TN-014: Yocto and Debian packetization

150 bytes added, 08:26, 26 May 2021
History
{{AppliesToAxelEsatta}}
{{AppliesToAxelLite}}
{{AppliesToAXEL Lite TN}}
{{AppliesToSMARX TN}}
{{Applies To Yocto}}
[[Category:MISC-AN-TN]]
|August 2020
|First public release
|-
|1.0.1
|May 2021
|Add note about running <code>apt-get update</code> prior to installation
|}
In recent years, the [https://www.yoctoproject.org/ Yocto build system] has gained popularity in the embedded world. Many silicon vendors such as NXP e Xilinx base their Board Support Packages (BSP) on this tool. Despite the fact that Yocto is very powerful and rich, it may be fairly tricky to use, however, especially during the development stage when developers generally need a lot of flexibility. In particular, the unavailability of an archive of prebuilt common packages—as opposed to most of server/desktop Linux distributions—can be really annoying. As described [[Working_with_the_Yocto_build_system|here]], Yocto is basically devised to build an entire distribution from scratch indeed.
To mitigate this drawback, the technique described in [[https://wiki.dave.eu/index.php/XELK-AN-003:_Package_Management_with_Yocto|this article]] can be used. In essence, one can build all the packages supported by Yocto (<code>bitbake -k world</code>) and make them available through a <code>smart</code> channel on a local server. Developers working on the target can easily install required packages without having to build them.
Interestingly, in recent BSP's, NXP indicates a little different approach, which goes even further as it is also open to interfacing to the Debian world. The following excerpt is taken from ''NXP i.MX Yocto Project User's Guide, Document Number: IMXLXYOCTOUG, Rev. L5.4.24_2.1.0, 06/2020'':
''Package Management''
''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 <code>PACKAGE_CLASSES</code> set to <code>package_rpm</code> to the <code>local.conf</code> (or creating a custom distro without the Debian package feed <code>PACKAGE_CLASSES = "package_rpm"</code>). With the addition of the Debian package feed, a <code>sources.list</code> can be added <code>/etc/apt</code> 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.''
In principle, the adoption of the Debian package management should allow to use prebuilt package archives available for [http://ftp.debian.org/debian/README.html 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 Technical Note (TN) describes a way to apply the approach illustrated [https://wiki.dave.eu/index.php/[XELK-AN-003:_Package_Management_with_Yocto Package Management with Yocto|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 <code>apt-get</code> utility.
==Testbed==
The following example shows the installation of the <code>git</code> package, which is retrieved from our own archive, after running <code>apt-get update</code> to update the local archivepackage lists:
<pre class="board-terminal">
root@imx8mpevk:~# apt-get install git
4,650
edits

Navigation menu