chroot 是使用以前版本软件包的正确方法吗?

chroot 是使用以前版本软件包的正确方法吗?

假设我想使用旧版本 Ubuntu 中提供的一些 GUI 程序。我目前正在使用不提供这些 GUI 程序的较新版本的 Ubuntu。有没有一种可靠的方法可以安装这些旧程序,而不会弄乱我现有的软件包,也不必使用虚拟化(例如 VirtualBox)?

我读过这个问题:如何在 Ubuntu 17.10 上安装 Qtstalker?,关于安装潜行者,Ubuntu 12.04 Precise Pangolin 中提供了该程序,但由于上游停止了开发,该程序已从后续 Ubuntu 版本中删除。那里的答案是使用chroot。我想知道:该方法是否也普遍适用于其他程序?chroot 是该问题的正确且常用的解决方案吗?

假设我想玩战斗,该程序在 Ubuntu 12.04 Precise Pangolin 中可用,但随后被删除。我应该chroot在 Ubuntu 18.04 Bionic Beaver 中使用它来玩吗?

我读https://packaging.ubuntu.com/html/chroots.html,但该页面似乎暗示 chroot 是一个打包工具,而不是用于定期运行程序的工具。


其他答案建议使用 chroot 解决此类问题:旧版本的软件包不再可用吗?

答案1

如果您拥有需要使用 EOL(生命周期终止)操作系统的软件,您应该尽力将其与您的主系统隔离,并将其与互联网隔离。

最好的方法是使用 VirtualBox 等虚拟机软件设置虚拟机。确保禁用容器的网络适配器。

答案2

schroot

正如您已经知道的我的其他答案, 我用schroot经常出现这种情况。
在我的个人机器上,我至少有两个这样的 schroot - 一个用于 Referencer 应用程序的自修补版本,另一个用于旧 OpenWRT 12.07 分支的 GCC 工具链。它工作正常。

Docker

运行旧应用程序的第二种可能方法是使用Docker 容器您可以使用您的xbattle软件包创建 Dockerfile,如下所示

sudo apt-get install docker.io
sudo usermod -a -G docker $USER
# reboot

mkdir ~/docker-xbattle
cat > ~/docker-xbattle/Dockerfile << EOF
FROM ubuntu:12.04
RUN apt-get update
RUN apt-get install -y xbattle
CMD /usr/games/xbattle -black me -farms 5 -militia 5 -decay 5 -hills 9  -hex
EOF

docker build -t ubuntu:xbattle ~/docker-xbattle

并为其创建特殊的启动脚本

docker run -it -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --user="$(id --user):$(id --group)" ubuntu:xbattle

来播放它。

相关内容