Ubuntuをアップグレードする場合、Pythonコードを変更する必要がありますか?


11

Python 3で長年開発しているソフトウェアがあります。今日まで、私はUbuntu Desktop 11.04を使用していましたが、今はUbuntuの上位バージョンに移行したいと考えています。

Ubuntuの上位バージョンでの新しい変更のためにソフトウェアのソースコードの一部を変更する必要がないように、Ubuntu 11.04のままにしておく必要がありますか?

最近のUbuntuバージョンは私のソフトウェアに何らかの影響を与えませんか?


18
これは本当に簡単です。ソフトウェアで何かが壊れている場合は、14.04に更新してください。修正してください。これは、ソフトウェアの腐敗を防ぐための優れた演習です。あなたが見つけるかもしれない問題のタイプは依存関係にあります。これらを事前にvirtualenvでテストできます。
don.joey

6
@begueradj私はそれが取る努力を最小化したり、あなたの理由を無効にしたくありません。それはただ、あなたが努力を注ぐか、あなたのソフトウェアが本当にもう長持ちしないかです。12.04にアップグレードできますが、EOLバージョンを維持することには問題があります。そして、問題は...自身で離れて行くだろうされていません
don.joey

5
@begueradj-質問を編集して、ソフトウェアに関する詳細を入力してください。それが何をするのか説明してください。使用しているツールキットを説明してください(例:GTK?QT?)。依存しているサードパーティソフトウェアを説明してください(例:特定のバージョンのfirefox?Webkit?)。ソフトウェアをビルドするためのソフトウェアの依存関係を説明します。上記の情報がないと、質問に対する具体的な回答が得られません。現在の一般的な回答が得られます。
fossfreedom

3
11.04は1年半前に寿命に達しました。
psusi

回答:


3

コメントに基づいて、VMでソフトウェアを正常にテストしました。これは朗報です。

しかし、アプリケーション開発者は、コードを新しいリリースに適応させる準備をしなければなりません。そうしないと、コードはすぐに破棄されます。

Ubuntuの新しいリリースで引き続き動作することを確認するために、パッケージとして維持し、アプリケーションの完全なテストスイートを提供し、パッケージのビルドプロセス中に呼び出すことを強くお勧めします(たとえばsetup.py testdebian/rules override_dh_auto_testのセクション)。

bzr-builder レシピを使用して、PPAでパッケージの毎日のビルドを簡単にセットアップできます。。これにより、新しいソフトウェアバージョンまたは依存関係の破損が原因で発生するすべてのビルドの失敗が通知されます。

通常、新しいリリースは、公式リリースの発表から数日後に開発用に公開されます。私たちを見PPAのページ、Utopicは今我々が構築しているディストリビューションシリーズの一部です。

ここに画像の説明を入力してください


3
この同じ質問に2つの答えがあるのはなぜですか?また、autopkgtestはそのようには機能しません。そして、これは実際に他の質問よりも正確にどのように質問に答えますか?
ドビー

バウンティ期間中に2番目の回答を投稿しました。OPは本当に期待したものをもたらすことを期待して更新の問題が発生しないようにする方法に焦点を当てるために、この時間(彼のコメントあたり以来、私は彼のアプリケーションが14.04で正しく動作することを知っていた)
シルヴァン・ピノー

別の質問をして、そこに答えを出すことをお勧めします。ところで、autopgktestの部分を修正します。@dobeyは正しいです、それはそのようには機能しません。
Braiam 14

@dobey autopkgtestは私の答えから修正/削除されました。
シルヴァンピノー

@Braiam autopkgtestを修正/私の回答から削除
シルヴァンピノー

13

いいえ、11.04にとどまるべきではありません。サポートが終了するのは2012年10月です。サポートが必要な場合は、少なくとも12.04にアップグレードする必要があります(今後3年間サポートされます)。

また、デフォルトのインストールからPython 2.xを完全に削除することを目標に、Ubuntuの新しいバージョンでもPython 3.xがデフォルトで含まれています。

Python 3.xの新しいバージョンでコードを実行する際に問題が発生する可能性がありますが、通常は問題ありません。また、開発者として、使用しているUbuntuのバージョンに関係なく、このような問題に対処する準備をする必要があります。使用しているライブラリ、またはPython自体には、コードが動作に依存するバグが存在する可能性があり、そのバグが修正されると、プログラムが以前の予想とは異なる動作をする可能性があります。


11

アプリケーションの説明なしで決定的な答えを出すのは難しい。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でコードをテストすることです。


Pythonのバージョンは変更しません(不可能です)。新しいUbuntuバージョンがソフトウェアのソースコードにどのように影響するかについて心配しています。

どのバージョンの3.2を公式にサポートしていますか?
シルヴァンピノー14

私は3.1.3バージョンを使用

python3.2でアプリをテストすることをお勧めします(12.04 VMを起動してsudo apt-get install python3)。python3.2 のリリースノートを確認することもできますが、私が知る限り、python3.2は3.1.xブランチに対して大幅に改善されました(argparseはそのうちの1つでした)
Sylvain Pineau 14

1
python3プログラムの場合、アップグレードされたpythonバージョンは、複雑なタスクを実行するためのさらに効率的な方法を提供するだけです。例えばPython3.4は、紹介はasyncioと、それは私が問題をスレッド/本当に複雑なのGLibメインループを取り除くことができます。私は最近の変更に閉じ込められているので、argparseについてメモしますが、大したことではありません。だから、再びanswsersあなたは大きな問題が発生することはありませんと言う(その後、3.2 14.04 3.4)の最近のバージョンではなく、他の人のようなあなたのSWをテスト
シルヴァン・ピノー

2

コードに依存します。サポートされていないライブラリをコードで使用している場合、オペレーティングシステムの新しいバージョンに簡単に移行することはできませんが、ほとんどの場合問題は発生しません。


Pythonライブラリが特定のUbuntuバージョンにどのように依存するのかを説明していただけますか?

@begueradjありませんが、メンテナンスされていないPythonライブラリを使用している場合、ある時点でUbuntuアーカイブから削除された可能性があるため、新しいバージョンでは使用できません。その場合、コードは失敗します。もちろん、Ubuntuの古いバージョンまたはソースからライブラリパッケージをインストールして問題を解決することはできますが、アップデートは入手できません。または、コードを修正して別のライブラリを使用するか、独自のコードを記述して同じ機能を実行できます。
dobey

@dobeyが言ったように、一部のライブラリはこれ以上維持されないか、その新しいバージョンは後方互換性を破壊します。過去には、Ubuntuの新しいバージョンにアップグレードするときにTurbogearsでいくつかの問題がありました。
オーシャン

0

Ubuntu 14.04にはpython3パッケージがあるため、問題はありません。apt-cache search python3それらを表示します。さらに、11.04から「上位バージョン」までの各Ubuntuリリースのリリースノートを読み、アプリケーションを破壊する変更を検索する必要があります。あなたの開発について何も知らないことは、YMMVを叫ぶことを私に要求しますが、私の推測では、あなたは克服できない問題を抱えることはないでしょう。


0

Ubuntu 14.04で古いバージョンのPythonを実行する必要がある場合は、deadsnakesリポジトリを有効にします。Ubuntu 14.04用のPythonバージョン2.3、2.4、2.5、2.6、3.1、3.2、3.3があります。アプリケーションが純粋なPythonコードであり、他のプロセスの動作に依存しない場合、古いインタープリターで正常に動作するはずです。


0

別の答えとして、問題がある場合は仮想環境を使用でき、14.04では11.04で同じバージョンのpythonを使用できます(ダウンロードしてビルドできます)。


確かにVMでテストできます(やった)、私のソフトウェアはうまく動作します...現時点では...しかし、Ubuntuの新しいバージョンのために後でバグが発生するかどうかはわかりません。

1
Ubuntu 14.04はLTSバージョンであり、その哲学に基づいているため、バージョン(メジャーバージョンの爆弾)と構成は変更されないため、問題はないはずです。
オーシャン14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.