如标题所示,最近想跟着学做一个项目,正准备往Ubuntu上安装gcc和g++,当执行命令 $ sudo apt install gcc g++ 时,提示信息如图所示。
![在这里插入图片描述](https://img-blog.csdnimg.cn/be60e4f7b978435e8c67d976f0b44805.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASkluZ2xlczEyMw==,size_20,color_FFFFFF,t_70,g_se,x_16)
为了解决这个问题,我在网上搜索到了问题出现的原因,以及如何将问题解决。
这个问题可以归结为操作系统中的死锁问题,死锁定义如下:
死锁(Deadlock):是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。称此时系统处于死锁状态或系统产生了死锁。
称这些永远在互相等待的进程为死锁进程。
所占用的资源或者需要它们进行某种合作的其它进程就会相继陷入死锁,最终可能导致整个系统处于瘫痪状态。
问题出现的原因:
在ubuntu系统终端下,用apt-get install 安装软件的时候,如果在未完成下载的情况下将终端中断,此时 apt-get进程可能没有结束。如果再次运行apt-get install 命令安装,可能会发生下面的提示:
无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?
两种问题解决办法:
1。终端输入 ps aux ,列出进程。找到含有apt-get的进程,直接sudo kill PID。
2。强制解锁,命令
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
我这里用方式二解决,如下图所示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/6d0c1d38017545ae8378816c5c89a3af.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASkluZ2xlczEyMw==,size_20,color_FFFFFF,t_70,g_se,x_16)
执行完命令之后,再重新回到我这里,安装gcc及g++,一切安装正常进行,如下所示。
![在这里插入图片描述](https://img-blog.csdnimg.cn/f5f02a14463341d28ec238e6cc31e10f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASkluZ2xlczEyMw==,size_20,color_FFFFFF,t_70,g_se,x_16)