假设我想使用旧版本 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
来播放它。