web-dev-qa-db-ja.com

パッケージのリストは、まだインストールされていない場合にのみインストールします

私はできるだけセットアップを自動化しようとしています。

これを行うには、たとえば、banshee wireshark audacity Thunderbird thunderbird-lightning Calibre deluge unison-gtk usb-creator-kde Ding digikamchrome-browser bleachbit soundconverter kdenlive firefox-kde-support vlc kwrite openjdkをインストールするパッケージのリストがあります。 -6-jre icedtea6-plugin virtualbox virtualbox-guest-additions-iso。

Apt-getを呼び出してこれらのパッケージをインストールする小さなbashスクリプトを書きたいonlyまだインストールされていない場合。

現在、私はこれを持っていますが、それは動作しません:

dpkg -s "$1" > /dev/null 2>&1 || apt-get -y install "$1"、($ 1はリストです)

7
happyskeptic

apt-getはすでにインストールされているパッケージをかなり静かにスキップするので、なぜ特別な扱いを受ける必要があるのか​​分かりませんか?すなわち:

root@bun:~# apt-get -y install  vlc
Reading package lists... Done
Building dependency tree       
Reading state information... Done
vlc is already the newest version.

これがそのままではうまくいかない特別な理由はありますか?

3
Caesium

ライブセッションセットアップスクリプトの場合、次のようなものがありました。

# returns 1 if the package was already installed and 0 otherwise. The first
# argument is the package name to be checked (and installed if not already).
# other arguments are passed to apt-get
try_install() {
    dpkg -l "$1" | grep -q ^ii && return 1
    apt-get -y install "$@"
    return 0
}

if try_install openssh-server; then
    sed /etc/ssh/sshd_config 's/UsePAM yes/UsePAM no/' -i
    reload ssh
fi
try_install screen && wget lekensteyn.nl/files/screenrc -O ~/.screenrc
# passing extra options and package names to apt-get
try_install firefox --no-install-recommends firefox-kde-support

アプリケーションが既にインストールされている場合、構成されていると想定しました。

1
Lekensteyn

私はこのサイトで私の質問に戻って行き、使用したコマンドを投稿したことがないことに気付きました:

export DEBIAN_FRONTEND=noninteractive # stop annoying prompts
dpkg -s "$@" > /dev/null 2>&1 || apt-get -qq -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install "$@"
1
happyskeptic

dpkg --get-selections > installed-software経由でインストール済みのパッケージのリストを保存してみてください。

これで、他のツールを使用して、インストールするパッケージを見つけることができます。例:

vadik@ubuntu:~$ cat installed-software | grep "indicator-weather"
indicator-weather               install
vadik@ubuntu:~$ cat installed-software | grep "indicator-cpufreq"
vadik@ubuntu:~$ 

ご覧のとおり、grepを使用して、indicator-weatherまたはindicator-cpufreqがインストールされているかどうかを確認できます。

0
Vadim Rutkovsky