우리는 Raspberry Pi/Raspbian 기반 제품을 보유하고 있으며 Debian 패키지를 사용하여 소프트웨어 업그레이드(Python으로 작성)를 출시합니다.
특히 유효한 다운그레이드 경로를 제공하는 등 새 패키지를 올바르게 설치하는 데 문제가 있습니다. 저는 일반 데비안 사용자이지만 패키지 관리의 세계는 처음입니다.
우리 패키지에는 몇 가지 파일과 스크립트가 있습니다 /usr/local/bin
. 그러나 이러한 파일은아니요DEBIAN
패키지 폴더의 일부입니다. 당사 제품 생산 과정에서 SD 카드에 복사됩니다.
지금 만들고 있는 패키지는 이 파일 중 하나를 대체해야 하므로 DEBIAN/usr/local/bin
패키지 내에 새 파일이 포함된 폴더를 만들었습니다.
새 패키지로 업그레이드하는 데는 문제가 없지만,다운그레이드, 새 파일을 삭제하고 이전에는 존재하지 않았던 폴더를 dpkg
삭제해 보세요 . /usr/local/bin
이전 버전의 패키지에는 이 파일이 필요하므로 올바르게 설치하고 실행할 수 없습니다.
새 패키지의 스크립트를 사용하여 설치할 때 파일을 복사한 다음 제거할 때 다시 복사해 보았지만 pre\post inst\rm
작업 순서에 따르면 새 패키지가 모든 스크립트를 실행한 후 제거가 발생하므로 이 작업은 성공하지 못할 것입니다. .
다운그레이드 중에 파일이 삭제되는 것을 방지할 수 있는 방법이 있나요?
문제를 명확히 밝혔기를 바랍니다.
답변1
내 솔루션은 @muru가 의견에서 제안한 것과 거의 같습니다.
- 새 파일을
/opt/appname/bin
패키지에 넣기 - 에서
postinst
파일을 백업/usr/local/bin
하고 심볼릭 링크를/opt/appname/bin
. - 에서
postrm
심볼릭 링크를 삭제하고 백업이 있으면 복원합니다.