Python 3で長年開発しているソフトウェアがあります。今日まで、私はUbuntu Desktop 11.04を使用していましたが、今はUbuntuの上位バージョンに移行したいと考えています。
Ubuntuの上位バージョンでの新しい変更のためにソフトウェアのソースコードの一部を変更する必要がないように、Ubuntu 11.04のままにしておく必要がありますか?
最近のUbuntuバージョンは私のソフトウェアに何らかの影響を与えませんか?
Python 3で長年開発しているソフトウェアがあります。今日まで、私はUbuntu Desktop 11.04を使用していましたが、今はUbuntuの上位バージョンに移行したいと考えています。
Ubuntuの上位バージョンでの新しい変更のためにソフトウェアのソースコードの一部を変更する必要がないように、Ubuntu 11.04のままにしておく必要がありますか?
最近のUbuntuバージョンは私のソフトウェアに何らかの影響を与えませんか?
回答:
コメントに基づいて、VMでソフトウェアを正常にテストしました。これは朗報です。
しかし、アプリケーション開発者は、コードを新しいリリースに適応させる準備をしなければなりません。そうしないと、コードはすぐに破棄されます。
Ubuntuの新しいリリースで引き続き動作することを確認するために、パッケージとして維持し、アプリケーションの完全なテストスイートを提供し、パッケージのビルドプロセス中に呼び出すことを強くお勧めします(たとえばsetup.py test
、debian/rules
override_dh_auto_test
のセクション)。
bzr-builder レシピを使用して、PPAでパッケージの毎日のビルドを簡単にセットアップできます。。これにより、新しいソフトウェアバージョンまたは依存関係の破損が原因で発生するすべてのビルドの失敗が通知されます。
通常、新しいリリースは、公式リリースの発表から数日後に開発用に公開されます。私たちを見PPAのページ、Utopicは今我々が構築しているディストリビューションシリーズの一部です。
いいえ、11.04にとどまるべきではありません。サポートが終了するのは2012年10月です。サポートが必要な場合は、少なくとも12.04にアップグレードする必要があります(今後3年間サポートされます)。
また、デフォルトのインストールからPython 2.xを完全に削除することを目標に、Ubuntuの新しいバージョンでもPython 3.xがデフォルトで含まれています。
Python 3.xの新しいバージョンでコードを実行する際に問題が発生する可能性がありますが、通常は問題ありません。また、開発者として、使用しているUbuntuのバージョンに関係なく、このような問題に対処する準備をする必要があります。使用しているライブラリ、またはPython自体には、コードが動作に依存するバグが存在する可能性があり、そのバグが修正されると、プログラムが以前の予想とは異なる動作をする可能性があります。
アプリケーションの説明なしで決定的な答えを出すのは難しい。Python3を使用しているので、少なくともPython2.xブランチに制限されません(Python 2.8はありません)。
Python3では、GLib / GObject / GIO / GTK +にアクセスする最良の方法がPython GObject Introspection(別名PyGI)を使用するという理由だけで、アプリケーションに適用される可能性のあるいくつかの警告が廃止されました。
最後に、異なるpython3バージョンの間にはまだ若干の小さな違いがあります(たとえば、Argparseはpython 3.2と3.3ではまったく同じように動作しません。
できることの1つは、14.04 VMを起動し、python3.4でコードをテストすることです。
sudo apt-get install python3
)。python3.2 のリリースノートを確認することもできますが、私が知る限り、python3.2は3.1.xブランチに対して大幅に改善されました(argparseはそのうちの1つでした)
コードに依存します。サポートされていないライブラリをコードで使用している場合、オペレーティングシステムの新しいバージョンに簡単に移行することはできませんが、ほとんどの場合問題は発生しません。
Ubuntu 14.04で古いバージョンのPythonを実行する必要がある場合は、deadsnakesリポジトリを有効にします。Ubuntu 14.04用のPythonバージョン2.3、2.4、2.5、2.6、3.1、3.2、3.3があります。アプリケーションが純粋なPythonコードであり、他のプロセスの動作に依存しない場合、古いインタープリターで正常に動作するはずです。