![无法 apt-get 升级或更新](https://linux22.com/image/937736/%E6%97%A0%E6%B3%95%20apt-get%20%E5%8D%87%E7%BA%A7%E6%88%96%E6%9B%B4%E6%96%B0.png)
我有类似的问题这
当我做 apt-get update 时
apt-get update
Reading package lists... Done
E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)
E: Unable to lock directory /var/lib/apt/lists/
W: Problem unlinking the file /var/cache/apt/pkgcache.bin - RemoveCaches (13: Permission denied)
W: Problem unlinking the file /var/cache/apt/srcpkgcache.bin - RemoveCaches (13: Permission denied)
apt-get upgrade
E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?
然而,在这个问题上,每个人都回答“使用 sudo”,是的,它允许执行,但是这不是一个答案因为:
- 以前在我的电脑上,我可以不通过 sudo 进行更新和升级。所以我想知道如何再次无需 sudo 即可进行更新和升级
编辑:解决方案不是一直使用 sudo。有关参考,请查看本文或者本文实际上试图解决问题(不幸的是,他们的解决方案对我来说不起作用,但它朝着问题的方向发展)
编辑2. sudo 不应该是必需的另一个原因是:我使用了很多 docker 镜像。当你构建一个 docker 镜像时,你会使用Dockerfile
。在 docker 文件中,你可以找到类似
RUN apt-get update && apt-get remove -y x264 libx264-dev
RUN apt-get update && apt-get upgrade -y && apt-get install -y sudo clang-format wget apt-utils
如果需要 sudo,那么我们根本无法构建 docker 镜像。到目前为止,我已经构建了几个这样的镜像,因为 sudo 不是必需的。
答案1
的默认值apt-get update
是需要的sudo
。如果你的系统在某个时刻不需要它(这通常不是一个好主意),那是因为有人做了某事。
如果您想恢复该行为,认为它应该是默认行为并且以某种方式发生了变化,我建议您重新考虑这个想法,并坚持下去sudo apt-get update
。
如果你知道所涉及的风险,并且仍然希望apt-get update
不使用sudo
,你可以打开终端并输入sudo visudo
。在文件末尾(实际上是最后一行)输入 ,%yourusername% ALL=NOPASSWD: /usr/bin/apt-get install
其中%yourusername%
被你的username
(来源)。这仍然需要,sudo
但是它不会提示输入密码。