쉘 스크립트에서 apt-get Upgrade 또는 apt Upgrade를 실행하고 "대화 상자"를 호출하면 입력이 중단됩니다.

쉘 스크립트에서 apt-get Upgrade 또는 apt Upgrade를 실행하고 "대화 상자"를 호출하면 입력이 중단됩니다.

루트로 로그인하고 명령줄에서 직접 "apt update"를 실행한 후 일부 패키지 업그레이드는 대화 상자를 표시합니다(파란색 배경에 흰색 텍스트, 빨간색 블록은 Tab 키를 사용하여 선택한 옵션을 강조 표시함) - Tab 사용 키를 눌러 선택하면 적절한 옵션이 입력되어 프로세스가 계속됩니다.

이제 apt 업그레이드 명령을 실행 가능한 Bourne 쉘 스크립트(apt-file update, apt 업그레이드 전 apt 업데이트와 같은 다른 명령과 함께)에 넣으면 apt 업그레이드 프로세스가 대화 상자를 호출하여 사용자 입력을 받습니다( 구성의 이전 수정 버전, 구성을 새 버전으로 교체 등) 키보드 입력이 무시됩니다. 문자는 터미널에 에코되지만 대화 프로세스에는 표시되지 않습니다.

당신이 할 수 있는 유일한 일은 다른 X 터미널로 가서, apt 프로세스를 종료하고, 잠금 파일을 삭제하고, dpkg --configure -a를 실행하고, apt-get -f 업그레이드를 실행하는 것입니다.

대화 상자가 호출될 때 stdin 리디렉션 및/또는 tty 모드가 원시 모드로 변경되어 문제가 발생한 것으로 생각됩니다.

그렇다면 apt가 대화 상자를 호출할 때 입력이 손실되지 않도록 몇 가지 필요한 설정을 사용하여 쉘 스크립트에서 apt를 실행할 수 있습니까?

이 문제는 Debian, Ubuntu 및 Linux Mint에서 흔히 발생합니다.

답변1

내 쉘 스크립트의 모든 오류.

내가 하고 있는 일은 echo Y | apt upgrade분명히 대화 상자를 호출할 때 리디렉션 문제를 일으키는 것입니다.

apt upgrade -y나는 항상 또는 을 해야 합니다 wajig upgrade -y.

처음 시도했을 때 apt -y upgrade구문 오류에 대해 불평했습니다. 그래서 저는 제가 구현했다는 사실조차 잊어버린 끔찍한 해킹 방법을 사용했습니다.

그러한 문제가 발생하지 않도록 다른 사람들이 주의를 기울이도록 하십시오.

관련 정보