更多分享内容可访问我的个人博客

https://www.niuiic.top/

Gentoo 教程目录


本文介绍 gentoo 系统下的软件包冲突及其解决思路。

软件包冲突

什么是软件包冲突?用一句话来概括就是两者无法共存。无法共存的原因是什么?两者在同一个依赖上有不同的要求。

举个例子。dev-libs/protobufmedia-libs/opencv的一个依赖。它同时也是media-video/vlc的一个依赖。假设现在 vlc 想升级,需要3.19.1版本的 protobuf。但是当前版本的 opencv 要求 protobuf 的版本不得高于3.17.3。于是,由于 opencv 限制了 protobuf 的版本,导致 vlc 无法升级。 冲突就这样产生了。

同理这样的冲突也可能是因为对依赖的 USE FLAGPYTHON_TARGET 等要求不同引起的。

解决思路

对于一般人来说,要去搞清楚 opencv 为什么要求 protobuf 版本不高于3.17.3,并且把它改了,是不太现实的。这基本上都会涉及源码。所以,解决问题的思路只有一个,使用 gentoo 包管理系统提供的操作让冲突双方对依赖的要求相同。

还是上面的例子,当前版本的 opencv 要求 protobuf 版本低,无非是还没有适配高版本 protobuf 的部分特性。那么思路就来了。高版本的 opencv 对 protobuf 的版本要求肯定会提高。如果能找到一个版本的 opencv,其要求的 protobuf 版本包含3.19.1,问题就解决了。另外的像USE FLAGPYTHON_TARGET造成的问题也是一样的。

我们在 gentoo 包管理系统提供的操作上能进行的只有修改软件的版本。所以不管是什么冲突,方法就一条。

要修改版本,自然需要清楚各版本软件的信息。这一点通常可以通过eixequery来实现。

比如equery -g media-libs/opencv查看各版本 opencv 的依赖,发现目前没有一个版本可以满足3.19.1的 protobuf。那么,一般人能做的就到此为止了,耐心等待上游更新软件版本即可。那假设有这么一个版本,又该怎么做呢?

首先,把冲突的各方拎出来。现在有三个dev-libs/protobufmedia-libs/opencvmedia-video/vlc。思考谁会发生版本变化。现在是全都需要。直接emerge 三个包基本上可以解决问题,甚至不需要拆除旧版本。但 emerge 自动处理软件版本的能力是有限的。有时候,比如,从 python3.7 全面升级到 python3.8,过不了几天就可能有一大堆 python 依赖产生冲突,如果让人来看,很可能是先把什么拆了,然后装上什么,再拆掉什么,再装上什么……。但 emerge 分析不过来。这个时候就需要人来帮助分析,先手动拆除一部分,然后装一部分……。最极端的做法就是所有涉及冲突的全部 unmerge 掉。然后全部 emerge。这种做法一般是最省事的,也是风险最高的,弄不好系统就永远破了个大洞。因为你可以强制拆,但是不能强制装。

综上,对于一般人而言,解决软件包冲突的方案就是找出冲突成因,查看是否可以通过修改软件版本解决冲突,然后修改为合适的软件版本,重新编译安装。

特殊情况下,可能找到替代软件。如openjdkopenjdk-bin,如果后者需要的依赖更少,正好把冲突解决了,那么就可以通过软件替代来解决软件冲突。

Gentoo 软件包冲突相关推荐

  1. 软件包管理系统知多少

    作者博客:途中的树 软件包管理工具简述 有计算机系统就有软件,那么我们平时是如何安装软件的呢?当然可以直接下载软件使用,比如诸君(包括我)电脑上的众多盗版软件,大概是直接从网页上下载的,除此之外,在手 ...

  2. ebuild 中的软件包依赖

    Gentoo 的软件包管理器--Portage 中最有用的特性之一就是能够灵活的解决软件包的依赖问题,因为它解决了其他发行版的包管理系统不好解决的一些问题.本文只关注如何在 ebuild 文件中设定软 ...

  3. [转帖]升级 Ubuntu,解决登录时提示有软件包可以更新的问题

    升级 Ubuntu,解决登录时提示有软件包可以更新的问题 2017年12月05日 11:58:17 阅读数:2953更多 个人分类: ubuntu Connecting to 10.24.88.188 ...

  4. Gentoo Linux的安装

    1. 有关Gentoo Linux的安装 1.a. 介绍 欢迎! 首先,欢迎使用Gentoo Linux系统!你将进入选择和性能的世界中.Gentoo处处给用户提供选择.当安装Gentoo时,这点你会 ...

  5. 15 openEuler使用DNF管理软件包

    文章目录 15.1 搜索软件包 15.2 列出软件包清单 15.3 显示RPM包信息 15.4 安装RPM包 15.5 下载软件包 15.6 删除软件包 DNF是一款Linux软件包管理工具,用于管理 ...

  6. 传统的 Linux 软件包格式不适合现代应用

    开源贡献者 Hari Rana 表达了他对传统 Linux 软件包格式不再适合现代应用的看法. 我多次遇到用户抱怨 LTS 和稳定版的应用软件包有问题,但又声称开发版从来没有发生过这种事情.然而,以我 ...

  7. ubuntu18.04安装mongodb

    我们安装社区版mongdb mongodb由Ubuntu提供的软件包不是 由MongoDB公司维护的,而是与mongodb-org软件包冲突 .要检查系统上mongodb是否安装了Ubuntu 软件包 ...

  8. manjaro升级的一些问题

    最近manjaro linux一直升级失败,报错 错误:无法从 mirrors.tuna.tsinghua.edu.cn : Operation too slow. Less than 1 bytes ...

  9. web 平台搭建-LAMP-源码包(CentOS-7)

    文章目录 一.准备工作 1.1 安装编译工具 gcc.gcc-c++等 1.2 关闭系统 RPM 安装包的 Apache.MySQL 等服务 1.3 拷贝源码包,解包解压缩 二.编译安装 2.1 安装 ...

  10. web 平台搭建-LAMP-源码包(CentOS-6)

    文章目录 一.准备工作 1.1 安装编译工具 gcc.gcc-c++等 1.2 关闭系统 RPM 安装包的 Apache.MySQL 等服务 1.3 拷贝源码包,解包解压缩 二.编译安装 2.1 安装 ...

最新文章

  1. 未来5年网络安全支出将达到1万亿
  2. Word插入Latex公式的几种方式~(TeXsWord、EqualX、Aurora、向Office插入LaTeX公式的工具)
  3. NFL discussion调研
  4. Swift5之网易云音乐页面搭建
  5. iOS coredata 多表查询
  6. checking size of char… configure: error: cannot compute sizeof (char) 解决方法
  7. python爬取论坛帖子_python爬虫爬取虎扑论坛的帖子名称和链接,为什么只能爬10页就报...
  8. CEF与快速交换的比较
  9. poj1036-dp
  10. python中sendmessage的使用_SendMessage函数完全使用手册
  11. mnist数据集下载——mnist数据集提供百度网盘下载地址
  12. 大学英语综合教程四 Unit 2 课文内容英译中 中英翻译
  13. 土豆网王微:做自己生活的导演
  14. IDEA启动显示 找不到应用程序
  15. 网络请求框架 -- 理解Https
  16. macbook 打开以后没有声音,重启以后又好了的解决方法
  17. iOS 应用创建APNS 和 VOIP的pem证书流程
  18. 区块链上的虚拟开放世界游戏是怎样的?| TVP思享
  19. 显著性检测方法:LC
  20. android 常用短语的添加,LazyBoard – 常用短语键盘,快速输入很长的句子

热门文章

  1. 计算机职业资格证学什么,计算机职业资格证书有哪些
  2. mongodb分组统计
  3. 【网启树莓派】无SD卡 从网络驱动树莓派| raspberry boot via pxe
  4. Linux查看mpp数据库地址,linux下打开.mpp文件(微软project)._操作系统_rainysia的专栏-CSDN博客...
  5. python 面试题 aac caa相似_Python 面试实训 100 题,哪道难住了你?| 文末附答案
  6. 被空降到一个团队当领导,你会如何烧自己的三把火?
  7. 笔记本电脑键盘的禁用与恢复【亲测有效】
  8. 计算机丢失mscvr,教大家计算机丢失Msvcr100.dll的解决方法
  9. 基于 BIP39 协议创建 Ethereum HD Wallet
  10. python 小海龟 教案_幼儿园小班健康活动《勇敢的小海龟》教案