나는 컴퓨터 시작 시 시작 스크립트를 통해 비대화식으로 postfix 설치를 자동화하려고 노력해 왔습니다.
몇 가지 조사 끝에 필요한 구성이 있는 샘플 컴퓨터에 수동으로 설치한 다음 다음을 사용하여 시작 스크립트를 실행할 때 구성에 대한 올바른 대답을 얻을 수 있는 몇 가지 제안을 찾았습니다.
debconf-utils package command debconf-get-selections | grep postfix >preseed.cfg
문제는 하나의 구성, 즉 메일 이름에 있습니다. 이는 내 인스턴스 머신이 gcp 클라우드 호스트에 의해 예약되지 않은 방식으로 생성되고 처음에 첫 번째 구성을 통해 선택할 때 알 수 없기 때문입니다. 전달할 이름을 미리:
debconf-set-selections <<< 'postfix postfix/main_mail_type string "Local only"
이제 문제는 기본값을 유지하는 방법입니다. (유인 설치인 경우 이 내용을 확인하고 확인을 클릭하면 완료됩니다.)
답변1
쿠사로난다님 감사합니다! 이제 오류가 어디에 있는지 이해한 것 같습니다. 이 오류가 나타나기 전에 나는 기성 기대를 통해 일련의 질문과 답변 쌍을 보내는 방법으로 일부 예상 스크립트를 사용하고 그 안에 bash 하위 스크립트를 생성하여 간접적으로 대화식으로 postifiX를 설치하려고 시도했습니다. 나중에 나는 이 계획을 변경하고 Expect 스크립트를 완전히 제거하고 DEBIAN_FRONTEND="noninteractive" with debconf-set-selections command
. 나머지(아마도 아시다시피 postfix 설치는 루트 권한으로 실행해야 합니다), 실행할 때마다 'ERROR OPENNING TERMINAL: UKNOWN' 메시지와 함께 이 첨자를 호출할 때 예외가 발생하기 때문입니다. 여기에 있는 게시물 중 일부를 검토한 후 아래 첨자 코드를 수정하고 아래와 같이 일부 코드를 도입하면 이 문제를 해결할 수 있음을 발견했습니다.
UID=$(ID -U)
if [xUID != x0]
then
printf -v cmd_str '%q'"$0" "$@"
exec su -c "$cmd_str"
fi
#the rest of the script code
#continues hereunder
하위 스크립트를 변경한 후 선언을 제거하고 chmod를 활성화하고 #!/bin/bash 행에 대한 호출을 주석 처리하여 제거하고 해당 기능 부분을 기본 시작 스크립트에 프로그래밍 방식으로 포함시켰습니다. 이제 스크립트가 작동합니다. 그래야합니다.