apt-getでインストールするパッケージのリストを確認してください
質問
私はPerlでubuntuのポストインストールスクリプトを書いています(見たのと同じスクリプト ここ)。手順の1つは、パッケージのリストをインストールすることです。問題は、その場合です apt-get install
スクリプトがひどく死ぬパッケージのいずれかで、さまざまな方法でいくつかの異なる方法で失敗します。それが起こらないようにしたいと思います。
これは、その方法のために起こります apt-get install
好きではないパッケージに失敗します。たとえば、私がナンセンスな単語をインストールしようとするとき(つまり、間違ったパッケージ名に入力されました)
$ sudo apt-get install oblihbyvl
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package oblihbyvl
しかし、代わりにパッケージ名が廃止されている場合(PPAからハンドブレーキをインストールします)
$ sudo apt-get install handbrake
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package handbrake is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'handbrake' has no installation candidate
$ apt-cache search handbrake
handbrake-cli - versatile DVD ripper and video transcoder - command line
handbrake-gtk - versatile DVD ripper and video transcoder - GTK GUI
などなど...
結果を解析しようとしました apt-cache
と apt-get -s install
インストールを行う前にすべての可能性をキャッチしようとするためには、実際のインストールシステムコマンドに障害を継続するための新しい方法を見つけ続けているようです。
私の質問は、Perl(モジュールなどのモジュールなど、可能であればモジュールのインストールを避けることを避けたいと思います。インストールする前にパッケージをすべてインストールできることを確認してください。ユーザーが何をすべきかを決定できるように、何らかの方法で優雅に失敗しない場合は、確実にできるようにしますか?
nb私は次の線に沿って何かをしています
my @list_of_install_candidates = (...);
my @to_install = grep { my $output = qx{ apt-get -s install $_ }; parse_output($output); } @list_of_install_candidates;
system('apt-get', 'install', @to_install);
解決
あなたは試してみるかもしれません apt-cache policy
. 。例:
$ apt-cache policy handbrake
handbrake:
Installed: (none)
Candidate: (none)
Version table:
$ apt-cache policy foo
N: Unable to locate package foo
$ apt-cache policy openbox
openbox:
Installed: 3.4.11.1-1
Candidate: 3.4.11.1-1
Version table:
*** 3.4.11.1-1 0
500 http://mirrors.xmission.com/ubuntu/ maverick/universe i386 Packages
100 /var/lib/dpkg/status
ブランク以外のバージョンのテーブルがあるものはすべてインストール可能です。
所属していません StackOverflow