如何从 Debian sid 安装单个软件包?

如何从 Debian sid 安装单个软件包?

以 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

步骤如下:

  1. 将其添加到/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
    
  2. 将其写入/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
    
  3. 跑步apt-get update

  4. 安装你想要的包(例如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

相关内容