在Debian和Ubuntu之间共享已安装的库

我正在尝试将我的硬盘分区并安装Ubuntu和Debian。所以,我不需要保留任何旧数据。最新的操作系统版本将被使用。
我想知道如何通过apt在Ubuntu上安装库、程序等,而不需要在Debian上重新安装它们,反之亦然。在这里,我假设对于Ubuntu可行的任何操作对于Debian也是可行的,希望反过来也是一样的。
我知道可以共享/home目录。但大多数库/程序并不在那里。我应该将/usr目录放在一个不同的分区上并且在两个操作系统上挂载/usr吗?或者我只需要挂载/usr/local目录?或者有更好的方法吗?

11你的假设是错误的。 - Anwar
10你的假设非常错误。 - Rinzwind
嗯,我的假设对于Ubuntu和类似的ElementaryOS是否成立呢? - dev_nut
@dev_nut 不,一点也不!就算是你也不应该混合使用两个相同版本的Ubuntu。 - Anwar
4嗯,这个问题被投下负票让我感到困惑。难道这不是一个合理的问题,充满了对所有Debian变种共享二进制文件的希望和乌托邦幻想吗(毕竟它们都是相同架构的同一台计算机)? - dev_nut
4点赞是我的。我认为这是一个合理的问题。并不是每个人都有那么多经验。如果没有人问这类问题,我们会在哪里停留呢? - Rinzwind
1因为这是一个合理且并不那么缺乏经验的问题,所以我给你点赞了。 - Jos
你基本上只能分享/home、/usr/local和/opt目录。 - Joshua
3个回答

还有没有更好的方法呢?
将您使用的所有软件都安装为snaps。
将您使用的所有软件安装在名为/opt/的分区中。这很可能是源代码安装(tar.gz)。
这两种安装方法可以在不同的发行版之间共享。对于最后一种方法,您需要将某些内容添加到PATH或将服务复制到主系统中。
您不能在两个不同的安装之间共享/usr/或/var/。但是您可以共享/usr/local/。两个发行版可能具有不同版本的库,因此您可能需要在这些系统中的任何一个上安装一些库。但是,您节省的那几KB并不值得您花费的时间。而且您很可能仍然会破坏其中一个系统。

这个回答实际上试图给我一些解决方案。当你说我不应该共享 /usr 目录时,即使是相同的 Ubuntu 版本,我也不应该这样做吗? - dev_nut
@dev_nut 你不应该在两个系统之间共享/usr/*目录;但是你可以在这两个系统之间共享/usr/local/*目录,尽管这样做仍然存在“local”软件在两个版本之间某种程度上不兼容的风险。(所以你的fstab规则应该将/usr/local/*挂载到其他分区上,然后在两个系统中共享) - Thomas Ward
1@dev_nut 问题是,两个操作系统中的两个不同版本的软件会导致其中一个崩溃。此外,它们在默认用户设置方面可能存在差异,这可能会搞乱事情(用户位于/etc/password)。具有不同UID和GUID的相同用户将成为一个问题。 - Rinzwind

唯一的事情是绝对不能混合使用Debian和Ubuntu的软件源、系统库、程序等等。这样做会严重破坏两个系统。(这也适用于混合使用Ubuntu和非官方变种如Mint;虽然理论上你可以混合使用Kubuntu和Ubuntu,例如16.04版本,但你不应该这样做,应该保持它们的核心系统分开)。
Ubuntu的发布周期比Debian更快,软件库也更更新。反之亦然-Debian没有更新的库等等。
混合使用会导致系统崩溃。这就是为什么你不能共享库文件。
这样做会破坏两个系统。不要尝试在两个系统之间共享库文件和程序。
虽然从技术上讲,你可以在不同版本和发行版之间共享用户主目录,但由于每个系统上不同版本软件的配置差异,可能会在一个或多个操作系统上出现奇怪的问题。

还有一点我想补充到现有答案中,关于aptdpkg以及它们如何处理已安装软件的信息。 dpkg是核心软件包管理应用程序,使用/var/lib/dpkg/status文件来存储和检索有关系统中已安装的Debian软件包的信息。这对于您的运行非常具体。即使一个条目出错,也可能会影响整个软件包管理过程。
举个例子,假设您在Ubuntu上安装了版本为3.18nautilus。然后,如果您共享此信息,Debian将认为nautilus的版本为3.18,即使实际上它是3.16。这只是一个简单的例子,但可能存在更复杂的情况。例如,Debian可能会发现您从不存在的仓库安装了软件包,而无故地尝试删除这些软件包,反之亦然。
Rinzwind的答案已经说明了一种简单的解决常见应用程序问题的方法,即使用作为snap或flat-pak软件包分发的自包含应用程序。这些应用程序不共享库,但如果您需要某种类似于常见应用程序的东西,可能会满足您的目标。