パッケージをインストールするbashスクリプトの作成

パッケージをインストールするbashスクリプトの作成

私はbashについては初心者です。パッケージがインストールされていることを確認するスクリプトを作成しようとしています。そうでない場合は、パッケージをインストールします。私が何をしているのかよくわかりません。

#! /bin/bash
echo Installing/Checking packages from list

declare -a PKGS=("libreoffice", "firefox", "virtualbox", "vlc")
    
PKG_OK=$(dpkg-i -W --showformat='${Status}\n' PKGS |grep "install ok installed")


for i in "${PKGS[@]}"
do
    if [ "" = "$PKG_OK" ]; then
        echo "No $PKGS, installing the package now"
        sudo apt install $PKGS[@]
    fi
done

答え1

簡単に:

#!/bin/bash

pkgs=(libreoffice firefox virtualbox vlc)
sudo apt-get -y --ignore-missing install "${pkgs[@]}" 
  • すでにインストールされているパッケージは自動的に無視されます。
  • アクセスできない項目も無視されます。--ignore-missing
  • スクリプトの作成をapt-get好むapt

からman apt

aptはパッケージ管理システム用の高度なコマンドラインインタフェースを提供します。これはエンドユーザーインターフェイスとして設計されており、apt-get(8)などのより専門的なAPTツールよりも対話型の使用に適したいくつかのオプションがデフォルトで有効になっています。


個人的に使用する別のアプローチは、必要なすべてのパッケージをファイルに追加することです。一行ずつ:

packages.list:

moreutils
util-linux
strace

これにより、次のように電話できます。

apt-get -y --ignore-missing install $(< packages.list)

答え2

私はシェルスクリプトに初めて触れましたが、正直に言ってあなたの方法がわかりませんが、それが私がすることです。

#!/usr/bin/env bash

declare -a PKGS=(libreoffice firefox virtualbox vlc)
for i in "${PKGS[@]}"; do
    check=$(command -v "$i")
    if [[ $? -ne 0 ]]; then
        sudo apt install "$i"
    fi
done

関連情報