Changes

Jump to: navigation, search

MISC-TN-014: Yocto and Debian packetization

3,272 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'':
Interestingly, in its 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
''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 rightdependencies 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 [[XELK-AN-003: 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 testbed used to verify this procedure consists of an NXP i.MX8M Plus EVK (*) combined with the Linux BSP tagged as ''L5.4.24_2.1.0''.  (*) At the time of this writing, the i.MX8M Plus SoC is not released yet. DAVE Embedded Systems, however, has access to the EVK because our company is part of the related Beta program. ==Configuring and testing==First of all, all the packages were built with Yocto. Then, they were copied to a server supporting the HTTPS protocol. The resulting archive is available here: https://yocto.dave.eu/imx-5.4/. On the target, the file <code>/etc/apt/sources.list.d/imx-5.4.list</code> was created in order to point to this archive:<pre class="board-terminal">root@imx8mpevk:/etc/apt/sources.list.d# cat imx-5.4.list deb https://yocto.dave.eu/imx-5.4/aarch64-mx8mp ./deb https://yocto.dave.eu/imx-5.4/aarch64 ./deb https://yocto.dave.eu/imx-5.4/all ./deb https://yocto.dave.eu/imx-5.4/imx8mpevk ./</pre> Please note that two <code>.list</code> files were automatically generated by Yocto: <code>/etc/apt/sources.list.d/debian-10.list</code> and <code>/etc/apt/sources.list</code>. They were renamed to <code>debian-10.list.ignore</code> and <code>sources.list.ignore</code> respectively. 
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 package lists:<pre class==TBD=="board-terminal">root@imx8mpevk:~# apt-get install gitReading package lists... DoneBuilding dependency tree Reading state information... DoneThe following NEW packages will be installed: git0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.Need to get 0 B/3043 kB of archives.After this operation, 0 B of additional disk space will be used.WARNING: The following packages cannot be authenticated! gitInstall these packages without verification? [y/N] ySelecting previously unselected package git.(Reading database ... 99542 files and directories currently installed.)Preparing to unpack .../git_2.23.1-r0_arm64.deb ...Unpacking git (2.23.1-r0) ...Setting up git (2.23.1-r0) ...N: Ignoring file 'debian-10.list.ignore' in directory '/etc/apt/sources.list.d/' as it has an invalid filename extension</pre>
4,650
edits

Navigation menu