패키지를 설치하는 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

관련 정보