apt-getでインストールするパッケージのリストを確認してください

StackOverflow https://stackoverflow.com/questions/4628585

  •  08-10-2019
  •  | 
  •  

質問

私は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-cacheapt-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

ブランク以外のバージョンのテーブルがあるものはすべてインストール可能です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top