问题描述
用sudo apt-get安装包的时候发现报错:
E: Unable to correct problems, you have held broken packages
网上都说用sudo apt-get install aptitude
安装aptitude解决依赖问题
结果发现安装aptitude也报错:
The following packages have unmet dependencies:
aptitude : Depends: libapt-pkg5.0 (>= 1.1) but it is not going to be installed
Recommends: libparse-debianchangelog-perl but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
直接给我整蒙了,这是进入死循环了?
问题原因
最后发现是之前更换apt源的时候,搞错了ubuntu版本(之前居然从来没注意过)
换源地址里是有对应的ubuntu版本的,比如清华源:
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
中间这个bionic
是ubuntu 18.04的代号,而我的是ubuntu 20.04,代号是focal
,用这个源是不行的。
解决方案
检查版本
所以在换源之前要先获取自己的ubuntu系统版本:
lsb_release -a
输出:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.6 LTS
Release: 20.04
Codename: focal
得知自己的版本是20.04,代号是focal
复制源
然后换源,这里以换清华源为例:
进入清华源的网站
https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/
一定要在下图红色这里选择
对应的 对应的 对应的(重要的事情说三遍)
ubuntu版本,就可以获得对应的ubuntu源地址
换源
之后就可以换源了,先备份原本的源:
cp /etc/apt/sources.list /etc/apt/sources.list.old
然后编辑源,将原先的源删除,将清华源输入进去:
vim /etc/apt/sources.list
更新apt-get
# 更新源
sudo apt-get update
# 更新仓库信息
sudo apt-get upgrade
再运行
sudo apt-get install aptitude
没问题了
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
aptitude-common libboost-iostreams1.71.0 libcgi-fast-perl libcgi-pm-perl libclass-accessor-perl libcwidget4 libencode-locale-perl libfcgi-perl libhtml-parser-perl
libhtml-tagset-perl libhttp-date-perl libhttp-message-perl libio-html-perl libio-string-perl liblocale-gettext-perl liblwp-mediatypes-perl libparse-debianchangelog-perl
libsigc++-2.0-0v5 libsub-name-perl libtimedate-perl liburi-perl libxapian30
Suggested packages:
aptitude-doc-en | aptitude-doc apt-xapian-index debtags tasksel libcwidget-dev libdata-dump-perl libhtml-template-perl libxml-simple-perl libwww-perl xapian-tools
The following NEW packages will be installed:
aptitude aptitude-common libboost-iostreams1.71.0 libcgi-fast-perl libcgi-pm-perl libclass-accessor-perl libcwidget4 libencode-locale-perl libfcgi-perl libhtml-parser-perl
libhtml-tagset-perl libhttp-date-perl libhttp-message-perl libio-html-perl libio-string-perl liblocale-gettext-perl liblwp-mediatypes-perl libparse-debianchangelog-perl
libsigc++-2.0-0v5 libsub-name-perl libtimedate-perl liburi-perl libxapian30
0 upgraded, 23 newly installed, 0 to remove and 0 not upgraded.
Need to get 4,933 kB of archives.
After this operation, 23.2 MB of additional disk space will be used.
Do you want to continue? [Y/n]
试试安装包
sudo apt-get install freeglut3-dev
同样顺利安装:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
freeglut3 libdrm-amdgpu1 libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libegl-dev libegl-mesa0 libegl1 libgbm1 libgl-dev libgl1 libgl1-mesa-dev libgl1-mesa-dri libgl1-mesa-glx
libglapi-mesa libgles-dev libgles1 libgles2 libglu1-mesa libglu1-mesa-dev libglvnd-dev libglx-dev libglx-mesa0 libglx0 libllvm12 libopengl-dev libopengl0 libpciaccess0
libsensors-config libsensors5 libvulkan1 libwayland-client0 libwayland-server0 libx11-xcb1 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-randr0 libxcb-sync1
libxcb-xfixes0 libxshmfence1 libxt-dev libxt6 libxxf86vm1 mesa-vulkan-drivers
Suggested packages:
pciutils lm-sensors libxt-doc
The following NEW packages will be installed:
freeglut3 freeglut3-dev libdrm-amdgpu1 libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libegl-dev libegl-mesa0 libegl1 libgbm1 libgl-dev libgl1 libgl1-mesa-dev libgl1-mesa-dri
libgl1-mesa-glx libglapi-mesa libgles-dev libgles1 libgles2 libglu1-mesa libglu1-mesa-dev libglvnd-dev libglx-dev libglx-mesa0 libglx0 libllvm12 libopengl-dev libopengl0
libpciaccess0 libsensors-config libsensors5 libvulkan1 libwayland-client0 libwayland-server0 libx11-xcb1 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-randr0
libxcb-sync1 libxcb-xfixes0 libxshmfence1 libxt-dev libxt6 libxxf86vm1 mesa-vulkan-drivers
0 upgraded, 47 newly installed, 0 to remove and 0 not upgraded.
Need to get 37.8 MB of archives.
After this operation, 532 MB of additional disk space will be used.
Do you want to continue? [Y/n]
问题解决
后记
折腾ubuntu环境也五六年了,从自己小笔记本的虚拟机、双系统到云服务器,断断续续配过的软件/算法环境没有五十个也至少有三十个,之前都是网上随便搜个清华源直接换上去,居然都蒙混过关了。。。所以一直没有注意到这个问题,说出去怕不是要被人笑话哈哈哈哈
现在知道了,apt-get源是有对应系统版本的,在成为一个合格的新手的道路上又前进了一步。
感叹自己在细节上关注的还是不够,每次写的代码就像鸽子转着脖子直升飞天了也就不管了。以后还是要多多关注细节,知其然知其所以然。