Gentoo 软件包冲突
更多分享内容可访问我的个人博客
https://www.niuiic.top/
Gentoo 教程目录
本文介绍 gentoo 系统下的软件包冲突及其解决思路。
软件包冲突
什么是软件包冲突?用一句话来概括就是两者无法共存。无法共存的原因是什么?两者在同一个依赖上有不同的要求。
举个例子。dev-libs/protobuf
是media-libs/opencv
的一个依赖。它同时也是media-video/vlc
的一个依赖。假设现在 vlc 想升级,需要3.19.1
版本的 protobuf。但是当前版本的 opencv 要求 protobuf 的版本不得高于3.17.3
。于是,由于 opencv 限制了 protobuf 的版本,导致 vlc 无法升级。 冲突就这样产生了。
同理这样的冲突也可能是因为对依赖的 USE FLAG
、PYTHON_TARGET
等要求不同引起的。
解决思路
对于一般人来说,要去搞清楚 opencv 为什么要求 protobuf 版本不高于3.17.3
,并且把它改了,是不太现实的。这基本上都会涉及源码。所以,解决问题的思路只有一个,使用 gentoo 包管理系统提供的操作让冲突双方对依赖的要求相同。
还是上面的例子,当前版本的 opencv 要求 protobuf 版本低,无非是还没有适配高版本 protobuf 的部分特性。那么思路就来了。高版本的 opencv 对 protobuf 的版本要求肯定会提高。如果能找到一个版本的 opencv,其要求的 protobuf 版本包含3.19.1
,问题就解决了。另外的像USE FLAG
和PYTHON_TARGET
造成的问题也是一样的。
我们在 gentoo 包管理系统提供的操作上能进行的只有修改软件的版本。所以不管是什么冲突,方法就一条。
要修改版本,自然需要清楚各版本软件的信息。这一点通常可以通过eix
和equery
来实现。
比如equery -g media-libs/opencv
查看各版本 opencv 的依赖,发现目前没有一个版本可以满足3.19.1
的 protobuf。那么,一般人能做的就到此为止了,耐心等待上游更新软件版本即可。那假设有这么一个版本,又该怎么做呢?
首先,把冲突的各方拎出来。现在有三个dev-libs/protobuf
、media-libs/opencv
和media-video/vlc
。思考谁会发生版本变化。现在是全都需要。直接emerge 三个包
基本上可以解决问题,甚至不需要拆除旧版本。但 emerge 自动处理软件版本的能力是有限的。有时候,比如,从 python3.7 全面升级到 python3.8,过不了几天就可能有一大堆 python 依赖产生冲突,如果让人来看,很可能是先把什么拆了,然后装上什么,再拆掉什么,再装上什么……。但 emerge 分析不过来。这个时候就需要人来帮助分析,先手动拆除一部分,然后装一部分……。最极端的做法就是所有涉及冲突的全部 unmerge 掉。然后全部 emerge。这种做法一般是最省事的,也是风险最高的,弄不好系统就永远破了个大洞。因为你可以强制拆,但是不能强制装。
综上,对于一般人而言,解决软件包冲突的方案就是找出冲突成因,查看是否可以通过修改软件版本解决冲突,然后修改为合适的软件版本,重新编译安装。
特殊情况下,可能找到替代软件。如openjdk
和openjdk-bin
,如果后者需要的依赖更少,正好把冲突解决了,那么就可以通过软件替代来解决软件冲突。
Gentoo 软件包冲突相关推荐
- 软件包管理系统知多少
作者博客:途中的树 软件包管理工具简述 有计算机系统就有软件,那么我们平时是如何安装软件的呢?当然可以直接下载软件使用,比如诸君(包括我)电脑上的众多盗版软件,大概是直接从网页上下载的,除此之外,在手 ...
- ebuild 中的软件包依赖
Gentoo 的软件包管理器--Portage 中最有用的特性之一就是能够灵活的解决软件包的依赖问题,因为它解决了其他发行版的包管理系统不好解决的一些问题.本文只关注如何在 ebuild 文件中设定软 ...
- [转帖]升级 Ubuntu,解决登录时提示有软件包可以更新的问题
升级 Ubuntu,解决登录时提示有软件包可以更新的问题 2017年12月05日 11:58:17 阅读数:2953更多 个人分类: ubuntu Connecting to 10.24.88.188 ...
- Gentoo Linux的安装
1. 有关Gentoo Linux的安装 1.a. 介绍 欢迎! 首先,欢迎使用Gentoo Linux系统!你将进入选择和性能的世界中.Gentoo处处给用户提供选择.当安装Gentoo时,这点你会 ...
- 15 openEuler使用DNF管理软件包
文章目录 15.1 搜索软件包 15.2 列出软件包清单 15.3 显示RPM包信息 15.4 安装RPM包 15.5 下载软件包 15.6 删除软件包 DNF是一款Linux软件包管理工具,用于管理 ...
- 传统的 Linux 软件包格式不适合现代应用
开源贡献者 Hari Rana 表达了他对传统 Linux 软件包格式不再适合现代应用的看法. 我多次遇到用户抱怨 LTS 和稳定版的应用软件包有问题,但又声称开发版从来没有发生过这种事情.然而,以我 ...
- ubuntu18.04安装mongodb
我们安装社区版mongdb mongodb由Ubuntu提供的软件包不是 由MongoDB公司维护的,而是与mongodb-org软件包冲突 .要检查系统上mongodb是否安装了Ubuntu 软件包 ...
- manjaro升级的一些问题
最近manjaro linux一直升级失败,报错 错误:无法从 mirrors.tuna.tsinghua.edu.cn : Operation too slow. Less than 1 bytes ...
- web 平台搭建-LAMP-源码包(CentOS-7)
文章目录 一.准备工作 1.1 安装编译工具 gcc.gcc-c++等 1.2 关闭系统 RPM 安装包的 Apache.MySQL 等服务 1.3 拷贝源码包,解包解压缩 二.编译安装 2.1 安装 ...
- web 平台搭建-LAMP-源码包(CentOS-6)
文章目录 一.准备工作 1.1 安装编译工具 gcc.gcc-c++等 1.2 关闭系统 RPM 安装包的 Apache.MySQL 等服务 1.3 拷贝源码包,解包解压缩 二.编译安装 2.1 安装 ...
最新文章
- 未来5年网络安全支出将达到1万亿
- Word插入Latex公式的几种方式~(TeXsWord、EqualX、Aurora、向Office插入LaTeX公式的工具)
- NFL discussion调研
- Swift5之网易云音乐页面搭建
- iOS coredata 多表查询
- checking size of char… configure: error: cannot compute sizeof (char) 解决方法
- python爬取论坛帖子_python爬虫爬取虎扑论坛的帖子名称和链接,为什么只能爬10页就报...
- CEF与快速交换的比较
- poj1036-dp
- python中sendmessage的使用_SendMessage函数完全使用手册
- mnist数据集下载——mnist数据集提供百度网盘下载地址
- 大学英语综合教程四 Unit 2 课文内容英译中 中英翻译
- 土豆网王微:做自己生活的导演
- IDEA启动显示 找不到应用程序
- 网络请求框架 -- 理解Https
- macbook 打开以后没有声音,重启以后又好了的解决方法
- iOS 应用创建APNS 和 VOIP的pem证书流程
- 区块链上的虚拟开放世界游戏是怎样的?| TVP思享
- 显著性检测方法:LC
- android 常用短语的添加,LazyBoard – 常用短语键盘,快速输入很长的句子
热门文章
- 计算机职业资格证学什么,计算机职业资格证书有哪些
- mongodb分组统计
- 【网启树莓派】无SD卡 从网络驱动树莓派| raspberry boot via pxe
- Linux查看mpp数据库地址,linux下打开.mpp文件(微软project)._操作系统_rainysia的专栏-CSDN博客...
- python 面试题 aac caa相似_Python 面试实训 100 题,哪道难住了你?| 文末附答案
- 被空降到一个团队当领导,你会如何烧自己的三把火?
- 笔记本电脑键盘的禁用与恢复【亲测有效】
- 计算机丢失mscvr,教大家计算机丢失Msvcr100.dll的解决方法
- 基于 BIP39 协议创建 Ethereum HD Wallet
- python 小海龟 教案_幼儿园小班健康活动《勇敢的小海龟》教案