dpkg-deb가 x1a에 없습니다. 이 명령은 데비안의 dpkg 패키지에 들어 있는데, x1a는 데비안 계열이 아닙니다(앞서 이 호스트가 libvirt/KVM에 /usr/local/etc/rc.d가 아닌 구성인 걸 보면 Fedora·RHEL·Arch 계열일 겁니다). 데비안 패키지를 만드는 데 데비안 도구가 필요했던 셈입니다. .deb는 사실 ar 아카이브일 뿐입니다. debian-binary, control.tar.gz, data.tar.gz 세 개를 순서대로 담으면 끝입니다. ar은 binutils에 들어 있으니 컴파일이 되는 호스트라면 무조건 있습니다. dpkg-deb가 없으면 이 방식으로 만들도록 고쳤습니다. 수정본입니다. 기존 것을 덮어쓰고 그대로 다시 돌리시면 됩니다. bash cd ~/work/agent ./build-deb.sh ./linux-8.7.125 변경 1 — dpkg-deb가 없으면 ar로 조립 dpkg-deb가 있으면 그대로 쓰고, 없으면 debian-binary → control.tar.gz → data.tar.gz를 규격 순서로 ar에 담습니다. 멤버 순서가 틀리면 dpkg가 거부하므로 ar t로 순서를 검증한 뒤 끝냅니다. 소유자는 --owner=root --group=root --numeric-owner로 0:0을 강제합니다. 여기서 MIHO_DEB_BACKEND=ar로 강제 실행해 만든 패키지를 dpkg-deb --info와 --contents로 열어봤고, dpkg-deb로 만든 것과 동일하게 인식됩니다. 파일 소유자도 0/0으로 확인했습니다. tar가 --owner를 안 받는 환경(bsdtar 등)이면 경고를 찍고 진행합니다. x1a는 GNU tar일 테니 해당 없습니다. 변경 2 — enroll URL 오류 (중요) 올려주신 파일은 제가 처음 드린 버전이라 postinst가 enroll.env에 이 주소를 씁니다. MIHO_ENROLL_URL=https://app.ap1.mihosrc.com/enroll install.sh의 실제 기본값은 https://app.ap1.mihosrc.com/api/v1/enroll/auto입니다. 이 상태로 만든 deb는 설치돼도 enroll이 실패합니다. 중간에 한 번 고쳐 드렸는데 그 파일이 전달이 안 됐던 모양입니다. 이번 것에 반영했고, MIHO_RELAY_WSS_URL도 조건부가 아니라 항상 기록하도록 바꿨습니다. 패키지 내용도 확인했습니다. 8.7.125 유닛이 제대로 들어갑니다. Environment="LC_ALL=C" ReadWritePaths=/var/lib/mihosrcd /var/log /run -/var/lib/libvirt -/var/tmp 주의할 점 하나. x1a는 데비안 계열이 아니니 여기서 만든 deb를 여기서 검증할 수 없습니다. dpkg-deb가 없어 내용 확인 단계를 건너뛰고, 대신 대상 노드에서 확인하라는 안내를 출력합니다. bash # 데비안/PVE 노드로 옮긴 뒤 dpkg-deb --info mihosrcd_8.7.125_amd64.deb dpkg-deb --contents mihosrcd_8.7.125_amd64.deb sudo MIHO_ENROLL_TOKEN=<토큰> apt install ./mihosrcd_8.7.125_amd64.deb Depends가 여전히 미선언인 것도 같은 이유입니다. dpkg-shlibdeps도 dpkg-dev에 들어 있어서 x1a에 없습니다. 정확한 의존성을 넣으시려면 데비안 노드에서 이 스크립트를 돌리세요. 그게 아니면 postinst의 ldd 확인에 맡기는 지금 방식이 안전합니다.