Packages - WIP
Overview
There's a ton of software for Linux. Debian has 70k packages, the AUR has 114k packages, Fedora has 76k packages.
Each has different approaches to packaging.
For Debian / Ubuntu, packages are selected each time a new Ubuntu version comes out. When new versions of software come out, Ubuntu users don't use them. Security updates are backported to the older version of software which Ubuntu released. Flatpaks and some applications are updated. This prevents users from updating their system and software having new bugs.
Debian also splits programs into multiple packages. (Python?)
Arch sends the latest version of software. Arch has suffered more supply chain attacks (people adding malware to packages) than Debian. Arch breaks more than Debian.
On the other hand, when someone using arch opens a bug report, it's less likely the bug has been fixed already / is a duplicate.
Why do package dependencies have minimum and maximum versions?
Imagine you have a factory making 3D printers. Metal rods, paint, led screens and a ton of components come in. These are all the dependencies for your 3D printer factory. One day your supplier tells you they no longer make the 10cm x 5cm led screen your printers use. Instead, they have an 11cm x 5cm screen. If you don't change your manufacturing process, it'll break.
Code works like this. A program is coded based on a dependency which gives a jpg and and 2 months later the dependency updates and switches what they return to be a png. Sometimes projects leave in the old way of doing things. The Linux kernel does this very well. They have a policy of if we accidentally changed what our code sends back, that's a bug. This means a program from 10 years ago won't break if you update the Linux kernel. If you update it's other dependencies, it'll likely break. On the other hand, programs may use the latest features of the Linux kernel. This is why many Arch programs don't work on Ubuntu. Ubuntu is shipping an old version of the software which doesn't have the functionality the arch software is expecting. When developers don't use new features, this issue is avoided.
For this reason, when a package depends on another package, it has a minimum version and maximum version.
Can you mix and match Arch and Debian packages?
Every forum post you look at says no, but the answer is more complicated than this. For example, some arch packages are Debian packages under the hood.
If you account for issues like minimum and maximum versions, different package names between arch and debian, etc, then you can mix them.
Installing Python to our ISO
In the next section, we're going to use python make a GUI which installs our OS. This means we need to install python onto our ISO. One way to do this is to build each of python's dependencies, and their dependencies. Like when we compiled the kernel and busybox, we'd git clone, then run make.
Photo of python dependencies
Python has a lot of dependencies, so we're not going to manually build them all. Instead, we'll install packages which have been built from Debian or Arch.
Later in the series, we'll optionally create a package manager.
TODO: Script to install all dependencies w/ cross package