다음을 위해 Debian 서버용 설치 ISO를 만들라는 요청을 받았습니다:
- 특정 패키지에는 사전 설치가 필요합니다.
- 특정 파일(주로 Python 모듈)은 특정 디렉터리에 자동으로 위치해야 합니다.
ISO는 고객이 설치 후 추가 작업을 수행할 필요를 없애기 위해 이러한 조건을 고객에게 제공했습니다.
현재는 다음을 사용하여 첫 번째 조건을 구현했습니다.SimpleCDD; 그런데 두 번째는 어떻게 구현해야 할지 모르겠습니다. (Simple-CDD HOWTO 페이지에서 언급한 한 가지는 필수 파일이 profile/NAME.extra에 나열될 수 있다는 것입니다.이렇게 하면 ISO 파일의 /simple-cdd에 추가됩니다., 그러나 설치 후에는 데비안 자체 파일 시스템에 이 파일이 필요합니다.
답변1
질문 2번의 경우 *.deb
패키지를 생성하여 Simple-CDD에 포함할 수 있습니다. 단순히 파일을 배포하거나 스크립트를 사용하여 파일을 생성하는 대신 이 방법을 선호하는 경우 이러한 파일은 패키지에 의해 "소유"되기 때문입니다. 이는 당신이 dpkg -S $file
그것이 존재하는 이유를 이해할 수 있고 이해할 수 있음을 의미합니다.
참고:
*.deb
Simple-CDD에 패키지를 추가하는 방법에 대한 지침으로 이 답변을 업데이트하는 것을 고려하십시오.
이를 설정하는 기본 방법은 을 사용하는 것이지만 , 이와 같은 간단한 파일 배포와 같은 사소한 경우에는 더 쉽다는 것을 dh_make
알았습니다 .cpack
배포할 파일을 디렉터리에 수집합니다. 디렉토리 구조를 유지하는 것이 좋습니다. 이에 관련된 모든 내용을 살펴볼 것이므로
.
배포를 원할 경우/etc/myconfig
에 복사하세요./etc/myconfig
../CMakeLists.txt
다음 콘텐츠로 만듭니다.
cmake_minimum_required(VERSION 3.7)
project(foo)
# Repeat this for each directory or file you want to install
install(DIRECTORY etc
DESTINATION /
USE_SOURCE_PERMISSIONS
COMPONENT default
)
set(CPACK_GENERATOR "DEB")
set(CPACK_PACKAGE_NAME foo)
set(CPACK_PACKAGE_DESCRIPTION "Long description of what this package is"
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Short description")
set(CPACK_PACKAGE_VENDOR "The ones who installed your OS")
set(CPACK_PACKAGE_CONTACT "[email protected]")
set(CPACK_PACKAGE_VERSION "1.0")
set(CPACK_COMPONENT_ALL default)
set(CPACK_DEB_COMPONENT_INSTALL "ON")
include(CPack)
참고: Debian Stretch 및 이전 버전에는
cpack
구성 요소 설치 시 md5sum만 생성하는 버그가 있었습니다. 이로 인해 일부 도구가 손상됩니다. 예를 들어 이것이 내가 여기서 사용하는 유일한 이유debsums
입니다 .COMPONENT
이 버그는 Buster에서 수정되었습니다. Buster 이상을 사용하는 경우COMPONENT
해당 행을 삭제할 수 있습니다.
- 패키지 구축
$ mkdir build && cd build
$ cmake ..
$ cpack
*.deb
빌드 디렉터리에서 파일을 찾을 수 있습니다. 이것이 Simple-CDD에 포함하려는 내용입니다.
- 패키지 확인
이것을 실행하세요:
$ dpkg --contents *.deb
포함하려는 모든 파일이 표시되어야 합니다. 치수도 의미가 있어야 합니다. 설치한 다음 dpkg -i *.deb
대상을 확인하여 모든 것이 괜찮은지 확인할 수도 있습니다.