I am reading Debian vs. Ubuntu vs. Linux Mint: Which Distribution Should You Use?
Ubuntu, on the other hand, is made to include a good combination of new and stable ... Some packages can be used on both distributions, while others are specifically for one or the other
If Ubuntu is based on Debian, how is it more updated? Does it simply use different apt soures?
Again since it's based on Debian, why are there differences in package compatibility? Does it simply have some different things installed?
Can I say:
- All Debian packages will work on Ubuntu.
- All Ubuntu packages will work on Linux Mint (based on Ubuntu).
A "Debian release" itself isn't one thing, there usually different releases of Debian in the wild.
Debian has a branch called "unstable", or "sid", named after the kid from Toy Story who breaks his toys.
Debian also has a "stable" release, which is released when it's ready. These are usually released in longer intervals.
In between is a release called "testing", with versions of software newer than stable but older than unstable. Eventually "testing" is promoted to a stable release.
Typically during their development cycle, Ubuntu imports source packages from Debian Unstable (sid). At some point we stop automatic imports and instead pull in fixes manually and then release it as Ubuntu every 6 months. During LTS releases where stability is more important, Ubuntu will pull from the testing release instead.
After Ubuntu releases, there's a big sync up back with Debian and the process repeats.
Both Debian Stable and Ubuntu take Debian Unstable -> Testing -> and then make stable releases based off of that. The major difference between the processes is that Ubuntu is time-based, importing and making freezes based on the schedule and goals for that release, whereas Debian cycles at a slower rate and doesn't have a strict "We need to release regularly" goal. Ubuntu will also sometimes take things that are important to its users and package those directly, sometimes submitting those back to Debian if appropriate. I talk a bit about that here:
A long time ago Debian stable releases could take a really long time, sometimes up to 3 years: so long that by the time it was released some of the software was badly out of date. The past few releases have been much quicker, running about 1.5-2 years between - about the same interval as Ubuntu LTS releases, but since the schedule isn't the same, the Debian release may have newer software than the most recent Ubuntu LTS release (or vice versa).
Debian and Ubuntu packages are often binary compatible: programs built on one distribution can be copied to the other and will run successfully. But this relies on having the same libraries available that the package was built against, which is not always the case, either between an Ubuntu release and a Debian release or between two successive releases of the same distribution. Also, there's a lot more to distribution integration than just having the right libraries, so even if the program in the package has everything it needs to be run, the package could fail to install or run correctly because of any number of differences between the distributions: an Ubuntu package may not be usable on Debian because it requires upstart, for example.
In general, if you think the packaging should be the same between Debian and Ubuntu, it's still easiest to rebuild the binary packages for the exact toolchain of your release. You can easily import the source package and build it yourself or on in a PPA.
Every once in a while, the Debian and Ubuntu releases line up where we can share things like a GCC, libc6, or python version or whatever. That is of course great for the ecosystem because having things that closely aligned makes things easier for users, packagers, and upstreams. This is why the toolchain discussions at the Ubuntu Developer Summit usually take into account the state of Debian at the time.
Yes, Ubuntu does use different apt sources. They have many people who check the packages for new versions. Ubuntu also modified apt quite a bit, so that might explain why they aren't compatible (I'm not exactly sure myself, but that might be part of it).