之前我在安装screen时出现了下面的报错指令
wwwww77@wwwww77-VirtualBox:~$ sudo apt install screen
[sudo] password for wwwww77:
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavialable)
E: Unable to acquire the dpkg fronted lock (/var/lib/dpkg/lock-frontend), is another process using it?
在网上查了一些资料后了解到出现这个报错的原因是apt还在运行,也就是这个进程被占用了。
此处涉及到操作系统中锁的一些概念,当一个资源被某个进程占用的时候,我们会把它上一个“锁”,如果这个进程没有结束,那么其他需要这个资源的进程就无法开始,这样子保证了上一个进程的完整性。
解决方法:
1:找到所有apt相关的进程,并用命令杀死。
wwwww77@wwwww77-VirtualBox:~$ ps afx|grep apt
2162 pts/1 T 0:00 | \_ sudo apt get install screenps afx
2163 pts/1 T 0:00 | \_ grep --color=auto apt
2169 pts/1 T 0:00 | \_ sudo apt get install screen
2171 pts/1 S+ 0:00 | \_ grep --color=auto apt
1869 ? S 0:07 \_ /usr/lib/apt/methods/http
2122 ? S 0:00 \_ /usr/lib/apt/methods/http
wwwww77@wwwww77-VirtualBox:~$ sudo kill -9 2162
[sudo] password for wwwww77:
2.删除lock文件
当我们运行了 apt-get 或者 apt 命令,锁定文件将会创建于 /var/lib/apt/lists/、/var/lib/dpkg/、/var/cache/apt/archives/ 中。这能帮助运行中的 apt 进程不被其它需要使用相同文件的用户或者系统进程所打断,当进程执行完毕后,lock文件将会自动被删除。
接下来:
- 移除对应目录下的lock文件
wwwww77@wwwww77-VirtualBox:~$ sudo rm /var/cache/apt/archives/lock-frontend
wwwww77@wwwww77-VirtualBox:~$ sudo rm /var/lib/dpkg/lock-frontend
- 然后重新配置软件包
wwwww77@wwwww77-VirtualBox:~$ sudo dpkg --configure -a
- 更新软件包源文件
wwwww77@wwwww77-VirtualBox:~$ sudo apt update
wwwww77@wwwww77-VirtualBox:~$ sudo apt-get update
3.有需要时重启一下
wwwww77@wwwww77-VirtualBox:~$ reboot
成功解决,可以安装软件了
同时也可能遇到:
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavialable)
一样的问题,只不过lock-frontend变成了lock,同样方法解决,只要在删除进程时改一下路径就行了。
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock