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
    • 最新
    • 标签
主页 / unix / 问题 / 717985
Accepted
Chuffleton
Chuffleton
Asked: 2022-09-21 07:20:18 +0800 CST2022-09-21 07:20:18 +0800 CST 2022-09-21 07:20:18 +0800 CST

同一台机器上的“apt-get install ...”和不同版本的源代码包可能会出现什么问题?

  • 772

假设我“ apt-get install somepkg ”,然后进一步安装依赖于“somepkg”的其他软件包(“abc”和“def”)。后来,我可能会读到包的最新发布源中有一些理想的更新,但我可以看到通过包管理器提供的预构建版本卡在一个非常旧的版本上,所以我然后从最新版本获取、制作和安装发布源。

但是,我现在看到我有 2 个不同版本/集的各种内置/安装包。例如/bin/somepkg-tool (v 1.0)、/usr/bin/sompkg-tool (v1.0),以及更新的、从最新构建的/usr/local/bin/somepkg -工具( v4.1),它提出了一些问题-

  1. 从不同版本安装多组二进制文件(一组来自预构建的包管理器,一组来自本地构建的最新 src)可能会出现问题吗?感觉就像是最好避免的潜在问题的来源。
  2. 如果我要使用“ sudo apt-get purge somepkg ”删除较旧的预构建托管包,现在提示也删除依赖包“abc”和“def”,这让我感到不舒服,因为不清楚这是否严格必要的,或者他们是否可以通过在路径上找到较新构建的二进制文件来继续工作。删除/清除以前安装的包是否不可避免地会删除后续的依赖包?另外,如果我接受删除依赖包,包管理器会/可以看到后续(重新)安装“abc”和“def”不再需要获取和安装旧的“somepkg”,因为我已经在本地构建并从 src 安装了必要的“somepkg”二进制文件?
  3. 或者是否有某种方法可以通过包管理器清除旧安装的“somepkg”而不删除 2 个依赖包?
  4. 是否有解决这种情况的一般最佳方法,或者通常最好根据具体情况进行处理?

我在这里注意到了一个类似的未回答的问题,但是,评论集中在具体案例上,这是相当有问题的,因为它是许多事情的基本依赖。

不想分散这个问题的一般性质,说明一个具体案例可能很有用 -

  • 我'apt-get install git' (v2.30.2)
  • 我后来'apt-get install gitolite3'和'... git-lfs'。
  • 后来,我在发行说明中看到了一些修复/更新,我的 debian 包管理器告诉我最新的 git 包卡在旧版本上(apt-get update,apt show git)所以我'wget ...git-2.37 .3.tar.gz',从较新的发布源制作和安装。

现在我看到我有以下二进制文件(在 git 包附带的所有其他文件中) -

  • /bin/git (v2.30.2旧)
  • /usr/bin/git (v2.30.2旧)
  • /usr/local/bin/git (v2.37.3新)

并希望确保避免依赖 gitolite 存储库服务器和 LFS 服务器因无意中使用较旧的 git 二进制文件而出现问题。因此,这些问题。

package-management
  • 2 2 个回答
  • 32 Views

2 个回答

  • Voted
  1. Best Answer
    Stephen Kitt
    2022-09-21T08:14:04+08:002022-09-21T08:14:04+08:00
    1. 如果您始终知道如何PATH设置,则可以控制它,但是是的,这可能是问题的根源。

    2. 包管理器只知道包;它不知道您手动安装的二进制文件。

    3. 您可以使用equivs创建一个虚拟包来满足依赖关系。请参阅如何使 apt 忽略已安装包的未实现依赖项?

    4. 请参阅如何安装比 Debian 提供的更新版本的软件?为了更好地解决这个问题,特别是对于已经打包git了较新版本的软件包- 如果它们在反向移植中不可用(Debian 11 目前为 2.34.1),您可以使用较新的源软件包重建实际的软件包。

    • 1
  2. Sotto Voce
    2022-09-21T10:17:29+08:002022-09-21T10:17:29+08:00

    使用两个不同的安装系统(来自包管理器和由本地管理员“手动”编译/安装),很容易得到:

    1. 主命令/守护进程位于两个不同的地方。一些用户找到一个地方,其他人找到另一个地方,版本的差异导致行为的差异 - 让所有用户感到困惑。对于用户可以自行停止和启动的守护程序来说尤其如此。
    2. 配置目录/文件位于两个不同的位置,当有人为他们不使用的版本更新配置文件时会引起投诉。
    3. 使用守护进程,两个版本的日志文件通常写在两个不同的位置,这会导致混淆并延迟用户或服务器管理员的调试或故障排除工作。

    尽量避免手动安装重复的程序。如果您必须这样做,请创建大量文档,说明您以这种方式安装了哪些程序,以及您如何编译/安装它们。向包管理器添加配置以防止它安装您不想要的包(在这些配置中带有详细的注释)也是一件重要的事情。让您之后的下一位系统管理员轻松维护和更新这些程序。(通常,“下一个”管理员将是你,9 个月后这些细节的记忆已经消失)

    • 0

相关问题

  • 如何在 Kali Linux 中安装特定版本的 GCC?

  • 是否可以构建同时支持 RPM 和 .deb 软件包的 Linux 发行版?

  • dh_usrlocal: ... 不是目录

  • 了解 apt 列表输出

  • 使用 shell 脚本安装 ncdf4 R 包

Sidebar

Stats

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

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve