我找到了我需要的代码。来自此链接: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
在终端中查看事件进程,但我没有看到任何与包管理器相关的事件进程(我对此不是百分百确定,因为我不知道的任何进程都可能与包管理器相关) .但是我怎么知道呢?) 总而言之,我启动了计算机并只打开了终端。然后我输入 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
我通过在终端中发出命令来删除锁定: 须藤 rm/var/lib/dpkg/lock 也没有成功。
我该如何解决这个问题?任何想法将不胜感激。
最佳答案
请尝试在 ps
中查找 update-manager
。它会定期自动运行,因此可能会锁定 apt 数据库。
关于python - 尝试使用 python-apt API 安装包时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27595303/