尝试使用python-apt API安装软件包时出错

时间:2014-12-22 00:35:11

标签: python ubuntu apt

我找到了我需要的代码。它来自以下链接: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 它也不起作用。

我该如何解决这个问题?任何想法都将不胜感激。

2 个答案:

答案 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”运行程序是正确的。