我一直在尝试通过版本升级来传递一个旧应用程序(实际上是 LemonPOS)。我发现它仍然可以在 Lubuntu 和 Kubuntu 的存储库中使用,最早可以追溯到 14.04,最近可以追溯到 18.04 - 但后来我运气不佳。我知道这个程序在很多方面都名副其实 - 它是一个柠檬,它是一个 POS,就试图将它安装在 Ubuntu 衍生产品的现代发行版中而言。它需要旧的 KDE4 库,而这些库在受支持的发行版存储库中越来越少。
如果我从 14.04 中的 repo 安装它,我必须安装 MySQL 服务器(5.5),然后我才能执行 cat 短语来创建数据库。至少对于 Kubuntu,在 16.04 等更高版本中执行此操作不起作用 - 我已检查脚本文件是否相同,但较新的 MySQL(5.7)对语法有疑问。抱歉,我不太熟悉 SQL。还没有,也许在我解决这个问题之后我会熟悉。
无论如何,如果我在 14.04 中安装 LemonPOS,执行 MySQL 和 CAT 操作,它就可以正常工作。然后我可以将版本升级到 18.04,它仍然在那里。在那之后...
- 对于 Lubuntu,据说从旧版本升级到 20.04 可能会导致系统崩溃。我还没有尝试,但我有一台项目计算机可供使用,我可以尝试我想要的,只是需要时间。
- 对于 Kubuntu,升级似乎有效,但 LemonPOS 的安装将被破坏,因为名为 LEMON 的程序将被其他程序替换。我发现这是一个已知的冲突,但传统上可以避免,因为这两个软件包很少必须位于同一个 Ubuntu 安装中。
因此,我一直对下载组件而不安装感兴趣,apt-get 似乎可以很好地使用 --download-only 来完成此操作。尽管如此,它下载了很多 LemonPOS 不太可能真正需要的东西。由此产生的问题是,如果我以这种方式生成一个“包”,使用 dpkg 安装它将尝试安装这些包中的所有内容,即使不是真正需要的,并且在此过程中它会用较旧的系统组件替换较新的系统组件并最终失败。
核心问题是,这样做是否可以避免系统中较新的软件包被降级?或者,是否可以为 LemonPOS(或任何其他应用程序)指定一个单独的安装文件夹来存放其依赖项,以便系统的其余部分可以拥有自己的现代库?或者,我最好制作一个运行这个旧发行版的虚拟机和 LemonPOS?我敢打赌我可以让 Oracle VM 通过 IP 进行打印。
答案1
可能的依赖冲突的后果是,除非卸载恰当命名的 LemonPOS 应用程序,否则 Ubuntu 20.04 无法使用,因此我建议在虚拟机中运行旧版本的 Ubuntu。这样你仍然可以免费获得延长安全维护(ESM)适用于 Ubuntu 14.04 直至 2024 年 4 月或 Ubuntu 16.04 直至 2026 年 4 月。ESM 将 Ubuntu 14.04 及更高版本的 LTS 版本的安全维护期从 5 年延长至 10 年。
在 Ubuntu 中,Snap 包是独立包,它们与依赖项一起打包并安装在单独的位置,但这种安装包的方法只有在您要安装的应用程序的 Snap 包存在时才有效。我认为您问的是某种通用虚拟环境,它可以对任何包进行沙盒处理,类似于 virtualenv 创建虚拟环境以在 Ubuntu 中安装和运行 Python 包的方式。对于像 Qubes OS 这样以安全性为重点的 Linux 发行版来说,这将是一个更合乎逻辑的设计,其中应用程序默认在虚拟环境中运行。