我找到了我需要的代码。它来自以下链接:How to install a package using the python-apt API
#!/usr/bin/env python
# aptinstall.py
import apt
import sys
pkg_name = "libjs-yui-doc"
cache = apt.cache.Cache()
cache.update() # error is in this line
pkg = cache[pkg_name]
if pkg.is_installed:
print "{pkg_name} already installed".format(pkg_name=pkg_name)
else:
pkg.mark_install()
try:
cache.commit()
except Exception, arg:
print >> sys.stderr, "Sorry, package installation failed [{err}]".format(err=str(arg))
然而我无法使其发挥作用。我在网上搜索了这个问题。据说应该没有包管理器,apt,pip等活动才能使用这段代码。但是,我的计算机中没有打开包管理器,apt,pip等。我认为当计算机启动时,某些包管理器可以处于活动状态。所以我输入了
ps -aux
终端中的并查看活动进程,但我没有看到任何与包管理器相关的活动进程(我不是%100确定这个,因为我不知道的任何进程都可能与包管理器有关但是我怎么知道呢?)总结一下,我启动了电脑,只打开了终端。然后我键入python aptinstall.py并按Enter键。我收到以下错误:
Traceback (most recent call last):
File "aptinstall.py", line 7, in <module>
cache.update()
File "/usr/lib/python2.7/dist-packages/apt/cache.py", line 397, in update
raise LockFailedException("Failed to lock %s" % lockfile)
apt.cache.LockFailedException: Failed to lock /var/lib/apt/lists/lock
我通过在终端中输入命令来删除锁定: sudo rm / var / lib / dpkg / lock 它也不起作用。
我该如何解决这个问题?任何想法都将不胜感激。
答案 0 :(得分:1)
请尝试在update-manager
中查找ps
。它会定期自动运行,因此可能会锁定apt db。
答案 1 :(得分:1)
造成此错误的原因有三种。
1 - 如前所述,如果任何包管理器正在运行(例如; pip,apt-get,synaptic等),它会给出错误。
2 - 如果您在虚拟机中使用ubuntu,则会导致同样的错误。
3 - 如果您运行的程序没有root权限,则会导致相同的错误。例如,如果您使用“python aptinstall.py”运行程序,则会出现错误,使用“sudo python aptinstall.py”运行程序是正确的。