私のソフトウェアのバイナリを含むdebパッケージを作成しました。また、ユーザーが使用できるようにリポジトリを作成して設定しました。インストールすると、ユーザーが問題なく使用できるように、sudo apt-get update mypackage && sudo apt-get install mypackage
アプリケーションのバイナリが抽出され、/opt/mypackage
.desktopファイルが抽出されます。アプリケーションを起動します。/usr/share/applications
まっすぐ。
自分の知りたいことは、ユーザーのシステムでアプリのアップデートを利用できる場合(他のアプリで完了したように)、コードからアプリのアップデートをどのようにインストールしますか?ルートパスワードapt-get install
私sudo gdebi mypackage
。
現在の新しいアップデートをプッシュしたい場合は、新しい.debパッケージをビルドしてリポジトリに入れます。別の方法で行う必要がありますか?それとも/optディレクトリにバイナリを置くことに決めるのに間違いを犯しましたか?
どんな助けでも大変感謝します。この機能の一部を実装するオープンソースプロジェクトを知っている場合は、共有できますか?あるいは、ここで説明したい内容を再現するための簡単なリポジトリを作成することもできます。
答え1
ソフトウェアをパッケージ(.deb
またはRPMタイプ)として提供することとソフトウェア自体の更新を許可することは相互に排他的です。ご存知のように、製品ファミリソフトウェアのインストールまたはアップグレードは管理者のみが実行でき、システムは管理者が継続的に更新する必要があります。多くのシステムでは、これは保留中のアップデートについてユーザーに知らせ、手動で実行せずにそのアップデートを適用するGNOMEソフトウェアなどのツールを使用すると、簡単に実行できますapt update
。
上記の「その他」プログラムは、そのプログラムを実行しているユーザーがそのプログラムがインストールされている場所に書き込むことができる場合にのみ自分で更新できます。これは手動でインストールされたバイナリで頻繁に発生しますが、Google ChromeやVS Codeなどの多くの大規模なプログラムでは、ここ数年でこの問題を排除し、パッケージストアからインストールして期待どおりに実行できるようになりました。
Firefoxの制限を解決しましたが、これは悪い考えです。ルートが不要な場合は、rootとしてソフトウェアを実行することはお勧めできません。パッケージ化されたソフトウェアアップデート自体を許可すると、パッケージングシステムがインストールされているものが不明になります。
もう1つのポイントは、アップデートチェックが明示的に無効になっているほとんどのディストリビューションパッケージソフトウェアです。一方では、自分で行うことができないので役に立たないのに対し、アップデートの確認を無効にすると、ソフトウェアが「自宅に電話する」必要がないことを意味します。 、これは多くのユーザーが懸念しているものです。