2013-07-08 11 views
12

私はPythonに関してはかなり初心者です。つまり、Linuxパッケージをいくつかインストールするスクリプトを作ろうとしています。まず、hereのようにサブオープンを使用しようとしました。これは最終的には機能しますが、私はpython-apt APIを見つけました。私は大きなファンではなく、ホイールを再発明していないので、試してみることにしました。python-apt APIを使ってパッケージをインストールするには

python-aptを使用してパッケージをインストールする場合の例/チュートリアルを検索しようとすると問題が発生します。ドキュメントを検索するパッケージをインストールするいくつかの方法があるPackageManagerクラスが見つかりました。これは簡単にそれを動作するようには思えない

apt_pkg.PackageManager.install("python") 

、インストール方法が代わりにプレーンな文字列のapt_pkg.PackageManagerを期待:私はこの作業を取得するためにいくつかの簡単なコードを試してみました。したがって、より多くを見て、I found this exampleは有望に見えますが、私は実際に何が起こっているのか分からないので少し使いこなしています。

次に、誰かがpython-aptを使ってパッケージをインストールしようとしましたか、普通の古いサブオープンスタイルを使うべきでしょうか?

ありがとうございます!

答えて

29

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

はここlibjs-yui-docパッケージをインストールしますスクリプトの例です:apt-getの使用と同様に

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

import apt 
import sys 

pkg_name = "libjs-yui-doc" 

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

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

$ sudo ./aptinstall.py 

あなたはより大きなスクリプトの一部としてパッケージをインストールしようとしている場合は、それだけで必要な最小限の時間のためにroot権限を高めるために、おそらく良いアイデアです。

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

+0

これは私が探していたものです。オースティン、ありがとうございます。D – AlejandroVK

+2

新しいキャッシュを利用するには、おそらく 'cache.update()'の後に 'cache.open()'を呼び出すといいでしょう。そうしないと、古いキャッシュが使用され、奇妙なバグにつながる可能性があります。 – lrsjng

+0

インストールの進捗状況を把握する方法はありますか? – answerSeeker

関連する問題