debconf-set-selections의 변수 이름을 찾는 방법은 무엇입니까?

debconf-set-selections의 변수 이름을 찾는 방법은 무엇입니까?

mysql어떤 루트 비밀번호를 설정하고 싶은지와 같은 구성 질문을 받지 않고 스크립트에서 설치 하고 싶다고 가정해 보겠습니다 apt. 그런 다음 debconf변수를 미리 설정합니다 .

echo mysql-server-5.5 mysql-server/root_password password xyzzy | debconf-set-selections
echo mysql-server-5.5 mysql-server/root_password_again password xyzzy | debconf-set-selections

나는 이것을 튜토리얼에서 얻었습니다. 나에게 불분명한 점은 이 사람이 변수 이름을 어떻게 찾았는가입니다. mysql-server-5.5 mysql-server/root_password password와 를 별도로 설정해야 한다는 것을 어떻게 알 수 있나요 mysql-server-5.5 mysql-server/root_password_again?

.deb발행을 통해 패키지를 추출 할 수 있다는 것을 알고 있지만 dpkg-deb -R package.deb EXTRACTDIR/이러한 변수가 어디에 저장되어 있는지 볼 수 없습니다.

debconf다른 패키지의 변수를 어떻게 찾을 수 있나요 ?

답변1

특정 변수를 얻을 수 있습니다설치됨패키지 이용debconf-show packagename

전임자.

$ sudo debconf-show mysql-server-5.7
* mysql-server/root_password: (password omitted)
* mysql-server/root_password_again: (password omitted)
  mysql-server-5.7/start_on_boot: true
  mysql-server/no_upgrade_when_using_ndb:
  mysql-server/password_mismatch:
  mysql-server-5.7/really_downgrade: false
  mysql-server-5.7/nis_warning:
  mysql-server-5.7/postrm_remove_databases: false
  mysql-server-5.7/installation_freeze_mode_active:

를 사용하여 변수가 있는 데이터베이스에 설치된 모든 패키지 목록을 얻을 수 있으므로 debconf-show --listowners패키지 이름이 무엇인지 확실하지 않은 경우 다음과 같이 할 수 있습니다.

# debconf-show --listowners | grep mysql | xargs debconf-show
* mysql-server/root_password: (password omitted)
* mysql-server/root_password_again: (password omitted)
  mysql-server-5.7/postrm_remove_databases: false
  mysql-server-5.7/nis_warning:
  mysql-server-5.7/installation_freeze_mode_active:
  mysql-server/password_mismatch:
  mysql-server-5.7/start_on_boot: true
  mysql-server/no_upgrade_when_using_ndb:
  mysql-server-5.7/really_downgrade: false

답변2

debconf사용중인 내용을 확인할 수 있습니다 debconf-get-selections. 이는 실제로 설치를 완료한 경우에 유용합니다.

또는 다음 설정이 사용됩니다.패키지 관리자 스크립트. dpkg-deb실행한 명령을 사용하여 DEBIAN하위 디렉토리에 위치합니다 EXTRACTDIR.

예를 들면 다음과 같습니다 lightdm.

$ grep db_ lightdm/DEBIAN -R
lightdm/DEBIAN/postrm:  db_purge
lightdm/DEBIAN/prerm:    db_unregister shared/default-x-display-manager
lightdm/DEBIAN/prerm:    if db_get shared/default-x-display-manager; then
lightdm/DEBIAN/prerm:      db_metaget shared/default-x-display-manager owners
lightdm/DEBIAN/prerm:      db_subst shared/default-x-display-manager choices "$RET"
lightdm/DEBIAN/prerm:      db_get shared/default-x-display-manager
lightdm/DEBIAN/prerm:     if db_get "$RET"/daemon_name; then
lightdm/DEBIAN/prerm:        db_fset shared/default-x-display-manager seen false
lightdm/DEBIAN/prerm:        db_input critical shared/default-x-display-manager || true
lightdm/DEBIAN/prerm:        db_go
lightdm/DEBIAN/prerm:          db_get shared/default-x-display-manager
lightdm/DEBIAN/prerm:          db_get "$RET"/daemon_name
lightdm/DEBIAN/postinst:  if db_get shared/default-x-display-manager; then
lightdm/DEBIAN/postinst:    if db_get "$DEFAULT_DISPLAY_MANAGER"/daemon_name; then
lightdm/DEBIAN/postinst:db_stop
lightdm/DEBIAN/config:if db_metaget shared/default-x-display-manager owners; then
lightdm/DEBIAN/config:if db_metaget shared/default-x-display-manager choices; then
lightdm/DEBIAN/config:  db_subst shared/default-x-display-manager choices "$OWNERS" || :
lightdm/DEBIAN/config:  db_fset shared/default-x-display-manager seen false || :
lightdm/DEBIAN/config:    db_set shared/default-x-display-manager "$CURRENT_DEFAULT"
lightdm/DEBIAN/config:  if db_get shared/default-x-display-manager; then
lightdm/DEBIAN/config:    db_set shared/default-x-display-manager lightdm
lightdm/DEBIAN/config:    db_fset shared/default-x-display-manager seen true
lightdm/DEBIAN/config:    db_input high shared/default-x-display-manager || :
lightdm/DEBIAN/config:    db_go || :
lightdm/DEBIAN/config:if db_get shared/default-x-display-manager; then

다양한 함수는 에서 얻은 db_*처리를 위한 도우미 함수입니다 .debconf/usr/share/debconf/confmodule

lightdm그러므로 의 경우에는 shared/default-x-display-manager중요한 debconf열쇠이다.

관련 정보