AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 22414
Accepted
Gareth
Gareth
Asked: 2009-06-09 23:53:20 +0800 CST2009-06-09 23:53:20 +0800 CST 2009-06-09 23:53:20 +0800 CST

如何运行 Debian stable 但从测试中安装一些软件包?

  • 772

假设您正在运行一台服务器,并且您不想从 Stable (Lenny) 升级到 Testing (Squeeze) 以仅安装一个或两个所需的软件包。

仅从测试中安装某些软件包的最佳方法是什么?

linux debian package-management aptitude
  • 10 10 个回答
  • 252436 Views

10 个回答

  • Voted
  1. SineSwiper
    2012-04-23T18:38:12+08:002012-04-23T18:38:12+08:00

    许多人似乎害怕将稳定与测试混为一谈,但坦率地说,测试本身就相当稳定,并且通过适当的偏好和解决方案检查,您可以避免将核心包置于不稳定路径的“稳定性漂移”。

    “测试还算稳定??” , 你问。是的。为了让一个包从不稳定迁移到测试,它必须连续 10 天零开放错误。很有可能,特别是对于更流行的软件包,如果出现问题,有人会提交不稳定版本的错误报告。

    即使您不想混合环境,如果您遇到需要比稳定版本更新的版本的东西,也可以在那里选择。

    这是我建议的设置:

    首先,在 中创建以下文件/etc/apt/preferences.d:

    stable.pref:

    # 500 <= P < 990: causes a version to be installed unless there is a
    # version available belonging to the target release or the installed
    # version is more recent
    
    Package: *
    Pin: release a=stable
    Pin-Priority: 900
    

    testing.pref:

    # 100 <= P < 500: causes a version to be installed unless there is a
    # version available belonging to some other distribution or the installed
    # version is more recent
    
    Package: *
    Pin: release a=testing
    Pin-Priority: 400
    

    unstable.pref:

    # 0 < P < 100: causes a version to be installed only if there is no
    # installed version of the package
    
    Package: *
    Pin: release a=unstable
    Pin-Priority: 50
    

    experimental.pref:

    # 0 < P < 100: causes a version to be installed only if there is no
    # installed version of the package
    
    Package: *
    Pin: release a=experimental
    Pin-Priority: 1
    

    (不要害怕这里的不稳定/实验性的东西。优先级足够低,以至于它永远不会自动安装任何这些东西。即使是测试分支也会运行,因为它只会安装你想要的包在测试中。)

    现在,创建一个匹配集/etc/apt/sources.list.d:

    stable.list: 从您的原件复制/etc/apt/sources.list。将旧文件重命名为sources.list.orig.

    testing.list: 与 相同stable.list,除了testing。

    unstable.list: 与 相同stable.list,但带有unstable, 并删除安全列表。

    experimental.list: 与 相同unstable.list,除了experimental。

    您也可以添加一个oldstableinsources.lists.d和preferences.d(使用优先级 1),尽管这个名字往往会在下一个稳定周期之前过期并消失。在这种情况下,您可以使用http://archive.debian.org/debian/和“硬编码”Debian 版本(etch、lenny 等)。

    要安装包的测试版本,只需使用aptitude install lib-foobar-package/testing,或者直接跳到 aptitude 的 GUI 并选择包详细信息中的版本(在您正在查看的包上按 Enter 键)。

    如果您收到有关包冲突的投诉,请先查看解决方案。在大多数情况下,第一个是“不要安装这个版本”。学习使用每个包的接受/拒绝解析器选项。例如,如果您正在安装 foobar-package/testing,而第一个解决方案是“不安装 foobar-package/testing”,则将该选项标记为已拒绝,其他解决方案将永远不会再转向该路径。在这种情况下,您可能需要安装一些其他测试包。

    如果它变得太麻烦(比如它正在尝试升级 libc 或内核或其他一些巨大的核心系统),那么您可以拒绝这些升级路径或完全退出初始升级。请记住,如果您允许,它只会将东西升级到测试/不稳定。

    编辑:修复了一些优先级引脚,并更新了列表。

    • 217
  2. pQd
    2009-06-09T23:57:22+08:002009-06-09T23:57:22+08:00

    在/etc/apt/apt.conf.d添加以下文件

    99defaultrelease:

    APT::Default-Release "stable";
    

    in /etc/apt/sources.list.d- 添加用于测试/不稳定源的 url

    stable.list:

    deb     http://ftp.de.debian.org/debian/    stable main contrib non-free
    deb-src http://ftp.de.debian.org/debian/    stable main contrib non-free
    
    deb     http://security.debian.org/         stable/updates  main contrib non-free
    

    testing.list:

    deb     http://ftp.de.debian.org/debian/    testing main contrib non-free
    deb-src http://ftp.de.debian.org/debian/    testing main contrib non-free
    
    deb     http://security.debian.org/         testing/updates  main contrib non-free
    

    跑

    apt-get update
    

    然后安装你需要的东西

    apt-get -t testing install something
    

    如果您安装具有大量依赖项的东西,请非常小心。最好不要在生产中这样做。

    您也可以在backports或类似的存储库中试试运气。

    • 123
  3. Best Answer
    Gareth
    2009-06-10T00:04:43+08:002009-06-10T00:04:43+08:00

    apt_preferences

    在 /etc/apt/preferences 文件中定义系统应该“安全升级”到的默认级别:
    man apt_preferences

    apt_preferences 可以做很多事情,但为了简单起见......

    我需要安装仅在测试中可用的单个包(autoMysqlBackup)。解决方案是将以下内容添加到 /etc/apt/preferences:

    Explanation: Uninstall or do not install any Debian-originated
    Explanation: package versions other than those in the stable distro
    Package: *
    Pin: release a=stable
    Pin-Priority: 900
    
    Package: *
    Pin: release o=Debian
    Pin-Priority: -10
    

    随着多个存储库添加到 /etc/apt/sources.list aptitude 现在只会升级到您指定的版本,即使列出了更高版本的存储库(在本例中为“稳定”)。

    deb http://mirror.aarnet.edu.au/debian/ lenny main
    deb-src http://mirror.aarnet.edu.au/debian/ lenny main
    deb http://mirror.aarnet.edu.au/debian/ squeeze main
    deb-src http://mirror.aarnet.edu.au/debian/ squeeze main
    

    因此,要安装该软件包,您所要做的就是:

    $ aptitude install -t testing packageName 
    
    • 54
  4. Telemachus
    2009-06-10T05:09:26+08:002009-06-10T05:09:26+08:00

    对于它的价值,我一直看到的一般建议是“不要将稳定的东西与任何东西混合”。大多数混合系统教程都是针对混合测试和不稳定的。

    原因似乎是,如果您将稳定与测试混合使用,非常基本的软件包(如 libc6)将需要更新(以便从测试中安装软件),并且一旦这些基本软件包进入测试阶段,整个系统就会朝着这种方向发展。

    这里有两种选择:

    1. 使用反向端口。
    2. 从测试中安装源代码行,并尝试从源代码构建您想要的更高版本。
    • 18
  5. tomdeb
    2009-06-10T00:24:08+08:002009-06-10T00:24:08+08:00

    debian 文档在该主题中非常广泛,我强烈建议深入研究,因为它将真正揭示 debian 系统的美丽。

    看看如何保持混合系统,它将解释你需要知道的一切。

    • 13
  6. gerlos
    2014-03-14T09:02:47+08:002014-03-14T09:02:47+08:00

    另一种可以防止从 Testing 或 Sid 安装过多依赖项的方法是:您告诉 apt-get 从 Testing 或 Sid 获取软件包的源代码,并使用 Debian 工具为您的系统创建一个软件包(无需手动修补有来源)。

    从这里引用:
    https ://wiki.debian.org/DebianUnstable#How_do_I_backport_a_sid_package_to_testing_or_stable.3F

    如何将 sid 包反向移植到测试或稳定?

    安装 Debian 源代码(以及开发工具,尤其是 debhelper、devscripts 和 build-essential),然后构建软件包。

    一步步:

    add a deb-src line for sid to your sources.list
    
    apt-get update
    
    apt-get build-dep PACKAGE_NAME
    
    apt-get -b source PACKAGE_NAME 
    

    生成的 deb 应该在当前目录中,并且可以使用 dpkg -i the.deb 安装。

    • 9
  7. Daniel Sokolowski
    2013-02-05T14:59:15+08:002013-02-05T14:59:15+08:00

    我已经做了很长一段时间了,以便有信心说它足够安全并且可以方便使用。默认情况下将安装以下安装稳定版本,但是如果需要,Aptitude 还允许您选择反向移植或不稳定版本:

    在此处输入图像描述

    有四点需要编辑,需要设置默认的 pinning release,sources 需要添加 backports 和不稳定,降低 backports/unstable 包的 pinning 优先级,需要修改 aptitude 显示设置以显示 pinning。

    • 创建一个'/etc/apt/apt.conf.d/10defaultrelease'并使其内容如下:
    Apt::default-Release “稳定”;
    
    • 编辑您的“/etc/apt/sources.list”以添加不稳定和反向移植源,使其看起来像这样:
    # deb cdrom:[Debian GNU/Linux 6.0.0 _Squeeze_ - Official Multi-architecture amd64/i386 NETINST #1 20110205-14:45]/squeeze main
    
    deb http://ftp.us.debian.org/debian/ 挤压主
    deb-src http://ftp.us.debian.org/debian/ 挤压主
    
    deb http://security.debian.org/squeeze/updates main
    deb-src http://security.debian.org/squeeze/updates main
    
    # 挤压更新,以前称为 'volatile'
    deb http://ftp.us.debian.org/debian/squeeze-updates main
    deb-src http://ftp.us.debian.org/debian/squeeze-updates main
    
    # 压缩反向端口
    # http://backports.debian.org/Instructions/
    deb http://backports.debian.org/debian-backports 挤压反向端口主要
    
    # 不稳定
    # http://wiki.debian.org/AptPreferences
    deb http://ftp.us.debian.org/debian/ 不稳定的主要
    deb-src http://ftp.us.debian.org/debian/ 不稳定主
    
    # 非免费前。太阳爪哇
    #deb http://ftp.us.debian.org/debian/ 挤压非免费
    #deb-src http://ftp.us.debian.org/debian/ 挤压非免费
    
    • 编辑etc/apt/preferences固定文件 - 如果文件不存在,请创建它。
    # 包固定优先级
    # 参见 http://wiki.debian.org/AptPreferences 和 http://manpages.debian.net/cgi-bin/man.cgi?query=apt_preferences
    #
    # 简而言之,安装了最高 PIN
    #
    # Pining 默认值如下,这是我们设置之外的:
    # 990 - 对于未安装但属于我们的 `APT::Default-Relase "stable"` 设置的版本。
    # 500 - 用于未安装且不属于目标版本的版本
    # 100 - 对于已经安装的包,这也意味着相同包的其他版本
    # 1 - 用于实验包;带有“NotAutomatic:是”的软件包
    #
    # 我们的别针
    # 400 - 无需更新其他软件包即可安全安装的反向移植
    # 50 - 不稳定的软件包,在详细信息屏幕中强制安装,可能会导致冲突
    
    包裹: *
    引脚:释放 n=squeeze-backports
    引脚优先级:400
    
    包裹: *
    引脚:release a=unstable
    
    • 创建'/etc/apt/apt.conf.d/100guiconf'并设置 Aptitude 以显示固定信息。
    Aptitude::UI::Package-Display-Format "%c%a%M %p %Z %v %V %i";
    
    • 4
  8. Monica For CEO
    2015-07-07T10:53:48+08:002015-07-07T10:53:48+08:00

    如果您选择的软件包更多或将在多台机器上重复安装,您可能会考虑设置一个私有存储库来镜像官方存储库的子集。这需要一些工作来配置存储库,但奖励很容易维护,每个客户端上的配置最少,并且在进行数十次安装时结果可重复。即使只安装一两个软件包,我也觉得这很有帮助,并使用这种方法来自动化和维护云安装。廉价 VPS 上的单个服务器可以处理数十个私有存储库。

    要配置您的私有存储库服务器:

    # Install aptly.
    apt-get install aptly
    
    # Create local mirror (choose a source mirror near you).
    aptly mirror create -filter="mirror-contains-no-packages" stretch-roundcube http://httpredir.debian.org/debian stretch main
    
    # Configure filters for local mirror.
    aptly mirror edit -filter="Name (% roundcube*)" stretch-roundcube
    
    # Update local mirror.
    aptly mirror update stretch-roundcube
    
    # Drop previously published repositories and mirrors, if running these commands in a script.
    aptly publish drop stretch
    
    # Drop snapshot, if running these commands in a script.
    aptly snapshot drop stretch-roundcube
    
    # Create new snapshot.
    aptly snapshot create stretch-roundcube from mirror stretch-roundcube
    
    # Publish snapshot.
    aptly publish snapshot -architectures=i386,amd64 -distribution=stretch -component=roundcube -label="Your Name" -origin="Your Name" stretch-roundcube
    

    然后配置您选择的 Web 服务器以提供静态存储库文件。可能使用安全证书和基本身份验证来保护存储库。

    要自动维护您的私有存储库并从上游提取更新,请将上述内容放入脚本并从 cron 作业运行。

    要配置您的客户端计算机,请在您的客户端计算机上:

    # Configure private repository without authentication.
    echo 'deb http://private.repository.example.com/ stretch roundcube' > /etc/apt/sources.list.d/private.repository.example.com.list
    
    # Configure private repository with authentication.
    echo 'deb https://hostname:[email protected]/ stretch roundcube' > /etc/apt/sources.list.d/private.repository.example.com.list
    apt-get install apt-transport-https
    
    # Update.
    apt-get update
    
    # Install package.
    apt-get install roundcube
    

    要维护您的客户端计算机并在您的客户端计算机上提取所有私有存储库更新:

    # Update.
    apt-get update
    
    # Upgrade.
    apt-get upgrade
    
    • 2
  9. temy
    2018-02-16T19:15:42+08:002018-02-16T19:15:42+08:00

    另一种选择是从测试中下载源包。APT 可以在下载后自动构建源包。这样,您的稳定包将不会受到测试更新的影响。唯一的权衡是它比仅仅下载和安装二进制包需要更多的时间。

    要配置 APT 以从测试中下载源包,只需添加:

    deb-src http://<your debian mirror here> testing main
    

    如果您只想关注当前的测试而不是未来的测试,请将“testing”替换为当前的代号(在撰写本文时它是“buster”)

    • 2
  10. Gilles Quenot
    2020-06-25T15:33:02+08:002020-06-25T15:33:02+08:00

    为了避免混合稳定/测试/实验,我所做的是在我的 Debian 稳定系统的目录中安装一个 Debian Sid debootstrap,然后我可以使用我想要的工具。在这个例子中,我需要一个最近的xmllint工具(XML处理)。

    为此,这就是我所做的:

    apt install debootstrap
    mkdir /home/sid-chroot
    debootstrap --arch amd64 sid /home/sid-chroot http://mirrors.ircam.fr/pub/debian/
    chroot /home/sid-chroot
    apt install libxml2-utils
    

    现在,我可以退出chroot并使用库,“hacking”LD_LIBRARY_PATH特定的动态加载库。

    在~/.bashrc:

    alias xmllint='LD_LIBRARY_PATH=/home/sid-chroot/usr /home/sid-chroot/usr/bin/xmllint'
    

    现在,当我运行时xmllint,我有 2.9.10 版本的libxml2-utils. (2019 与 2016 版本)。

    优点:

    • 我可以轻松安装任何其他软件包
    • 没有小猫被杀,没有通过混合测试/实验的东西来崩溃我的桌面的风险
    • 我通过安全更新使我的 Debian 稳定系统保持最新状态
    • 我保持我的系统被很多人大量使用(不像sid),这样,随机软件仍然足够兼容

    缺点:

    • 系统需要 410MB(我不在乎)
    • 它需要别名.bashrc
    • 2

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve