22

私はPythonに関してはかなりの初心者なので、事前に許してください:)。とは言うものの、私はとりわけ、いくつかの Linux パッケージをインストールするスクリプトを作成しようとしています。最初に、ここで説明したように subopen を使用しようとしました。これは最終的には機能する可能性がありますが、python-apt APIに出くわしました。私は大ファンでも車輪の再発明でもないので、試してみることにしました。

python-apt を使用してパッケージをインストールする際の例/チュートリアルを見つけようとすると、問題が発生します。ドキュメントを検索すると、パッケージをインストールするメソッドがいくつかあるPackageManagerクラスが見つかりました。これを機能させるためにいくつかの簡単なコードを試しました:

apt_pkg.PackageManager.install("python")

これは簡単には機能しないようです。インストール メソッドは、プレーンな文字列の代わりに apt_pkg.PackageManager を想定しています。したがって、もう少し調べてみると、有望に見えるこの例が見つかりましたが、そこで何が起こっているのかを本当に理解していないため、使用するのは少し気が進まない.

次に、誰かが python-apt を使用してパッケージをインストールしようとしたことがありますか、それとも単純な古いサブオープン スタイルを使用する必要がありますか?

ありがとう!

4

1 に答える 1

45

Debian パッケージのaptモジュールを使用することをお勧めします。python-aptこれは、基礎となる C/C++libapt-xxxライブラリの上位レベルのラッパーであり、Pythonic インターフェイスを備えています。

libjs-yui-docパッケージをインストールするスクリプトの例を次に示します。

#!/usr/bin/env python
# aptinstall.py

import apt
import sys

pkg_name = "libjs-yui-doc"

cache = apt.cache.Cache()
cache.update()
cache.open()

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-get、APT キャッシュにアクセスして変更するには、スーパーユーザー権限で実行する必要があります。

$ sudo ./aptinstall.py

大規模なスクリプトの一部としてパッケージのインストールを試みる場合は、必要な最小限の時間だけ root 権限に昇格することをお勧めします。

/usr/share/pyshared/apt/progress/gtk2.py:_test()GTK フロントエンドを使用してパッケージをインストールする方法を示す関数の小さな例を見つけることができます。

于 2013-07-09T00:16:36.237 に答える