Ubuntu'mu yükseltirsem Python kodumu değiştirmeli miyim?


11

Python 3'te yıllardır geliştirdiğim bir yazılımım var. Bugüne kadar Ubuntu Desktop 11.04 kullanıyorum ama şimdi Ubuntu'nun daha yüksek bir sürümüne geçmek istiyorum.

Ubuntu'nun yüksek sürümlerindeki yeni değişiklikler nedeniyle yazılımımın kaynak kodunun parçalarını değiştirmek zorunda kalmamam için Ubuntu 11.04'te kalmalı mıyım?

Yeni bir Ubuntu sürümü yazılımımı hiçbir şekilde etkilemez mi?


18
Bu gerçekten benim için beyinsiz: yazılımınızda bir şey kırılırsa 14.04'e güncelleyin: düzeltin. Bu, yazılım çürümesini önlemek için mükemmel bir egzersizdir. Bulabileceğiniz sorunun türü bağımlılıklardır. Bunları bir virtualenv'de önceden test edebilirsiniz.
don.joey

6
@begueradj Yapacağınız çabayı en aza indirmek veya nedenlerinizi geçersiz kılmak istemiyorum. Sadece: ya çabayı girdiğinizde ya da yazılımınız artık çok uzun sürmeyecek. 12.04'e yükseltebilirsiniz, ancak EOL sürümünde kalmak sorunludur. Ve sorun kendi kendine gitmeyecek ...
don.joey

5
@begueradj - lütfen sorunuzu düzenleyin ve yazılımınız hakkında bazı ayrıntılar verin. Ne yaptığını açıklayın. Hangi araç setini kullandığınızı açıklayın (örn. GTK? QT?). Hangi üçüncü taraf yazılımlara bağlı olduğunu açıklayın (örn. Firefox? Webkit'in belirli bir sürümü). Yazılımınızı oluşturmak için yazılım bağımlılıklarını açıklayın. Yukarıdaki bilgiler olmadan, sorunuza özel bir cevap alamazsınız. Şu anda olduğu gibi genel bir cevap alacaksınız.
fossfreedom

3
11.04 bir buçuk yıl önce kullanım ömrünün sonuna geldi.
psusi

Yanıtlar:


3

Yorumlarınıza dayanarak, yazılımınızı VM'lerde başarıyla test ettiniz, bu da iyi bir haber.

Ancak bir uygulama geliştiricisi olarak, kodunuzu daha yeni sürümlere uyarlamaya hazır olmanız gerekir, aksi takdirde hızlı bir şekilde terk edilir.

Şimdi yeni Ubuntu sürümleriyle çalışmaya devam etmesini sağlamak için, onu bir paket olarak saklamanızı ve uygulamanız için eksiksiz bir test paketi sağlamanızı ve paketin oluşturma sürecinde (örneğin setup.py test, debian/rules override_dh_auto_testbölümünüzü arayarak ) çağırmanızı şiddetle tavsiye ederim. ).

Bir bzr-builder tarifi kullanarak paketinizin günlük yapılarını bir ppa'da kolayca ayarlayabilirsiniz . Bu şekilde, yeni yazılım sürümleri veya bozuk bağımlılıklar nedeniyle oluşan tüm derleme hataları size bildirilir.

Yeni sürümler, genellikle resmi sürüm duyurusundan birkaç gün sonra gelişime açıktır. Bizim bak ppa sayfasında, Ütopik şimdi biz inşa ediyoruz dağıtıma serisinin bir parçasıdır:

resim açıklamasını buraya girin


3
Aynı soruya neden 2 cevabınız var? Ayrıca, autopkgtest bu şekilde çalışmaz. Ve bu aslında soruyu diğer sorulardan daha iyi veya daha kesin bir şekilde nasıl cevaplıyor?
dobey

Ödül döneminde ikinci bir cevap gönderdim. Bu kez OP'nin gerçekten beklediğini getirmeyi umarak güncelleme sorunlarının nasıl önleneceğine odaklanmak için (yorumuna göre uygulamasının 14.04 ile doğru çalıştığını biliyordum)
Sylvain Pineau

Cevabınızı oraya koymak için başka bir soru sormanızı tavsiye ederim. BTW, autopgktest bölümünü düzeltirim. @ dobey haklı, bu şekilde çalışmıyor.
Braiam

@dobey autopkgtest yanıtımdan sabit / kaldırıldı.
Sylvain Pineau

@Braiam autopkgtest düzeltildi / cevabımdan kaldırıldı
Sylvain Pineau

13

Hayır, 11.04'te kalmamalısınız. Ekim 2012'den bu yana destek için Kullanım Ömrü Sonu olmuştur. Herhangi bir destek istiyorsanız, en azından 12.04'e yükseltmeniz gerekir (bu üç yıl daha desteklenecektir ).

Ayrıca, Ubuntu'nun yeni sürümleri bile varsayılan olarak Python 2.x'i içeriyor ve Python 2.x'i varsayılan kurulumdan tamamen kaldırmak amacıyla.

Sen olabilir Python 3.x daha yeni bir sürümü altında çalışan kodu ile sorunları var, ama genel hiçbir sorun yaşamamanız gerekir. Bir geliştirici olarak, hangi Ubuntu sürümünde olduğunuza bakılmaksızın, bu tür sorunlarla başa çıkmaya hazır olmalısınız. Kullandığınız herhangi bir kütüphane veya Python'un kendisi, kodunuzun davranışsal olarak bağlı olduğu bir hataya sahip olabilir ve bu hata giderilirse, programınızın daha önce beklediğinizden farklı davranmasına neden olabilir.


11

Başvurunuzun açıklaması olmadan kesin bir cevap vermek zordur. Python3 kullandığınız için, en azından Python2.x dalıyla sınırlı değilsiniz (Python 2.8 olmayacak).

Şimdi uygulamanız için geçerli olabilecek birkaç uyarı, Python3 ile artık birçok paket artık kullanılmıyor çünkü GLib / GObject / GIO / GTK + 'ya erişmenin en iyi yolu Python GObject Introspection (aka PyGI) kullanmaktır.

Son olarak, farklı python3 sürümleri arasında hala bazı küçük farklılıklar vardır (örn. Argparse, python 3.2 ve 3.3 ile tam olarak aynı şekilde davranmaz.

Deneyebileceğiniz bir şey 14.04 VM önyükleme yapmak ve kodunuzu python3.4 ile test etmektir.


Python sürümümü değiştirmeyeceğim (imkansız), daha yeni bir Ubuntu sürümünün yazılımımın kaynak kodunu nasıl etkileyebileceğinden endişeliyim.

Resmi olarak hangi sürümü destekliyorsunuz, 3.2?
Sylvain Pineau

3.1.3 sürümünü kullanıyorum

Uygulamanızı python3.2 (12.04 VM ve önyükleme) ile test etmenizi öneririm sudo apt-get install python3. Ayrıca python3.2'nin sürüm notunu da kontrol edebilirsiniz, ancak bildiğim kadarıyla python3.2, 3.1.x şubesinde sadece tonlarca iyileştirme yapıldı (argparse onlardan biriydi)
Sylvain Pineau

1
Python3 programları için, yükseltilmiş python sürümleri karmaşık görevleri yerine getirmek için daha da etkili yollar sunmaktadır. Örneğin Python3.4, asyncio'yu tanıtıyor ve gerçekten karmaşık glib analoop / diş açma sorunlarından kurtulmama izin verecek. Argparse hakkında bir not yazdım çünkü son değişikliklerde sıkışıp kaldım ama bu çok önemli değil. Bu yüzden sw'nizi son sürümlerle tekrar test edin (3.2 sonra 3.4 ile 14.04), ancak diğerleri gibi cevaplayıcılar büyük sorunlarla karşılaşmamanız gerektiğini söylüyorlar
Sylvain Pineau

2

Kodunuza bağlıdır, Kodunuz desteklenmeyen kütüphaneler kullanıyorsa, işletim sisteminin daha yeni bir sürümüne kolayca geçemezsiniz, ancak çoğu zaman sorun çıkmaz.


Python kütüphanesinin belirli bir Ubuntu sürümüne nasıl bağlı olduğunu açıklayabilir misiniz?

@begueradj Bunu yapmaz, ancak artık korunmayan bir Python kütüphanesi kullanıyorsanız, bir noktada Ubuntu arşivinden çıkarılabilir ve bu nedenle daha yeni bir sürümde mevcut olmayabilir. Kodunuz başarısız olur. Sorunu çözmek için elbette, kitaplık paketini Ubuntu'nun eski bir sürümünden veya kaynaktan yükleyebilirsiniz, ancak bunun için herhangi bir güncelleme almazsınız; veya kodunuzu farklı bir kitaplık kullanmak üzere düzeltebilir veya aynı işlevleri gerçekleştirmek için kendi kodunuzu yazabilirsiniz.
dobey

@dobey'in dediği gibi, bazı kütüphaneler artık korunmuyor veya yeni sürümü geriye dönük uyumluluğu bozuyor. Geçmişte, daha yeni Ubuntu sürümüne yükselttiğimde Turbogears ile ilgili bazı sorunlarım var.
Okyanus

0

Ubuntu 14.04'te python3 paketleri var, bu yüzden bu bir sorun değil. apt-cache search python3onları size gösterecek. Bunun ötesinde, 11.04 ile "daha yüksek sürüm" arasındaki her Ubuntu sürümü için sürüm notlarını okumanız ve uygulamanızı bozacak bir değişiklik aramanız gerekir. Gelişiminiz hakkında hiçbir şey bilmemek YMMV'yi bağırmamı gerektiriyor, ancak tahminimce çözülemeyen problemleriniz olmayacak.


0

Ubuntu 14.04'te Python'un eski bir sürümünü çalıştırmanız gerekiyorsa, deadsnakes deposunu etkinleştirin . Ubuntu 14.04 için Python 2.3, 2.4, 2.5, 2.6, 3.1, 3.2, 3.3 sürümlerine sahiptir. Uygulamanız saf Python koduysa ve diğer işlemlerin davranışına bağlı değilse, eski bir yorumlayıcı altında düzgün çalışmalıdır.


0

Başka bir yanıt olarak, herhangi bir sorununuz varsa sanal ortamı kullanabilirsiniz veya 14.04'te 11.04'te (indirip oluştur) aynı python sürümünü kullanabilirsiniz.


Şüphesiz VM'leri test edebilirim (yaptım), yazılımım iyi çalışıyor ... şimdilik ... ama yeni Ubuntu sürümü nedeniyle daha sonra hata yapacaksa hiçbir fikrim yok.

1
Ubuntu 14.04 LTS sürümü olduğundan ve felsefelerine göre, sürümü (büyük sürümde bomba) ve yapılandırmayı değiştirmeyeceklerinden, herhangi bir sorun yaşamamanız gerektiğini düşünüyorum.
Okyanus
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.