{"id":7228,"date":"2024-09-23T09:43:11","date_gmt":"2024-09-23T14:43:11","guid":{"rendered":"https:\/\/www.logikalsolutions.com\/wordpress\/?p=7228"},"modified":"2024-09-23T09:43:12","modified_gmt":"2024-09-23T14:43:12","slug":"multi-arch","status":"publish","type":"post","link":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/multi-arch\/","title":{"rendered":"That Debian Multi-Arch Packaging Thing"},"content":{"rendered":"\n<p>Of my roughly 40 year career in IT, the past decade has been spent in the world of embedded systems cross compiling via Multi-Arch packages. Some systems require building inside of Docker containers which is not that good but allows more of the never-went-to-college crowd into embedded systems as low wage workers.<\/p>\n\n\n\n<p>I&#8217;ve done a lot of Debian (and some RPM) packaging over the years. There was a time when all of the SOM\/SOC vendors created development universes around Ubuntu but now the world is <a href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/ubuntu\/\">abandoning Ubuntu for Debian<\/a>. I hear some are even moving to Manjaro. The dual viruses of &#8220;unattended upgrades&#8221; and &#8220;upgrade to Ubuntu Pro&#8221; nag-o-grams have become intolerable. I&#8217;ve not worked with them yet, but I hear <a href=\"https:\/\/embeddedcomputing.com\/technology\/software-and-os\/deep-dive-a-complete-automated-yocto-linux-build-setup-for-raspberrypi\">some vendors are even moving to Manjaro<\/a>. The <a href=\"https:\/\/www.yoctoproject.org\">Yocto Project<\/a> likes Debian.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A Tale of Two Frustrations<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Docker<\/h3>\n\n\n\n<p>Some view it as Utopia, even lightly seasoned pros don&#8217;t. You install some Docker-centric build tools from your hardware vendor, then you pull down\/create a Docker container in emulation mode with a stripped down Buster (or other). After that you spend a few days finding out few, if any, of the packages you wish to use are available for install for your target. This causes you to create scripts to retrieve and build source inside the container, and you have to build the dependencies in the proper order. Newbies usually hose this at least twice. Then they learn: <\/p>\n\n\n\n<p class=\"has-text-align-center\"><em>One new dependency build == one new base container uploaded to hub that gets used for next attempt.<\/em><\/p>\n\n\n\n<p>Once you successfully generate a containerized app, you have to actually get it to the target. Oh yeah, the target probably needs something other than the default OS.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Yocto<\/h3>\n\n\n\n<p>Yocto is not for the faint of heart. You need a lot of cores and fast spinning disks. SSD only <em>seems<\/em> fast. They tend to have a not-small write cache. Once you pop past the end of that cache and have to wait for writes to complete they get very slow. I tend to stuff WD Black or higher end Barracuda spinning disks in my build machines for the actual build. You will be creating somewhere between 30K and 50K temporary object files when building a complete Linux for your target.<\/p>\n\n\n\n<p>On an i7-gen4 loaded with all the RAM you can force onto the board and using the fastest disks you can find, a full Yocto build can take upwards of 27 hours. <strong>Get it right the first time!<\/strong><\/p>\n\n\n\n<p>While I did recently drop almost $2K building an i9-gen13 machine for Yocto and other development purposes.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"690\" height=\"209\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/i9-info-001.png\" alt=\"\" class=\"wp-image-7230\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/i9-info-001.png 690w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/i9-info-001-300x91.png 300w\" sizes=\"(max-width: 690px) 100vw, 690px\" \/><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"274\" height=\"127\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/i9-info-002.png\" alt=\"\" class=\"wp-image-7231\"\/><\/figure>\n<\/div>\n\n\n<p>As long as you don&#8217;t have your computer in your bedroom or where you watch TV, I can highly recommend one of these.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"424\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/z820-for-post-002-1024x424.png\" alt=\"\" class=\"wp-image-7232\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/z820-for-post-002-1024x424.png 1024w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/z820-for-post-002-300x124.png 300w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/z820-for-post-002-768x318.png 768w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/z820-for-post-002-1200x497.png 1200w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/z820-for-post-002.png 1446w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Stick your own fast spinning disks in it and even with a sucky 25Mpbs line-of-sight Internet connection your builds will get done in well under 4 hours. (Yocto builds have to do a lot of version checking and source retrieval.) Actually, that time frame is running inside a VM under Windows 10. I haven&#8217;t done a full Yocto build now that I wiped it and put Manjaro on. Theoretically, using then entire machine it could get done in about an hour.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Summary of Frustrations<\/h3>\n\n\n\n<p>No matter what, someone has to do a Yocto (or other) OS build for your target. You won&#8217;t pay attention to it when you are blindly installing what your hardware vendor told you to install, but both of these methods require Multi-Arch support. You sure as Hell don&#8217;t want to build an OS <em>on the target<\/em>. Even the <a href=\"https:\/\/www.raspberrypi.com\">Raspberry Pi<\/a> crowd is starting to learn about cross compiling these days. It may have enough hardware to run one or a few applications, but as a full desktop for development <em>it sucks!<\/em><\/p>\n\n\n\n<p>For the OS build you need a lot of cores and a lot of RAM and very fast spinning disks. <a href=\"https:\/\/www.enterprisestorageforum.com\/hardware\/ssd-lifespan-how-long-will-your-ssd-work\/\">SSDs have a short lifespan<\/a> when placed under this kind of load.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Artifact<\/h2>\n\n\n\n<p>What sent me down a rabbit hole is an artifact.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"336\" height=\"109\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-tree-001.png\" alt=\"debian \/usr\/lib tree\" class=\"wp-image-7208\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-tree-001.png 336w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-tree-001-300x97.png 300w\" sizes=\"(max-width: 336px) 100vw, 336px\" \/><\/figure>\n<\/div>\n\n\n<p>Yeah. Spent a day or so around various interruptions changing my Debian packaging script so it would park library files under \/usr\/lib\/x86_64-linux-gnu. Then I poked around and noticed \/usr\/include had no corresponding directory. A question posted on the Debian forum didn&#8217;t shed any light either.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Experiment<\/h2>\n\n\n\n<p>I cloned my Debian 12 VM. Once I booted, opened a terminal and did the following:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Deja-Vu-Mono.ttf\" style=\"font-size:.875rem;font-family:Code-Pro-Deja-Vu-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#b392f0;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1f1f1f\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"sudo dpkg --print-foreign-architectures\nsudo dpkg --add-architecture arm64\nsudo dpkg --print-foreign-architectures\n\nsudo apt-get update\nsudo apt-get install build-essential crossbuild-essential-arm64\nsudo apt-get install gcc g++ cmake make ninja-build codeblocks\nsudo apt-get upgrade\nsudo apt-get autoremove\n\nsudo apt-get install libx11-dev libx11-dev:arm64 libx11-xcb-dev libx11-xcb-dev:arm64\n\" style=\"color:#b392f0;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki min-dark\" style=\"background-color: #1f1f1f\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">sudo <\/span><span style=\"color: #9DB1C5\">dpkg<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #9DB1C5\">--print-foreign-architectures<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">sudo <\/span><span style=\"color: #9DB1C5\">dpkg<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #9DB1C5\">--add-architecture<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #9DB1C5\">arm64<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">sudo <\/span><span style=\"color: #9DB1C5\">dpkg<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #9DB1C5\">--print-foreign-architectures<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">sudo <\/span><span style=\"color: #9DB1C5\">apt-get<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #9DB1C5\">update<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">sudo <\/span><span style=\"color: #9DB1C5\">apt-get<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #9DB1C5\">install<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #9DB1C5\">build-essential<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #9DB1C5\">crossbuild-essential-arm64<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">sudo <\/span><span style=\"color: #9DB1C5\">apt-get<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #9DB1C5\">install<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #9DB1C5\">gcc<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #9DB1C5\">g++<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #9DB1C5\">cmake<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #9DB1C5\">make<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #9DB1C5\">ninja-build<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #9DB1C5\">codeblocks<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">sudo <\/span><span style=\"color: #9DB1C5\">apt-get<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #9DB1C5\">upgrade<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">sudo <\/span><span style=\"color: #9DB1C5\">apt-get<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #9DB1C5\">autoremove<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">sudo <\/span><span style=\"color: #9DB1C5\">apt-get<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #9DB1C5\">install<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #9DB1C5\">libx11-dev<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #9DB1C5\">libx11-dev:arm64<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #9DB1C5\">libx11-xcb-dev<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #9DB1C5\">libx11-xcb-dev:arm64<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<figure class=\"wp-block-pullquote\"><blockquote><p>May you live in interesting times.<\/p><cite>Ancient chinese curse<\/cite><\/blockquote><\/figure>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"630\" height=\"99\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-lib-dir-007.png\" alt=\"foreign architecture\" class=\"wp-image-7227\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-lib-dir-007.png 630w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-lib-dir-007-300x47.png 300w\" sizes=\"(max-width: 630px) 100vw, 630px\" \/><\/figure>\n<\/div>\n\n\n<p>So, we have the new architecture enabled. Notice the new directory though.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"785\" height=\"84\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-lib-dir-002.png\" alt=\"after arm64\" class=\"wp-image-7222\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-lib-dir-002.png 785w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-lib-dir-002-300x32.png 300w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-lib-dir-002-768x82.png 768w\" sizes=\"(max-width: 785px) 100vw, 785px\" \/><\/figure>\n<\/div>\n\n\n<p>Consistency is too much to ask for in the world of Linux. The package architecture is arm64 but the hardware architecture is aarch64. Thank you very much.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"512\" height=\"73\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-lib-dir-003.png\" alt=\"aarch64-linux_gnu\" class=\"wp-image-7223\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-lib-dir-003.png 512w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-lib-dir-003-300x43.png 300w\" sizes=\"(max-width: 512px) 100vw, 512px\" \/><\/figure>\n<\/div>\n\n\n<p>Basically, for Multi-Arch support they now create an architecture-linux-gnu directory under usr so the emulator environments can chroot (or whatever) to this.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"132\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-lib-dir-004-1024x132.png\" alt=\"\" class=\"wp-image-7224\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-lib-dir-004-1024x132.png 1024w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-lib-dir-004-300x39.png 300w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-lib-dir-004-768x99.png 768w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-lib-dir-004-1536x198.png 1536w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-lib-dir-004-1200x154.png 1200w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-lib-dir-004.png 1873w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Yep, that&#8217;s where the header files are.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Summing It All Up<\/h2>\n\n\n\n<p>No matter what architecture you are building your Debian package for, you package into the standard \/usr\/lib, \/usr\/include, etc. directories. The control file is where the magic happens. You need both an Architecture entry<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"610\" height=\"164\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-lib-dir-005.png\" alt=\"target architecture\" class=\"wp-image-7225\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-lib-dir-005.png 610w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-lib-dir-005-300x81.png 300w\" sizes=\"(max-width: 610px) 100vw, 610px\" \/><\/figure>\n<\/div>\n\n\n<p>and a Muti-Arch entry. Usually this entry must be set to &#8220;same&#8221; for binary packages.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"599\" height=\"496\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-lib-dir-006.png\" alt=\"\" class=\"wp-image-7226\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-lib-dir-006.png 599w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-lib-dir-006-300x248.png 300w\" sizes=\"(max-width: 599px) 100vw, 599px\" \/><\/figure>\n<\/div>\n\n\n<p>You also have to adhere to <a href=\"https:\/\/kerneltalks.com\/tools\/understanding-package-naming-convention-rpm-deb\/\">package naming conventions<\/a>.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Deja-Vu-Mono.ttf\" style=\"font-size:.875rem;font-family:Code-Pro-Deja-Vu-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#b392f0;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1f1f1f\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"packagename_version-release_architecture.deb\" style=\"color:#b392f0;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki min-dark\" style=\"background-color: #1f1f1f\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">packagename_version-release_architecture.deb<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>The &#8220;architecture&#8221; portion of that name has to be the dpkg architecture tag, not the directory architecture tag.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Deja-Vu-Mono.ttf\" style=\"font-size:.875rem;font-family:Code-Pro-Deja-Vu-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#b392f0;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1f1f1f\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"sudo dpkg-architecture -L\" style=\"color:#b392f0;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki min-dark\" style=\"background-color: #1f1f1f\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">sudo <\/span><span style=\"color: #9DB1C5\">dpkg-architecture<\/span><span style=\"color: #B392F0\"> <\/span><span style=\"color: #9DB1C5\">-L<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Use the above command to get the full list of what dpkg supports on your distro. It&#8217;s a long list. You probably want to pipe it into grep if you have some idea what might be in your architecture name\/tag.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Of my roughly 40 year career in IT, the past decade has been spent in the world of embedded systems cross compiling via Multi-Arch packages. Some systems require building inside of Docker containers which is not that good but allows more of the never-went-to-college crowd into embedded systems as low wage workers. I&#8217;ve done a lot of Debian (and some RPM) packaging over the years. There was a time when all of the SOM\/SOC vendors &hellip; <a title=\"That Debian Multi-Arch Packaging Thing\" class=\"bnm-read-more\" href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/multi-arch\/\"><span class=\"screen-reader-text\">That Debian Multi-Arch Packaging Thing<\/span>Read more<\/a><\/p>\n","protected":false},"author":2,"featured_media":7229,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[990,1199,53,2280,18],"class_list":["post-7228","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-information-technology","tag-debian","tag-embedded-systems","tag-linux","tag-multi-arch","tag-ubuntu","bnm-entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>That Debian Multi-Arch Packaging Thing &#8211; Logikal Blog<\/title>\n<meta name=\"description\" content=\"Of my roughly 40 year career in IT, the past decade has been spent in the world of embedded systems cross compiling via Multi-Arch packages.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/multi-arch\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"That Debian Multi-Arch Packaging Thing &#8211; Logikal Blog\" \/>\n<meta property=\"og:description\" content=\"Of my roughly 40 year career in IT, the past decade has been spent in the world of embedded systems cross compiling via Multi-Arch packages.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/multi-arch\/\" \/>\n<meta property=\"og:site_name\" content=\"Logikal Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-09-23T14:43:11+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-23T14:43:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-logo.png\" \/>\n\t<meta property=\"og:image:width\" content=\"400\" \/>\n\t<meta property=\"og:image:height\" content=\"200\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"seasoned_geek\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"seasoned_geek\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/multi-arch\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/multi-arch\\\/\"},\"author\":{\"name\":\"seasoned_geek\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"headline\":\"That Debian Multi-Arch Packaging Thing\",\"datePublished\":\"2024-09-23T14:43:11+00:00\",\"dateModified\":\"2024-09-23T14:43:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/multi-arch\\\/\"},\"wordCount\":952,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"image\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/multi-arch\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/debian-logo.png\",\"keywords\":[\"Debian\",\"embedded systems\",\"Linux\",\"Multi-Arch\",\"Ubuntu\"],\"articleSection\":[\"Information Technology\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/multi-arch\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/multi-arch\\\/\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/multi-arch\\\/\",\"name\":\"That Debian Multi-Arch Packaging Thing &#8211; Logikal Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/multi-arch\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/multi-arch\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/debian-logo.png\",\"datePublished\":\"2024-09-23T14:43:11+00:00\",\"dateModified\":\"2024-09-23T14:43:12+00:00\",\"description\":\"Of my roughly 40 year career in IT, the past decade has been spent in the world of embedded systems cross compiling via Multi-Arch packages.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/multi-arch\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/multi-arch\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/multi-arch\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/debian-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/debian-logo.png\",\"width\":400,\"height\":200,\"caption\":\"Debian logo\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/multi-arch\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"That Debian Multi-Arch Packaging Thing\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/\",\"name\":\"Logikal Blog\",\"description\":\"For people with attention spans longer than a Tweet\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\",\"name\":\"seasoned_geek\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"caption\":\"seasoned_geek\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\"},\"description\":\"Roland Hughes started his IT career in the early 1980s. He quickly became a consultant and president of Logikal Solutions, a software consulting firm specializing in OpenVMS application and C++\\\/Qt touchscreen\\\/embedded Linux development. Early in his career he became involved in what is now called cross platform development. Given the dearth of useful books on the subject he ventured into the world of professional author in 1995 writing the first of the \\\"Zinc It!\\\" book series for John Gordon Burke Publisher, Inc. A decade later he released a massive (nearly 800 pages) tome \\\"The Minimum You Need to Know to Be an OpenVMS Application Developer\\\" which tried to encapsulate the essential skills gained over what was nearly a 20 year career at that point. From there \\\"The Minimum You Need to Know\\\" book series was born. Three years later he wrote his first novel \\\"Infinite Exposure\\\" which got much notice from people involved in the banking and financial security worlds. Some of the attacks predicted in that book have since come to pass. While it was not originally intended to be a trilogy, it became the first book of \\\"The Earth That Was\\\" trilogy: Infinite Exposure Lesedi - The Greatest Lie Ever Told John Smith - Last Known Survivor of the Microsoft Wars When he is not consulting Roland Hughes posts about technology and sometimes politics on his blog. He also has regularly scheduled Sunday posts appearing on the Interesting Authors blog.\",\"sameAs\":[\"https:\\\/\\\/theminimumyouneedtoknow.com\"],\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/author\\\/seasoned_geek\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"That Debian Multi-Arch Packaging Thing &#8211; Logikal Blog","description":"Of my roughly 40 year career in IT, the past decade has been spent in the world of embedded systems cross compiling via Multi-Arch packages.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/multi-arch\/","og_locale":"en_US","og_type":"article","og_title":"That Debian Multi-Arch Packaging Thing &#8211; Logikal Blog","og_description":"Of my roughly 40 year career in IT, the past decade has been spent in the world of embedded systems cross compiling via Multi-Arch packages.","og_url":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/multi-arch\/","og_site_name":"Logikal Blog","article_published_time":"2024-09-23T14:43:11+00:00","article_modified_time":"2024-09-23T14:43:12+00:00","og_image":[{"width":400,"height":200,"url":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-logo.png","type":"image\/png"}],"author":"seasoned_geek","twitter_card":"summary_large_image","twitter_misc":{"Written by":"seasoned_geek","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/multi-arch\/#article","isPartOf":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/multi-arch\/"},"author":{"name":"seasoned_geek","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"headline":"That Debian Multi-Arch Packaging Thing","datePublished":"2024-09-23T14:43:11+00:00","dateModified":"2024-09-23T14:43:12+00:00","mainEntityOfPage":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/multi-arch\/"},"wordCount":952,"commentCount":0,"publisher":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"image":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/multi-arch\/#primaryimage"},"thumbnailUrl":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-logo.png","keywords":["Debian","embedded systems","Linux","Multi-Arch","Ubuntu"],"articleSection":["Information Technology"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/multi-arch\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/multi-arch\/","url":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/multi-arch\/","name":"That Debian Multi-Arch Packaging Thing &#8211; Logikal Blog","isPartOf":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/multi-arch\/#primaryimage"},"image":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/multi-arch\/#primaryimage"},"thumbnailUrl":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-logo.png","datePublished":"2024-09-23T14:43:11+00:00","dateModified":"2024-09-23T14:43:12+00:00","description":"Of my roughly 40 year career in IT, the past decade has been spent in the world of embedded systems cross compiling via Multi-Arch packages.","breadcrumb":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/multi-arch\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/multi-arch\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/multi-arch\/#primaryimage","url":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-logo.png","contentUrl":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2024\/09\/debian-logo.png","width":400,"height":200,"caption":"Debian logo"},{"@type":"BreadcrumbList","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/multi-arch\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.logikalsolutions.com\/wordpress\/"},{"@type":"ListItem","position":2,"name":"That Debian Multi-Arch Packaging Thing"}]},{"@type":"WebSite","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#website","url":"https:\/\/www.logikalsolutions.com\/wordpress\/","name":"Logikal Blog","description":"For people with attention spans longer than a Tweet","publisher":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.logikalsolutions.com\/wordpress\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842","name":"seasoned_geek","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","url":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","caption":"seasoned_geek"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r"},"description":"Roland Hughes started his IT career in the early 1980s. He quickly became a consultant and president of Logikal Solutions, a software consulting firm specializing in OpenVMS application and C++\/Qt touchscreen\/embedded Linux development. Early in his career he became involved in what is now called cross platform development. Given the dearth of useful books on the subject he ventured into the world of professional author in 1995 writing the first of the \"Zinc It!\" book series for John Gordon Burke Publisher, Inc. A decade later he released a massive (nearly 800 pages) tome \"The Minimum You Need to Know to Be an OpenVMS Application Developer\" which tried to encapsulate the essential skills gained over what was nearly a 20 year career at that point. From there \"The Minimum You Need to Know\" book series was born. Three years later he wrote his first novel \"Infinite Exposure\" which got much notice from people involved in the banking and financial security worlds. Some of the attacks predicted in that book have since come to pass. While it was not originally intended to be a trilogy, it became the first book of \"The Earth That Was\" trilogy: Infinite Exposure Lesedi - The Greatest Lie Ever Told John Smith - Last Known Survivor of the Microsoft Wars When he is not consulting Roland Hughes posts about technology and sometimes politics on his blog. He also has regularly scheduled Sunday posts appearing on the Interesting Authors blog.","sameAs":["https:\/\/theminimumyouneedtoknow.com"],"url":"https:\/\/www.logikalsolutions.com\/wordpress\/author\/seasoned_geek\/"}]}},"_links":{"self":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts\/7228","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/comments?post=7228"}],"version-history":[{"count":0,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts\/7228\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/media\/7229"}],"wp:attachment":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/media?parent=7228"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/categories?post=7228"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/tags?post=7228"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}