23. interface up/down
• interface 의 up/down 이벤트에 따른 처리 로직을 등록
• if-down, if-post-down, if-pre-up, if-up 에 대한 처리 가능
• 예를 들어, ssh 는 if-up 이 되면, ssh 서비스를 재시작함
25. cron
• Cron 설정 파일을 자동으로 등록
• [패키지].cron.daily / *.cron.weekly / *.cron.d/ 와 같은 형식
26. logcheck / logrotate
• logcheck 와 logroate 설정 파일을 시스템에 등록
• /etc/logcheck/ 디렉토리와 /etc/logrotate.d/ 디렉토리에 저장됨
• [패키지].logcheck.[옵션] / [패키지].logrotate
27. modules
• 커널 모듈이 로드될 수 있도록 해줌
• [패키지].modprobe
• dh_make 에서 모듈로 설정하는 것을 권장
53. maintscript (removing conffile)
• 설정 파일 내용
• rm_conffile [설정 파일] [이전 버전] [패키지] -- ”$@”
• ex) rm_conffile /etc/kssim.conf 2.0.0 kssim -- “$@”
54. maintscript (removing conffile)
• 처리 과정
• preinst 에서 파일 수정이나 이름 변경을 확인
• 사용자가 별도로 수정한 경우, [패키지].dpkg-backup 으로 이름 변경
• 수정하지 않았으면, [패키지].dpkg-remove 로 이름 변경
• postinst 에서 후처리
• dpkg-backup 파일이 있으면, 원복하고 패키지의 최신 설정을 dpkg-backup 으로 변경
• dpkg-remove 는 삭제
• 패키지 설치가 실패하면, postrm 에서 원래 설정으로 원복
• dpkg-remove 는 삭제
55. maintscript (renaming conffile)
• 설정 파일 내용
• mv_conffile [예전 설정 파일] [새로운 설정 파일] [이전 버전] [패키지] -- “$@”
• ex) mv_conffile /etc/kssim.conf /etc/kssim1.conf 2.0.0 kssim -- ”$@”
56. maintscript (renaming conffile)
• 처리 과정
• preinst 에서 파일 이름 변경을 확인
• 사용자가 별도로 수정한 경우, 파일을 건드리지 않음
• 수정하지 않았으면, [패키지].dpkg-remove 로 이름 변경
• postinst 에서 후처리
• dpkg-remove 는 삭제
• 이전 설정 파일이 남아있으면, 새로운 설정 파일 이름으로 변경
• 패키지 설치가 실패하면, postrm 에서 원래 설정으로 원복
• dpkg-remove 가 원복됨
57. maintscript (switch symlink to directory)
• 설정 파일 내용
• symlink_to_dir [원본 경로] [링크 경로] [버전] [패키지] -- “$@”
• ex) symlink_to_dir /usr/kssim /usr/share/kssim [2.0.0] [패키지] -- “$@”
58. maintscript (switch symlink to directory)
• 처리 과정
• preinst 에서 이전 파일을 가리키는 링크가 있는 지 확인
• 없으면, 아무것도 하지 않음
• 있으면, [경로].dpkg-backup 으로 변경
• postinst 에서 후처리
• dpkg-backup 은 삭제
• 패키지 설치가 실패하면, postrm 에서 원래 설정으로 원복
• dpkg-backup 이 원복됨
59. maintscript (switch directory to symlink)
• 설정 파일 내용
• dir_to_symlink [원본 경로] [링크 경로] [버전] [패키지] -- “$@”
• ex) dir_to_symlink /usr/kssim /usr/share/kssim [2.0.0] [패키지] -- “$@”
60. maintscript (switch directory to symlink)
• 처리 과정
• preinst 에서 아래 조건을 검사후, 해당하면 아무 작업하지 않음
• 디렉토리가 존재하는지
• conffiles 을 가지고 있는지
• 다른 패키지가 소유한 경로를 포함하고 있는지
• 로컬로 생성된 경로를 포함하고 있는지
• 해당하지 않으면, [원본경로].dpkg-backup 으로 변경 후, 원본경로를 다시 생성
61. maintscript (switch directory to symlink)
• 처리 과정
• postinst 에서 [원본경로].dpkg-backup 이 있고, [원본경로]가 있는 경우,
• [원본경로]에 새로 생성된 파일을 [링크 경로]로 옮김
• 비어있는 [원본 경로]를 [링크 경로]의 심볼릭 링크로 변경
• [path-name].dpkg-backup 파일 삭제
• 패키지 설치가 실패하면, postrm 에서 원래 설정으로 원복
• [pathname].dpkg-backup 의 경로를 [pathname] 으로 변경
62. maintscript (build dependency)
• control 파일의 dpkg 에 대한 빌드 의존성 필요
• rm_conffile 과 mv_conffile 은 1.15.7.2 이상
• symlink_to_dir 과 dir_to_symlink 는 1.17.14 이상
• Pre-Depends: dpkg (>= 1.17.14)
63. 설정 파일 관리
• Debian Package 에서 설정 파일을 관리하는 방법이 몇가지 있음
• conffiles
• debconf-generated configuration files
• ucf (update configuration file)
64. conffiles
• compat 2 이하에서는 [패키지].conffiles 로 관리했음
• compat 3 이후는 /etc 디렉토리 하위에 설치되는 녀석에 자동 적용
• 사용자가 커스터마이징 한 내용과 패키지에서 설치되는 내용을 관리
68. UCF (Udpate Configuration File)
• Debian 에서 Configuration 파일을 업데이트하는 방법중 하나
• 통상적으로 /usr/share/ 하위의 파일을 보존하는 용도로 사용
• [패키지].ucf 파일을 만들어서 관리
• Control 파일의 의존성 중, ${misc:Depends} 에 포함됨
• debhelper 에서 처리되어 #DEBHELPER# 로 치환됨
69. UCF (Udpate Configuration File)
• 아래와 같은 ucf 명령어를 debhelper 가 wrapping
• ucf /usr/share/kssim/conf /etc/kssim.conf
• “/etc/ucf.conf” 에서 기본 설정 값들을 처리할 수 있음