나는 다음의 답변을 읽었습니다.이 게시물하지만 그것은 내 문제에는 효과가 없는 것 같습니다.
wget에서 stdin을 통해 bash 스크립트를 실행하고 있습니다.
wget -O - http://serverip/subfolder/script | sudo bash
을 사용해 보았지만 apt-get -y --force-yes install <packages..> || true
나열된 것 중 하나가 apt-get에 의해 설치된 경우 여전히 스크립트가 종료됩니다.
나열된 패키지가 모두 이미 설치되어 있으면 스크립트가 종료되지 않습니다.
내가 가지고 있고 패키지를 설치하는 경우에도 동일한 일이 발생합니다 apt-get upgrade
. 스크립트가 종료됩니다.
작동하는 것 같은 또 다른 스크립트 세트가 있습니다. 해당 시나리오에서 설치 스크립트는 스크립트를 다운로드하고 실행한 bash <scriptname>
다음 스크립트를 삭제하는 스텁일 뿐입니다. 스크립트 자체는 sudoing을 통해 권한을 높입니다. apt-get
여기서는 예상대로 작동합니다.
스크립트 종료를 방지하는 방법에 대한 통찰력을 주시면 apt-get
감사하겠습니다.
답변1
사람들이 다음 작업을 중단했으면 합니다 wget | bash
. 그것은 단지 어리석은 일이며 여기에서와 같이 의도하지 않은 효과를 가지고 있습니다. bash가 있으므로 해당 기능을 활용하십시오. 특히 프로세스 대체는 다음과 같습니다.
bash <(wget -O - http://serverip/subfolder/script)
답변2
apt-get
아마도 표준 입력을 탐욕스럽게 읽는 것을 중단해야 할 것입니다 . /dev/null
읽기에 eof를 반환하는 파일인 stdin을 로 리디렉션하여 이를 수행합니다 . 예:
apt-get -y --force-yes install ... </dev/null