以 ibus-sunpinyin 为例,它在 squeeze 版本中不存在。我不打算将整个系统切换到 sid 分支,因此,我想从 sid 存储库下载单个包并安装它,如下所示:
# Add the sid repository
sudo mv /tmp/sid.list /etc/apt/sources.list.d/
# Error: can't install because version conflicts of libc6:
# sudo apt-get install ibus-sunpinyin
# This is ok but it will upgrade a lot of mess from sid branch:
# sudo apt-get upgrade ibus-sunpinyin
# So, instead of apt-get install/upgrade, let me download & install the single package.
# However, this errored again because of version conflicts of libc6:
# apt-get install --download-only ibus-sunpinyin
## THEN, WHAT CAN I DO? ##
# Remove the sid repository.
sudo mv /etc/apt/sources.list.d/sid.list /tmp
# Install the single package.
sudo dpkg -i ./ibus-sunpinyin-x.x.x.deb
答案1
您还可以尝试从 sid 存储库下载源包,然后在 squeeze 系统上构建它们。如果依赖项过多,或者包依赖于 squeeze 中没有的库版本,您可能会遇到麻烦。
如果此方法有效,那么您不需要像使用引导方法那样在单独的文件夹中维护另一个分发。
答案2
您真正想要的是了解 apt-pinning。http://jaqque.sbih.org/kplug/apt-pinning.html
答案3
一种简单的方法是设置首选项,以便系统使用大多数包,但对于缺少的包则stable
返回testing
或使用。unstable
步骤如下:
将其添加到
/etc/apt/sources.list
:deb http://deb.debian.org/debian buster main deb http://deb.debian.org/debian testing main non-free contrib deb http://deb.debian.org/debian unstable main non-free contrib
将其写入
/etc/apt/preferences
(或创建文件)Package: * Pin: release a=stable Pin-Priority: 700 Package: * Pin: release a=testing Pin-Priority: 650 Package: * Pin: release a=unstable Pin-Priority: 600
跑步
apt-get update
安装你想要的包(例如
apt-get install ibus-sunpinyin
)
PS:你可以强制安装不稳定包装apt-get install <package>/unstable
答案4
解决此问题的一种方法是cdebootstrap
安装一个基本的 sid 系统,然后使用chroot
在新系统中运行所需的程序。
cdebootstrap
在目录中安装您想要的任何发行版的新 Debian 系统。然后,chroot
您可以运行其他发行版中的程序,而无需重新启动或执行任何其他操作。
您还可以使用mount --bind
它让 chroot 系统访问您的主文件夹、/proc 等。
在 chrooted 系统中,apt-get 将从 sid 存储库进行安装。
有关更详细的解释,请参阅https://wiki.ubuntu.com/DebootstrapChroot。