Bash 스크립트에서 적절한 설치를 수행하는 방법은 무엇입니까?

Bash 스크립트에서 적절한 설치를 수행하는 방법은 무엇입니까?

일부 설치가 포함된 새 가상 머신을 설정하기 위한 스크립트를 만들려고 하는데 설치 명령( apt-get --yes install <package>)을 스크립트에 넣으면 항상 실패합니다.

E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)

sudo ./setup.sh스크립트는 루트( )로 실행됩니다.

apt프로세스를 확인하면 다음과 같은 결과를 얻습니다.

4 S root      2227     1  0  80   0 -  1126 -      07:33 ?        00:00:00 /bin/sh /usr/lib/apt/apt.systemd.daily update

0 S root      2231  2227  0  80   0 -  1126 -      07:33 ?        00:00:00 /bin/sh /usr/lib/apt/apt.systemd.daily lock_is_held update

문제는 이것이 스크립트에서 apts를 실행할 때만 발생한다는 것입니다. 동일한 명령을 수동으로 실행하면 이 문제가 발생하지 않습니다. 쉘 스크립트가 apt install을 다르게 실행합니까?

apt어쨌든 설치 프로그램을 잠그지 yum않고 쉘 스크립트에서 설치 프로그램을 실행하는 가장 좋은 방법은 무엇입니까 ?

답변1

sudo apt-get install <package> -y스크립트에 작성해야 합니다 . 스크립트 실행./setup.sh

하지만 물론 사용자는 sudoer(sudo 액세스)여야 합니다.

답변2

이는 설치 후 bash 스크립트를 추가로 실행하거나 이러한 프로세스 이름이 존재하지 않을 때까지 기다려야 함을 알려줍니다(apt는 잠금을 얻을 수 없습니다). 당신은 그것에 대해 악의적으로 프로세스를 종료하고 잠금 파일을 삭제한 다음 업데이트를 적절하게 받거나 완료될 때까지 기다릴 수 있습니다.

실패를 유발할 수 있는 것 - apt-get을 실행하면 다른 패키지를 설치하는 도중에 무언가를 설치합니다(이렇게 하지 말고 종속성을 사용하십시오).

관련 정보