sudo+apt-get+install
作者:yasden
结论:sudo apt --fix-broken install命令可以解决很多依赖之间大批量冲突的问题。
特别提醒:采用“sudo dpkg -i 本地deb文件”来安装deb应用程序,很大概率会产生依赖冲突,因为dpkg是不会自动解决依赖冲突的。强烈建议用“sudo apt-get install 本地deb文件”来安装deb程序,这样apt会自动解决依赖冲突。注意:“sudo apt-get install 本地deb文件”来安装deb的时候,必须指明本地deb文件的路径,如果不指明文件路径,apt会在“源”上去找该文件。
最近发现,我的linux系统的依赖关系有点乱,因为之前我强制安装了一些包,导致出现一些冲突。
用sudo apt-get upgrade命令可以看到系统上的依赖之间的冲突(见下图):
![](https://p0.ssl.img.360kuai.com/t017a127dc332f2ec86.jpg)
即使删除个东西,都会提示这些冲突:
我研究了一下解决方法。
第一步、如果修改了/etc/apt/sources.list文件,最好恢复成原来的默认文件。
用下面的命令将/etc/apt/sources.list文件恢复成系统初始文件,这一步的目的是保证将apt-get的源恢复成系统默认的,假如你添加过什么其他源,都要删除掉,避免干扰(高手如果懂原理,可以不用做这一步):
sudo vi /etc/apt/sources.list
第二步、系统提示什么冲突,就解决那个冲突的包(这个方法采用单个包手动解决的方式,适合只有1-2个包的情况,如果出现大批量冲突则要换其他方法来解决)
例如:上面的信息提示下面的信息(见上图):
依赖: gcc-12-base (= 12.3.0-1ubuntu1~22.04)
先到ubuntu.pkgs官网下载gcc-12-base_12.3.0-1ubuntu1~22.04_amd64.deb文件,然后用下面的命令安装gcc-12-base_12.3.0-1ubuntu1~22.04_amd64.deb:
sudo apt-get install ./gcc-12-base_12.3.0-1ubuntu1~22.04_amd64.deb
这时候,仍然显示报错(见下图):
![](https://p0.ssl.img.360kuai.com/t01419a845a99ad659e.jpg)
按照提示,改用下面的命令来安装:
sudo apt --fix-broken install ./gcc-12-base_12.3.0-1ubuntu1~22.04_amd64.deb
这时候不报错了(见下图):
![](https://p0.ssl.img.360kuai.com/t01aec45406f9cd04a7.jpg)
执行sudo apt --fix-broken install ./gcc-12-base_12.3.0-1ubuntu1~22.04_amd64.deb这条命令的目的是: apt --fix-broken install 会自动从第一步提到的/etc/apt/sources.list这个apt源里面自动查找并修复冲突的依赖,执行之后,会提示下面的信息,也就是提示你,这些冲突的依赖会自动修复(见上图的截图,我将该命令修复的依赖粘贴到下面,给大家仔细看):
将会同时安装下列软件:
lib32gcc-s1 lib32stdc++6 libc6 libc6-dev-i386 libc6-i386 libclang-14-dev libclang-common-14-dev libclang1-14 libllvm14 libobjc4 libstdc++-11-dev
建议安装:
glibc-doc libstdc++-11-doc
推荐安装:
libnss-nis libnss-nisplus gcc-multilib
下列【新】软件包将被安装:
lib32stdc++6
下列软件包将被升级:
gcc-12-base lib32gcc-s1 libc6 libc6-dev-i386 libc6-i386 libclang-14-dev libclang-common-14-dev libclang1-14 libllvm14 libobjc4 libstdc++-11-dev
特别提醒
sudo apt --fix-broken install ./gcc-12-base_12.3.0-1ubuntu1~22.04_amd64.deb这条命令需要指定gcc-12-base_12.3.0-1ubuntu1~22.04_amd64.deb文件的目录(相对目录或者绝对目录都行,我是cd到该文件的下载目录下,所以我使用的是./这个相对目录,你也可以使用绝对目录),如果你不指定gcc-12-base_12.3.0-1ubuntu1~22.04_amd64.deb文件路径的话,apt会傻傻的去apt源里面找,而且apt肯定找不到这个gcc-12-base_12.3.0-1ubuntu1~22.04_amd64.deb文件,如果它能智能到找到并安装“源“里面的这个gcc-12-base_12.3.0-1ubuntu1~22.04_amd64.deb文件,上面我执行sudo apt-get upgrade就不会报缺少gcc-12-base的错了。
如果执行sudo apt --fix-broken install ./gcc-12-base_12.3.0-1ubuntu1~22.04_amd64.deb命令提示下面的报错信息,也就是提示你将要安装的gcc-12-base和系统已经安装的gcc-12-base不兼容:
![](https://p0.ssl.img.360kuai.com/t010e09e4005d294cbf.jpg)
sudo dpkg --force-overwrite -i 命令强制安装某个包
用下面的命令来强制安装该包(注意:使用该命令有可能导致系统故障,除非你清楚知道自己在干嘛,不然不要轻易强制安装执行,下面的命令使用前要千万小心):
sudo dpkg --force-overwrite -i gcc-12-base_12.3.0-1ubuntu1~22.04_amd64.deb
上面的命令执行完毕后,再用sudo apt-get upgrade查看一下,冲突的依赖减少到只有下面的3个了:
![](https://p0.ssl.img.360kuai.com/t01fa74e2527b7ad9b5.jpg)
采用sudo apt --fix-broken install 命令解决大批量冲突的情况
这条命令可以解决很多大批量依赖之间冲突的问题:
![](https://p0.ssl.img.360kuai.com/t01211ca7f85fbe8563.jpg)
![](https://p0.ssl.img.360kuai.com/t014c1446d7ec9e2088.jpg)
查看文章精彩评论,请前往什么值得买进行阅读互动
","gnid":"91ddaf20b8e94b14b","img_data":[{"flag":2,"img":[{"desc":"","height":785,"title":"","url":"https://p0.ssl.img.360kuai.com/t0143144d9888ec0898.jpg","width":1025},{"desc":"","height":785,"title":"","url":"https://p0.ssl.img.360kuai.com/t01835ffda699e5befd.jpg","width":1025},{"desc":"","height":"554","title":"","url":"https://p0.ssl.img.360kuai.com/t01aec45406f9cd04a7.jpg","width":"1022"},{"desc":"","height":529,"title":"","url":"https://p0.ssl.img.360kuai.com/t01712aa81b5155a782.jpg","width":1042},{"desc":"","height":"458","title":"","url":"https://p0.ssl.img.360kuai.com/t01fa74e2527b7ad9b5.jpg","width":"1080"},{"desc":"","height":"229","title":"","url":"https://p0.ssl.img.360kuai.com/t01211ca7f85fbe8563.jpg","width":"1080"},{"desc":"","height":899,"title":"","url":"https://p0.ssl.img.360kuai.com/t010c958ffce75bf738.jpg","width":1080}]}],"original":0,"pat":"art_src_1,fts0,sts0","powerby":"pika","pub_time":1698931229000,"pure":"","rawurl":"http://zm.news.so.com/36dfa396936281347346560673eb5c00","redirect":0,"rptid":"4d1c3d2c4cebed49","rss_ext":[],"s":"t","src":"什么值得买","tag":[],"title":"Linux系统修复依赖冲突的方法
封鸿盼1774sudo apt - get upgrade是什么意思 -
逄萍庙18048485002 ______ sudo apt-get upgrade 升级系统,升级. 重点词汇释义: upgrade 提升;升级;向上的. 短语:sudo apt-get dist-upgrade 升级系统 ; 更新系统升级版本
封鸿盼1774我的ubuntu在 终端下用sudo apt - get install g++ - 4.1 为什么安装不了啊?谢谢. -
逄萍庙18048485002 ______ 你应该是想要更新你的g++吧,用apt-get安装的前提是你得软件源里面有这个东西,安装不了的具体提示我不知道,所以不好乱说,不过我觉得应该是源里没有,要么逆天加源,要么你到网上去找它的DEB包,或者到它的官方网站上下载源码编译安装.
封鸿盼1774Ubuntu怎么修改apt - get更新源 -
逄萍庙18048485002 ______ 方法/步骤打开设置》》软件和更新,如下图下载自:下拉菜单,选择其他站点你可以选择最佳服务器,也可以指定你满意的服务器.选择之后要求输入密码选择关闭,之后会重新自动执行更新命令(sudoapt-getupdate)更新完成
封鸿盼1774如何使用apt - get工具安装apache php mysql -
逄萍庙18048485002 ______ Ubuntu建立(apache+php+mysql)+phpmyadmin Ubuntu建立apache+php+mysql 基本的支持环境.暂时还不应用zend优化,因此这里就不涉及到zend optimizer的安装了.其实在ubuntu系统中中安装远比在windows系统中设置更为容易,而且在...
封鸿盼1774ubuntu 安装软件有几种方式 -
逄萍庙18048485002 ______ 1、使用apt-get install来安装应用程序算是最常见的一种安装方法了,比如我要安装build-essential这个软件,使用以下,他会帮我把所有的依赖包都一起安装了. udo apt-get install build-essential 2、dpkg安装deb包 Ubuntu软件包格式为deb,安装方法如下: sudo dpkg -i package.deb 3、make install源代码安装 源码安装大致可以分为三步骤:(./configure)–> 编译(sudo make) –> 安装(sudo make install).
封鸿盼1774如何解决ubuntu下apt - get install g++依赖问题 -
逄萍庙18048485002 ______ 解决方法:使用aptitude包依赖管理工具来帮我们处理,具体使用方法如下:sudo apt-get install aptitude sudo aptitude install g++ 终端中输入后会提示aptitude给出的解决方案,你可以选择no,会继续提供下一个解决方案,一般前面的方案会是忽略掉依赖冲突,所以想要彻底解决的话可以跳过前面的几种方案,然后再yes解决.(当然这里的话,自己可以看提示选择需要的处理方案)
封鸿盼1774如何让debian自动寻找最快的更新源 -
逄萍庙18048485002 ______ 1 安装debian系统后,使用"apt-get update"命令,使安装源生效.2 安装"apt-spy“.命令:"apt-get install apt-spy"3 选择'y',确认安装.4 安装完成后,运行命令"apt-spy -d stable -a asia -t 5".其中-d选项指定发行版本,可选项为"...
封鸿盼1774apt 和apt - get的区别 -
逄萍庙18048485002 ______ 官方文档说明如下 APT is a vast project, whose original plans included a graphical interface. It is based on a library which contains the core application, and apt-get is the first front end — command-line based — which was developed within the ...
封鸿盼1774sudo apt - get 和 apt - get有什么区别 -
逄萍庙18048485002 ______ 是这样的,在ubuntu下安装软件是需要使用“管理员”权限的,但ubuntu为了安全,通常大家使用的用户都是普通用户权限.为了解决如何让普通用户能够如何短暂的使用管理员权限而又不能让他一直使用管理员帐号这个问题. 当大家使用sudo 并输入正确的密码后,就可以在执行此命令时使用管理员权限.也就是说,在你是普通用户时使用sudo,你若直接就是管理员(也就是root) 那就不需要sudo了
封鸿盼1774ubuntu aria2怎么启动 -
逄萍庙18048485002 ______ 添加uget依赖: sudo add-apt-repository ppa:plushuang-tw/uget-stable 2 更新依赖: sudo apt-get update 安装uget: sudo apt-get sudo apt-get update