3

これは、テスト サーバーをセットアップする Fabric スクリプトの一部として memcached をすばやくインストールするために必要でした。今後の参考のためにここに記録しておくことにしました。

4

3 に答える 3

11

このスーパーユーザーのコメントとこのスタックオーバーフローの回答からこれをつなぎ合わせました。(注: を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)
于 2013-02-15T22:38:13.840 に答える
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
于 2016-07-04T23:40:51.833 に答える