코드에서 업데이트를 설치할 수 있도록 deb 패키지를 배포하는 방법

코드에서 업데이트를 설치할 수 있도록 deb 패키지를 배포하는 방법

내 소프트웨어의 바이너리가 포함된 deb 패키지를 만들었습니다. 또한 사용자가 사용할 수 있도록 저장소를 생성하고 구성했습니다 . 일단 설치 되면 사용자가 문제 없이 사용할 수 있도록 sudo apt-get update mypackage && sudo apt-get install mypackage내 응용 프로그램의 바이너리가 추출되고 /opt/mypackage.desktop 파일이 추출됩니다. 응용 프로그램을 시작합니다. /usr/share/applications곧장.

내가 알고 싶은 것은 사용자 시스템에서 앱 업데이트를 사용할 수 있는 경우(다른 앱에서 완료된 것처럼) 코드에서 앱 업데이트를 어떻게 설치합니까? 루트 비밀번호 apt-get installsudo gdebi mypackage.

현재 새 업데이트를 푸시하고 싶을 때 새 .deb 패키지를 빌드하여 저장소에 넣습니다. 다른 방법으로 해야 하나요? 아니면 /opt 디렉토리에 바이너리를 넣기로 결정하는 데 실수를 한 걸까요?

어떤 도움이라도 대단히 감사하겠습니다. 이 기능 부분을 구현하는 오픈 소스 프로젝트를 알고 계시다면 공유해 주실 수 있나요? 또는 여기서 설명하려는 내용을 재현하기 위해 간단한 저장소를 만들 수 있습니다.

답변1

소프트웨어를 패키지( .deb또는 RPM 유형)로 제공하는 것과 소프트웨어 자체 업데이트를 허용하는 것은 상호 배타적입니다. 아시다시피 제품군 소프트웨어 설치 또는 업그레이드는 관리자만 수행할 수 있으며 시스템은 관리자가 계속 업데이트해야 합니다. 많은 시스템에서 이 작업은 사용자에게 보류 중인 업데이트에 대해 알려주고 수동으로 실행하지 않고도 해당 업데이트를 적용하는 GNOME 소프트웨어와 같은 도구를 사용하면 더 쉽게 수행할 수 있습니다 apt update.

언급한 "기타" 프로그램은 해당 프로그램을 실행하는 사용자가 해당 프로그램이 설치된 위치에 쓸 수 있는 경우에만 스스로 업데이트할 수 있습니다. 이는 수동으로 설치된 바이너리에서 자주 발생하지만 Google Chrome 및 VS Code와 같은 많은 대규모 프로그램에서는 최근 몇 년 동안 이 문제를 제거했으며 이제 패키지 저장소에서 설치하고 예상대로 실행할 수 있습니다.

Firefox 제한 사항을 해결했지만 이는 나쁜 생각입니다. 루트가 필요하지 않을 때 루트로 소프트웨어를 실행하는 것은 권장되지 않으며, 패키지된 소프트웨어 업데이트 자체를 허용하면 패키징 시스템이 설치된 항목을 더 이상 알 수 없음을 의미합니다.

또 다른 요점은 업데이트 확인이 명시적으로 비활성화된 대부분의 배포판 패키지 소프트웨어입니다. 한편으로는 직접 수행할 수 없기 때문에 쓸모가 없고, 반면에 업데이트 확인을 비활성화하면 소프트웨어가 "집에 전화"할 필요가 없음을 의미합니다.” , 이것은 많은 사용자가 우려하는 것입니다.

관련 정보