理论结合实践,才是真理。
解决外围问题还会出现新的问题,解决核心问题一步成功!!
前面的Linux知识,仅仅让我懂得了一些Linux的使用方法。但是在使用过程中,我遇到了很多其他的问题,然后去百度谷歌找答案找解决方法,可是有时百度和谷歌每个相关知识的解决方法,我根本无从下手。。。
后来,我找到了相关的官方文档,在里面找到了解决方法。这篇文章就简单记录一下这些经历吧

安装Ubuntu后的一些事情

  1. 开机后会进入下面这个界面,正好,先简单地换个国内能用的镜像源,下载一些基础软件

image.png

  1. 换成清华源之后,安装vim编辑器(我喜欢用这个)
  2. 安装vim之后,用vim编辑 /etc/apt/sources.list,这次是正式的换源了,去镜像源官网找,然后复制过去。
  3. 为什么第一步换镜像源安装了vim之后,再换一次镜像源??我也不清楚原因,这是我在实践中得出的结论,可能是我的电脑问题,反正换源又不费事。
  4. 换源成功后,更新、升级、卸载不常用的软件 ```shell

    这些命令多执行几次,多来几次又不费事

    sudo apt update sudo apt list —upgradable sudo apt upgrade sudo apt upgrade —fix-missing ##再来一次 sudo apt autoremove

然后再执行这两句,显示成下面的就好了

sudo apt update sudo apt upgrade

显示这样最好了:

virtual-machine:~$ sudo apt-get update 命中:1 https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic InRelease 命中:2 https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-updates InRelease 命中:3 https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-backports InRelease 命中:4 https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-security InRelease 正在读取软件包列表… 完成
virtual-machine:~$ sudo apt-get upgrade 正在读取软件包列表… 完成 正在分析软件包的依赖关系树
正在读取状态信息… 完成
正在计算更新… 完成 升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。

  1. 这些步骤做好了,很多错误都不会遇到!!!
  2. <a name="cNfma"></a>
  3. ### 安装软件时遇见了依赖错误
  4. 第二次用一台新虚拟机测试时,先完成了上面的那一步([安装Ubuntu后的一些事情](https://www.yuque.com/vipkylin/uawztg/kekgay/edit#hzvvH)),然后这个问题就没有再遇见,所以我只能凭借第一次的处理来记录了(没有相关截图)<br />**过程经过**:我想在Ubuntu上安装gcc,查了相关资料后,可以直接安装build-essential包来解决。之后我就在Ubuntu 18 04 上执行命令:`sudo apt install build-essential`,之后就报错了。<br />报错:(在Ubuntu 20.10 上找的错误信息)
  5. ```shell
  6. 正在读取软件包列表... 完成
  7. 正在分析软件包的依赖关系树
  8. 正在读取状态信息... 完成
  9. 有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
  10. 因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
  11. 包尚未被创建或是它们已被从新到(Incoming)目录移出。
  12. 下列信息可能会对解决问题有所帮助:
  13. 下列软件包有未满足的依赖关系:
  14. dpkg-dev : 依赖: libdpkg-perl (= 1.19.7ubuntu3) 但是 1.20.5ubuntu2 正要被安装
  15. 推荐: fakeroot
  16. 推荐: libalgorithm-merge-perl 但是它将不会被安装
  17. g++ : 依赖: cpp (= 4:9.3.0-1ubuntu2) 但是 4:10.2.0-1ubuntu1 正要被安装
  18. 依赖: g++-9 (>= 9.3.0-3~) 但是它将不会被安装
  19. 依赖: gcc-9 (>= 9.3.0-3~) 但是它将不会被安装
  20. gcc : 依赖: cpp (= 4:9.3.0-1ubuntu2) 但是 4:10.2.0-1ubuntu1 正要被安装
  21. 依赖: gcc-9 (>= 9.3.0-3~) 但是它将不会被安装
  22. libc6-dev : 依赖: libc6 (= 2.31-0ubuntu9.2) 但是 2.32-0ubuntu3 正要被安装
  23. 依赖: libc-dev-bin (= 2.31-0ubuntu9.2)
  24. 依赖: libcrypt-dev 但是它将不会被安装
  25. E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

解析:

  1. 有未满足的依赖,原因是需要的依赖版本低,而目前系统的相关包版本高,所以低版本的依赖不会被安装
  2. 如果盲目的使用 sudo apt install libc6-dev=版本号一定会导致出现其他的问题(我试过)。。。(解决外围问题还会出现新的问题)
  3. (解决核心问题一步成功)核心问题:依赖关系,使用aptitude包管理工具

image.png
在此之前我只知道apt和dpkg,在安装了aptitude之后就可以使用aptitude安装build-essential了。但是。。但是。。但是。。

  1. 安装aptitude也出现了依赖问题,,这次直接使用sudo apt install 软件名=版本号,解决了aptitude的问题,之后成功安装build-essential(Ubuntu 18.04测试成功了),看清楚aptitude的提示,你可以不接受它提供的方案,然后让它重新生成解决方案
  2. 为什么安装build-essential的时候不用那个软件名=版本号的方式解决依赖问题?我给自己找了个勉强说得过去的理由:依赖libc-dev这个包的软件太多了,如果强行把libc-dev降级,可能会出现更多的问题。
  3. 除了使用aptitude这个包管理工具之外,还有一种方法,就是把 安装Ubuntu后的一些事情 这个步骤执行一遍,所有的软件该升级的升级,真没用的就卸载,之后再安装build-essential(第一台虚拟机没测试这个,第二台新虚拟机直接用的这一步,没有任何问题,虚拟机都是Ubuntu 18.04)