bash 스크립트를 통해 일부 패키지의 설치를 자동화하고 싶습니다. 기존 chroot 파일 시스템에 설치됩니다. 그러나 일부 패키지에는 쉽게 자동화할 수 없는 대화형 사용자 입력(예: ddclient를 사용하려면 동적 DNS 서비스 공급자를 선택해야 함)이 포함되어 있습니다.
debconf 사전 설정은 대화형 패키지 설치를 자동화하는 가장 일반적인 방법인 것 같지만, 내가 읽은 모든 예제는 개별 패키지뿐만 아니라 전체 데비안 설치에 작동한다는 것을 나타냅니다.
나는 이것을 따라왔다대화형 데비안 패키지 설치를 자동화하는 방법하지만 구체적으로 설명하지는 않습니다.
미리 감사드립니다!
답변1
프로비저닝은 Ansible 또는 Salt와 같은 "적절한" 배포 및 구성 관리 도구를 사용하지 않고도 debconf
Debian 패키지를 사전 구성하는 데 충분합니다 . 이는 전체 설치에만 국한되지 않고 원하는 수의 패키지에 적용할 수 있습니다.
시작하는 가장 쉬운 방법은 설치할 패키지를 설치하고 질문에 답하여 수동으로 구성하는 것입니다. 그런 다음 debconf-get-selections
(패키지에서 ) 실행하면 debconf-utils
방금 설치한 패키지에 대한 설정을 포함하여 저장된 모든 설정과 주석의 질문 텍스트가 나열되므로 프로비저닝하려는 질문을 쉽게 찾을 수 있습니다. 형식은
<package> <debconf key> <type> <value>
예를 들어
# System's default paper size:
# Choices: letter, a4, note, legal, executive, halfletter, halfexecutive, 11x17, statement, folio, quarto, 10x14, ledger, tabloid, a0, a1, a2, a3, a5, a6, a7, a8, a9, a10, b0, b1, b2, b3, b4, b5, c5, DL, Comm10, Monarch, archE, archD, archC, archB, archA, flsa, flse, csheet, dsheet, esheet
libpaper1 libpaper/defaultpaper select a4
사전 설정하려는 설정을 파일에 저장한 다음 첫 번째 인수로 명명된 로컬에서 사용 가능한 파일을 사용하거나 해당 내용을 파이핑하여 대상 시스템 debconf-set-selections
( debconf
패키지)에서 실행합니다.
cat preseed-file | ssh remotehost debconf-set-selections
이 작업을 수행앞으로대상 시스템에 패키지를 설치합니다.