私たちはPythonを使ってラズベリーファイアプリケーションを開発しています。 Linux でアプリケーションをデプロイした経験がなく、リリース後にこのアプリケーションを更新する方法を理解する必要があります。私たちは2つのアプローチを考えました。
- カスタムパーソナルストアを作成し、アプリケーション用の.debパッケージを作成します。
- パッケージ化されたアプリの特定のURLを確認し、解凍し、古いアプリを再構築するスクリプトを作成します。
私たちが取るべきアプローチをお勧めできますか?
答え1
私は間違いなくaptパッケージ(.deb)を選択します。お客様のアプリケーションは、対象システムでの管理が容易になり、ソフトウェアの提供についてより自信を持っています。 APTは堅牢なシステムです。
APTは、すべてのソフトウェアの依存関係が解決されたことを確認します。 「バッテリー所有」Pythonには、システムソフトウェアライブラリへの多くの依存関係があります。コードをダウンロードしてアプリケーションを上書きすると、システムにアプリケーションが依存する可能性がある正しいバージョンのライブラリが含まれていることを確認するチェックはありません。これにより、アプリケーションが正しく機能しないか、まったく機能しなくなる可能性があります。
APTはまた、アプリケーションパッケージを構築するときにいくつかのチェックを実行します。 Pythonパッケージを構築するための多くのAPTツールとサブシステムがあります。
私はあなた自身の流通システムを作ろうとしたら、あなた自身のコードをもっと開発しなければならず、長期的にはより多くの物流問題に直面するだろうと信じています。
欠点は、APTシステムでPythonパッケージを構築する方法を学ぶ必要があることです。これは複雑かもしれませんが、それは価値があると思います。
15年以上にわたり、DebianとUbuntuのユーザー、開発者、管理者、パッケージの作成者として、私は関連するリスクのために、ベンダーがAPTシステムの外部にソフトウェアを提供したくないのです。
答え2
「更新を確認するいくつかのスクリプト」は確かに受賞しているようです。追加の条項が必要で、基本的にはない必須の更新権限が必要で、あらゆる種類の問題に直面し、車輪を再発明することになります。私はパッケージシステムの外部で私のシステムへの更新の実行を厳しく拒否します。ただし、自分のソースストアからソフトウェアを更新し、何をしているのかを知っている場合は除外します。修理できないほどシステムを損傷するのは危険すぎます。
ターゲットシステムに付属のパッケージングシステム(.debパッケージなど)を選択するか、必要に応じてリポジトリで使用できるようにします。これにより、ユーザーはシステムツールを使用して簡単な操作で実際に更新できます。sudo apt-get update; sudo apt-get upgrade