将软件包从 oldstable (wheezy) 安装到 stable (jessie)

将软件包从 oldstable (wheezy) 安装到 stable (jessie)

我想从 wheezy 安装 jessie 中缺少的软件包。这就像反向移植。我需要 gcc-4.7,但 jessie 只提供 gcc-4.9。Unstable 只为 arm 架构提供 gcc-4.7。我计划将 wheezy repo 添加到我的源中并使用命令安装它

apt install gcc-4.7/wheezy

这样做是否相对安全?这样做会冒依赖性问题的风险吗?

答案1

它很可能无法完美地工作。通常旧版本的路径和二进制文件与新版本相冲突。有时有人会反向移植它,当他们这样做时,通常需要更改路径以使所有内容在非标准目录下工作。这会使包工作,但其他包将找不到它们的依赖项。

您可能想要尝试的一件事是让受影响的可执行文件在 docker 容器中运行。您可以创建一个以前版本的 Debian 容器,在其中安装运行可执行文件所需的最少软件,然后创建容器的映像。所有依赖项都将位于容器内,您只需使用 即可运行它docker run <image> <command>。这可以为一些命令行软件(甚至服务器软件)节省时间,但如果受影响的可执行文件需要 Xserver 或管理权限,则可能会很麻烦。

答案2

您可以尝试在 jessie 实例上重新编译从 wheezy 获得的源 deb 包。请注意,我假设gcc-4.7可以使用 进行编译而不会出现错误gcc-4.9,但这并不是万无一失的。

但一般程序应该是:

  1. 将 wheezy 二进制文件作为源添加到您的/etc/apt/sources.list文件中,例如deb http://ftp.us.debian.org/debian/ wheezy main contrib
  2. 将 wheezy 源作为源添加到您的/etc/apt/sources.list文件中,例如deb-src http://ftp.us.debian.org/debian/ wheezy main contrib
  3. 跑步apt-get update
  4. 下载gcc-4.7源码包:apt-get source gcc-4.7
  5. 通过运行安装构建gcc-4.7依赖项apt-get build-dep gcc-4.7(这实际上可能非常困难,因为可能与您当前安装的软件包存在许多冲突,您需要手动解决它们)
  6. 进入步骤 4 中apt-get下载的源包的目录,例如或任何名称gcc-4.7cd gcc-4.7
  7. 构建 gcc-4.7:dpkg-buildpackage -us -uc
  8. 假设它构建没有错误,安装您将在父目录中找到的生成的包

我是根据记忆编写的此过程,因此请谨慎对待并根据需要调整命令。特别是我不确定dpkg-buildpackage -usjessie-uc中是否存在选项,如果没有,就不要使用它们。

相关内容