我需要这个快速安装memcached作为设置测试服务器的Fabric脚本的一部分。我想在这里记录下来供将来参考。在Fabric中,如何检查Debian或Ubuntu软件包是否存在,如果不存在则安装它?
2
A
回答
10
将此从这superuser comment和stackoverflow answer加在一起。 (注:我运行为root
而不是使用sudo
):
def package_installed(pkg_name):
"""ref: http:superuser.com/questions/427318/#comment490784_427339"""
cmd_f = 'dpkg-query -l "%s" | grep -q ^.i'
cmd = cmd_f % (pkg_name)
with settings(warn_only=True):
result = run(cmd)
return result.succeeded
def yes_install(pkg_name):
"""ref: https://stackoverflow.com/a/10439058/1093087"""
run('apt-get --force-yes --yes install %s' % (pkg_name))
def make_sure_memcached_is_installed_and_running():
if not package_installed('memcached'):
yes_install('memcached')
with settings(warn_only=True):
run('/etc/init.d/memcached restart', pty=False)
0
至于检查是否安装包(运行在本地测试目的)
import re
def is_package_installed(pkgname):
output = local('dpkg -s {}'.format(pkgname), capture=True)
match = re.search(r'Status: (\w+.)*', output)
if match and 'installed' in match.group(0).lower():
return True
return False
1
Fabtools是一个非常有用的我添加到所有Fabric项目中的Python模块。
它有一个方法deb.is_installed,检查是否安装了Debian软件包。在我的所有项目中使用这种标准方法是很好的,Fabtools还提供了一些您可能会喜欢的其他有用的软件包管理助手。
相关问题
- 1. 如何检查表中是否存在值,如果存在则删除它?
- 2. 软件包管理器命令,在Ubuntu/Debian中返回0或1(如果安装了软件包)
- 3. 检查div是否存在,如果不存在则重定向
- 4. Python 3.5.1:如何检查openpyxl软件包是否存在,如果不存在如何下载并在脚本内“安装”它?
- 5. 如何检查包是否已安装在Ubuntu?
- 6. 检查是否安装了软件包
- 7. 如何检查软件是否安装在C#中?
- 8. 如何让Python检查文件是否存在,如果不存在则创建它?
- 9. 如何在debian whitout sudo权限中安装软件包?
- 10. 在linux/ubuntu中安装软件包
- 11. 如何在moodle安装开始时检查mcrypt是否存在
- 12. 安装前检查Java是否存在
- 13. 检查是否存在++,如果不是,则获得最近
- 14. 在Ubuntu中安装软件包是否需要互联网?
- 15. 如何检查R是否已安装在Ubuntu中?
- 16. 如何在sqlite中插入检查项是否存在,如果存在则更新它,如果不存在,则插入
- 17. 安卓与Sqlite - 如何检查表是否存在,如果空
- 18. 如何检查object.subobject.subsubobject是否存在或不在JavaScript中?
- 19. 如何检查路径是否存在或不在java中?
- 20. Python:如何在我的包或存储库中安装软件包?
- 21. 如何在高山上安装Debian软件包
- 22. 如何在脱机Debian机器上安装R软件包?
- 23. 检查包是否存在
- 24. 检查Ant脚本中是否存在软件包?
- 25. 如果C:\ Python27已安装在C:\ path \ Anaconda3 \ ...中,如何安装软件包(或使用现有软件包)?
- 26. 用于在C中查询已安装(Debian)软件包的库?
- 27. 检查文件是否存在,如果存在则将其删除
- 28. Dexie - 检查记录是否存在,如果不存在则将其初始化
- 29. 如何检查程序/软件包是否安装在操作系统上?
- 30. 检查一个项目是否存在,如果它不存在错误
非常好,这正是我想要做的。你有GitHub上的任何Fabfile或任何我可以从中学习?提前欢呼。 :) – tmaster 2013-09-02 12:01:25