Django 시스템용 .deb 설치 프로그램이 있는데 소프트웨어를 설치한 사람에게 몇 가지 질문이 있습니다. 이를 수행하는 여러 가지 방법을 볼 수 있으며 데비안 패키지에 대한 모범 사례가 무엇인지 알고 싶습니다.
종종 debconf가 확실한 솔루션입니다. 그러나 이 경우에는 데비안이 이를 기억하고 이후의 모든 업그레이드에 적용하도록 하기보다는 매번 이 질문을 하고 싶습니다. 그 이유는 문제의 성격과 관련이 있습니다. 구체적으로는 "지금 데이터베이스 마이그레이션을 적용하시겠습니까?", "데모 데이터베이스를 구축하시겠습니까?"라는 질문이 나왔습니다.
이제 이 모든 작업은 설치 후 수동으로 수행할 수 있지만 지금까지의 경험에 따르면 이 단계는 잊어버리기 쉬우므로 힌트를 드리고 싶었습니다. 가끔 다른 시스템에서 데이터베이스를 마이그레이션해야 하는 경우가 아니면 마이그레이션 단계를 자동화하겠습니다. 마이그레이션을 적용하기 전에 수행하는 것이 더 쉽습니다. "데모 데이터베이스" 질문은 일반적으로 첫 번째 설치에만 사용되므로 마이그레이션 상황에 따라 다릅니다. 그러나 우리는 데비안이 이 선택 사항을 기억하고 매번 적용하는 것을 원하지 않습니다. 기존 사용 중인 데이터베이스가 손상될 수 있기 때문입니다.
그래서 나는 정통 데비안 스타일 접근 방식이 무엇인지 궁금합니다. postinst 스크립트 내에서 쉘 프롬프트를 사용할 수 있지만 더 좋은 방법이 있다면 가능한 한 빨리 그렇게 할 것입니다. "다시 질문"에 대해 알고 있다는 점을 덧붙여야 하지만 이는 전역 설정으로만 작동하는 것 같으며 이 패키지에 대해 이 작업을 수행하는 것이 좋습니다.
마지막으로, 이것은 내부 시스템이며 공개 저장소에서 호스팅되지 않으므로 무인 설치나 비 bash 설치 환경과 같은 고려 사항에 대해 지나치게 걱정하지 않습니다.
이것은 몇 주 동안 나를 괴롭혔습니다. 어떤 도움이라도 대단히 감사하겠습니다.
답변1
"데비안과 같은" 방식으로 상황을 처리할 수 있도록 문제에 대한 정통적인 접근 방식이 있습니다.
debconf 질문을 재설정하여 매번 다시 표시되도록 할 수 있습니다. db_reset
이전 답변(필요한 경우)을 잊어버리고 db_fset ... seen false
이전에 표시된 질문을 잊어버린 경우입니다. 이렇게 하면 마이그레이션을 적용할지 여부를 매번 물어볼 수 있습니다.
데모 데이터베이스 문제를 처리하기 위해 데모 데이터베이스 설치 여부를 기억하는 숨겨진 설정을 추가했습니다. 이렇게 하면 일반적인 debconf 메커니즘을 사용하여 질문이 있는지 기억하여 첫 번째 설치에만 표시할 수 있으며, 그런 다음 데모 데이터베이스가 이미 설치되어 있는지 확인하여 두 번 설치하는 것을 방지할 수 있습니다.
답변2
데모 데이터베이스를 별도의 패키지로 분리했습니다. 이는 초보 사용자가 사용하는 것이지만 이 기능과 지원 코드를 프로덕션에서 제외하고 싶습니다. 업데이트만 하고 싶은데 데모 컨텐츠를 설치하겠냐고 물어보는게 정말 짜증납니다.
나는 업데이트 질문을 일반적인 DebConf 질문으로 취급하지만 그 반대로 우선 순위가 낮고(따라서 일반적으로 숨겨짐) 기본적으로 데이터베이스 마이그레이션이 필요한 경우 업데이트를 중지해야 하는지 묻는 질문이 없습니다. 이를 통해 관리자는 완전히 자동화된 프로세스를 구성하거나 마이그레이션 외에 완전히 자동화된 프로세스를 구성할 수 있습니다.
대부분의 업데이트에는 마이그레이션이 필요하지 않으므로 사용자를 귀찮게 할 필요가 없으며 사용자에게 이전 시스템을 실행 중인 상태로 두고 업데이트를 중단할 수 있는 옵션을 제공하면 안전한 선택을 할 수 있습니다.