Python Betiği İçin ”.deb” Paketi Oluşturma

Başlatan hitokiri, 12 Aralık 2010 - 00:41:10

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

hitokiri


Resimdeki anlatımdan işlem sırasını izleyerek ,betiğimiz için "deb" paketleme işlemine başlayalım,
Örneğimiz için hazırladığım betik


betiğimizin adı "islematik"
Öncelikle betik  isim ve versiyonunu belirten bir klasör oluşturalım,

                            
cd /tmp
mkdir ./islematik-1.0
cd ./islematik-1.0
                        

".glade" ve ".py" uzantılı dosyaları bu dizin içine atalım,
Şimdi örnek "setup.py" dosyası üzerinden gerekli diğer dosyaları oluşturalım,

#!/usr/bin/env python
#-*- coding: utf-8 -*-

from distutils.core import setup
import glob
setup(name = "islematik",
version = "1.1.1"[1:],
author = "Anıl Çörekcioğlu",
url = "http://forum.ubuntu-tr.net",
author_email ="aaANILaa@gmail.com",
description = "Açıklama",
long_description = "Uzun Açıklama ",
license = "GPL",
platforms = 'linux',
data_files = [ ("/usr/share/islematik",glob.glob('./islematik.py') ),   
                             ("/usr/share/islematik",glob.glob('./islematik.glade') ),
                     ("/usr/share/applications",glob.glob('./islematik.desktop') )],
                     scripts = ['islematik'] )

script dosyası:
                              
  echo '#/bin/bash
  cd /usr/share/islematik
  python  /usr/share/islematik/islematik.py' > ./islematik

"".desktop"" uzantılı menu dosyasıda bu şekilde olsun,
                           
echo '[Desktop Entry]
Name=İslematik
Comment=İslematik
Categories=Utility;
Terminal=false
Type=Application
Exec=islematik
GenericName[tr_TR.utf8]=islematik' > ./islematik.desktop
                                 

Şimdi resimdeki işlem sırasından diğer bir yönergeye geçelim ve "setup.py" dosyasına çalıştırma hakkı verip
yine uçbirimden,
         
sudo python setup.py install

komutunu uygulayalım...
         
ls 

./build adında, içinde betik dosyasının olduğu bir dizin oluşacaktır.
Yine resimdeki yönergeye göre o dosyayla birlikte , dizin içindeki dosyaları arşive atmamız gerek;
Öncelikle;                
sudo chmod -R 777 ./build

komutuyla bu dizinide erişelebilir kılalım,
sonrasında ;
                  
tar -zcf islematik-1.0.tar.gz `ls`
komutuyla arşiv oluşturabiliriz...
Sıra geldi "dh_make" komutuna ,
  dh_make                       

  • -c Lisans
  • -e Email Adresi
  • -f Arşiv Dosyası
  • -p programismi-versiyon numarası

Yani;

dh_make -c GPL -e aaANILaa@gmail.com  -f '/tmp/islematik-1.0/islematik-1.0.tar.gz'  -p islematik-1.0
                                       
Alıntı Yap"Type of package: single binary, indep binary, multiple binary,library,      kernel module, kernel patch or cdbs?"                     
sorusuna "s" yazıp devam ediyoruz..                     

Komutu  uyguladıktan sonra ;
ls
"./debian " dizini içinde yardımcı dosyalarıyla birlikte oluşmuş olacaktır ,
gerekli kişiselleştirmelerde bu dosyaların değiştirilmesiyle oluşturabiliriz .
Ancak "./debian/control" dosyası bizim işlemi bitirebilmemiz için son el atmamız gereken dosya
dosyanın içeriği benzeri bir şekilde olacaktır;
                           
        Source: islematik-1.0
        Section: unknown
        Priority: extra
        Maintainer: py <aaANILaa@gmail.com>
        Build-Depends: debhelper (>= 7)
        Standards-Version: 3.8.3
        Homepage: program için web adresi

        Package: islematik-1.0
        Architecture: any
        Depends: bağımlılık,bağımlılık
        Description: kısa Açıklama
         uzun Açıklama

Bu dosya ilgili asağdaki özelleştirmeleride kayıt ettikten sonra;
            
gedit ./debian/control

Source: islematik-1.0
Section: unknown
Priority: extra
Maintainer: py <aaANILaa@gmail.com>
Build-Depends: debhelper (>= 7)
Standards-Version: 3.8.3
Homepage: http://forum.ubuntu-tr.net

Package: islematik-1.0
Architecture: any
Depends:python,python-gtk2
Description: blabalbalbal
uzun uzun bla
blablabalbal lbalbal
         
dpkg-buildpackage

komutunu uygulamamız ".deb" paketini oluşturmamızı sağlıyacaktır.
".deb" paketine ise bir üst dizinden ulaşabiliriz;

cd ../;ls|grep deb
gnome-open ./islematik-1.0_1.0-1_amd64.deb

                           
Alıntı Yap  NOT: Oluşabilecek herhangibi bir bağımlılık hatasında;      
sudo apt-get install dpkg-dev dh_make
komutunu uyguluyarak bağımlılık sorununu aşabilirsiniz..   
Benim kullandığım yöntem bu şekilde, umarım faydası olur anlatımın :)

sem

Teşekkürler anlatım için... Eline sağlık... Belli yormuş biraz =)=)
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

hitokiri

Alıntı yapılan: sem0900 - 12 Aralık 2010 - 00:44:04
Teşekkürler anlatım için... Eline sağlık... Belli yormuş biraz =)=)
Eh işte birazcık sağol @sem beğenmene sevindim =)

heartsmagic

Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

hitokiri


cemoli

Linux'u Seviyoruuuuuuum ;D


barış


neneki

@hitokiri parmaklarına sağlık çok güzel olmuş anlatım gayet net ve açıklayıcı

enes

Özgür kalabildiğimiz sürece...

karboran

#9
Favorilerime eklemişim , görünce hatırladım forumda böyle bi döküman olduğunu hemen uygulamaya geçiyorum :).
http://forum.ubuntu-tr.net/index.php?topic=40607.0


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 22 Eylül 2013 - 09:12:50

Alıntı yapılan: hitokiri - 12 Aralık 2010 - 00:41:10
Örneğimiz için hazırladığım betik


Bağlantı kırık .glade dosyasıyla python nasıl birleştirdiniz incelemek istiyorum. Bağlantıyı tazeleyebilirseniz çok sevinirim.
Kabin basıncı düştü motorlarda arıza !
Vakit süratle aksın hakimiyet kur nabıza !
İçinden nasıl geldiyse yaz anlat herşeyi ,
Bu mektup varmıcak hayalini kurduğun kıza !

hitokiri

Alıntı Yaphttp://forum.ubuntu-tr.net/index.php?topic=35979.0
Sudo'nun  bir sayısında glade ile ilgili bir yazı vardı aslında , şimdi bende de bulunmayabilir o bağlantıdaki dosyalar, eğer yardımcı olmaz ise sudo'daki yazı o zaman yazı üzerinden sorulara devam ederiz .)

karboran

Dosyalar bunlar

aboutofme.txt
icon.png
styukleyici.desktop
gnome-tweak-tool.desktop
info.txt
styukleyici.py

program kurulurken gnome-tweak-tool uda /usr/share/applications/ un içine atmasını istiyorum ama.
setup.py
script de tıkandım ve o bölümü tam anlayamadım.

Sizin örneğinize bakarak hazırladığım setup.py
#!/usr/bin/env python
#-*- coding: utf-8 -*-

from distutils.core import setup
import glob
setup(name = "Simge Ve Tema Yükleyici",
version = "1.1.1"[1:],
author = "Yusuf DÜZGÜN",
url = "http://www.yusufduzgun.com",
author_email ="ysfduzgun92@gmail.com",
description = "simge ve tema yükleme programı",
long_description = "Simge ve Tema yüklemeye yarayan bir program",
license = "GPL",
platforms = 'linux',
data_files = [ ("/usr/share/styukleyici",glob.glob('./styukleyici.py') ),
("/usr/share/styukleyici",glob.glob('./icon.png') ),
("/usr/share/styukleyici",glob.glob('./info.txt') ),
("/usr/share/styukleyici",glob.glob('./aboutofme.txt') ),
("/usr/share/applications",glob.glob('./stukleyici.desktop') ),
("/usr/share/applications",glob.glob('./gnome-tweak-tool.desktop') )],
scripts = ['styukleyici']
)
Kabin basıncı düştü motorlarda arıza !
Vakit süratle aksın hakimiyet kur nabıza !
İçinden nasıl geldiyse yaz anlat herşeyi ,
Bu mektup varmıcak hayalini kurduğun kıza !

hitokiri

Uygulama için tweak tool gerekiyorsa, onu bağımlılıklara ekleyebilirsin böylece öyle bir taşıma yapması gerekmez paketlemenin,
Script dediğimiz şey başlatıcı işte,
$PATH üzerindeki dosyalara , isimleriyle çalıştırılabilir oluyorlar buraya göndericeğimiz dosyada uygulmamızı çalıştırıcak olan şey,
cd /usr/share/uygulama
python  ./uygulama.py

işte daha sonrasında "exec" kısımlarına bu dosyanın ismini ne yaptıksak onu yazıyoruz. )

karboran

#13
Teşekkür ederim kafamdaki bir çok soru gitti, çalışmaya devam inşallah yaparım :)


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 22 Eylül 2013 - 14:01:38

son paketleme esnasında hata alıyorum. Nerede hata yaptım acaba.
karboran@karboran-pc:/tmp/styukleyici-1.0$ dpkg-buildpackage
dpkg-buildpackage: source package styukleyici-1.0
dpkg-buildpackage: source version 1.0-1
dpkg-buildpackage: source changed by KarBoraN <ysfduzgun92@gmail.com>
dpkg-buildpackage: host architecture amd64
dpkg-source --before-build styukleyici-1.0
fakeroot debian/rules clean
dh clean
   dh_testdir
   dh_auto_clean
running clean
'build/lib.linux-x86_64-2.7' does not exist -- can't clean it
'build/bdist.linux-x86_64' does not exist -- can't clean it
removing 'build/scripts-2.7' (and everything under it)
removing 'build'
   dh_clean
dpkg-source -b styukleyici-1.0
dpkg-source: info: using source format `3.0 (quilt)'
dpkg-source: info: building styukleyici-1.0 using existing ./styukleyici-1.0_1.0.orig.tar.gz
dpkg-source: warning: ignoring deletion of directory build
dpkg-source: warning: ignoring deletion of directory build/scripts-2.7
dpkg-source: warning: ignoring deletion of file build/scripts-2.7/styukleyici
dpkg-source: error: cannot represent change to styukleyici-1.0.tar.gz: binary file contents changed
dpkg-source: error: add styukleyici-1.0.tar.gz in debian/source/include-binaries if you want to store the modified binary in the debian tarball
dpkg-source: error: unrepresentable changes to source
dpkg-buildpackage: error: dpkg-source -b styukleyici-1.0 gave error exit status 2
karboran@karboran-pc:/tmp/styukleyici-1.0$ cd ..
karboran@karboran-pc:/tmp$ ls
plugtmp             ssh-p8OcCcwEnreG  styukleyici-1.0_1.0.orig.tar.gz
pulse-PKdhtXMmr18n  styukleyici-1.0   unity_support_test.0




Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 22 Eylül 2013 - 14:07:38

Hazırladığım dosyalar
karboran@karboran-pc:/tmp/styukleyici-1.0$ ls
aboutofme.txt             icon.png  setup.py     styukleyici.desktop
gnome-tweak-tool.desktop  info.txt  styukleyici  styukleyici.py


setup.py
#!/usr/bin/env python
#-*- coding: utf-8 -*-

from distutils.core import setup
import glob
setup(name = "Simge Ve Tema Yükleyici",
version = "1.1.1"[1:],
author = "Yusuf DÜZGÜN",
url = "http://www.yusufduzgun.com",
author_email ="ysfduzgun92@gmail.com",
description = "simge ve tema yükleme programı",
long_description = "Simge ve Tema yüklemeye yarayan bir program",
license = "GPL",
platforms = 'linux',
data_files = [ ("/usr/share/styukleyici",glob.glob('./styukleyici.py') ),
("/usr/share/styukleyici",glob.glob('./icon.png') ),
("/usr/share/styukleyici",glob.glob('./info.txt') ),
("/usr/share/styukleyici",glob.glob('./aboutofme.txt') ),
("/usr/share/applications",glob.glob('./stukleyici.desktop') ),
("/usr/share/applications",glob.glob('./gnome-tweak-tool.desktop') )],
scripts = ['styukleyici']
)


styukleyici
echo '#/bin/bash
cd /usr/share/styukleyici
python ./styukleyici.py



Bu haliyle hazırmı ? . Görünürde eksiği yok gibi ama.
Kabin basıncı düştü motorlarda arıza !
Vakit süratle aksın hakimiyet kur nabıza !
İçinden nasıl geldiyse yaz anlat herşeyi ,
Bu mektup varmıcak hayalini kurduğun kıza !

hitokiri

Debian dizini oluştumu, oluştuysa ordaki dosylarada bir kaç düzenleme daha yapman gerek, oluşmadıysa eğer, baştan bir kontorl et bi şey eksik mi diye , şu an paketleyebildim ben XD
http://ubuntuone.com/5I3Ahes5u1opA7S2uhIaxn
burdan inceleyip gerekli değişikleri yaparak,  dpkg-buildpackage komutuyla yeniden paketleyebilirsin, bin üzerindeki dosyayı düzenlemedim mesela ,bir kaç eskik var .)

karboran

Alıntı YapYine resimdeki yönergeye göre o dosyayla birlikte dizin içindeki dosyaları arşive atmamız gerek,

beni burası batırdı :D resim görünmüyor dosyaları atmadan paketlemeye çalışıyormuşum :D:D

stresliyim biraz :)
Kabin basıncı düştü motorlarda arıza !
Vakit süratle aksın hakimiyet kur nabıza !
İçinden nasıl geldiyse yaz anlat herşeyi ,
Bu mektup varmıcak hayalini kurduğun kıza !

hitokiri

İlgili dosyaları bulabildim sonunda ve ilk iletiyi güncelledim , strese gerek yok , olur elbet .)

karboran

Sizin yapmış olduğunuz paketin içindeki debianın içinde styukleyicinin içinde usr ve DEBIAN klasörleri var orayı siz mi oluşturdunuz yoksa kendimi oluşuyor.

dpkg-source: error: cannot represent change to styukleyici-1.0.tar.gz: binary file contents changed
dpkg-source: error: add styukleyici-1.0.tar.gz in debian/source/include-binaries if you want to store the modified binary in the debian tarball
dpkg-source: error: unrepresentable changes to source
dpkg-buildpackage: error: dpkg-source -b styukleyici-1.0 gave error exit status 2


bu hatayı alıp duruyorum.
Kabin basıncı düştü motorlarda arıza !
Vakit süratle aksın hakimiyet kur nabıza !
İçinden nasıl geldiyse yaz anlat herşeyi ,
Bu mektup varmıcak hayalini kurduğun kıza !

hitokiri

Evet o dosyaları kendisi oluşturuyor yukarıda anlattığı gibi zaten oluşturulan dosyalar içinde düzenlenmesi gereken yerler var.

karboran

Yaptım sonunda çok ama çok teşekkür ediyorum. Kuruluyor herşeyde çalışıyor . Tek sorunu sudo apt-get remove yazınca çıkmıyor. Kaldırma özelliği yokmu :).
Kabin basıncı düştü motorlarda arıza !
Vakit süratle aksın hakimiyet kur nabıza !
İçinden nasıl geldiyse yaz anlat herşeyi ,
Bu mektup varmıcak hayalini kurduğun kıza !

hitokiri

Alıntı yapılan: karboran - 22 Eylül 2013 - 16:59:35
Yaptım sonunda çok ama çok teşekkür ediyorum. Kuruluyor herşeyde çalışıyor . Tek sorunu sudo apt-get remove yazınca çıkmıyor. Kaldırma özelliği yokmu :).
Çıkıyordur, paket ismi neydi acaba ?
<tab>  tuşu ile tamamlamayı dene belki paket ismi   1-0 gibi bir şekilde kalmıştır, veya gdebi gibi bir programla bunu görebilirsin .)

karboran

@hitokiri galiba paketi hazırlarken hazırladığı sistemin bi yerlerini bozmuşum :). Masaüstümde denedim apt-get remove styukleyici-1.0 tak kaldırdı sorunsuz. Tekrar teşekkürler :)
Kabin basıncı düştü motorlarda arıza !
Vakit süratle aksın hakimiyet kur nabıza !
İçinden nasıl geldiyse yaz anlat herşeyi ,
Bu mektup varmıcak hayalini kurduğun kıza !

virs

PyVakitci nin son sürümünü bu yöntemle paketlemeye çalıştım ama olmadı.

setup.py, pyvakitci, control, pyvakitci.desktop dosyaları bu bağlantıda:
http://goo.gl/duZ22s

Kaynak kodlar burada:
http://goo.gl/2e6yI0

sudo python setup.py install sonrası build klasörü de oluşmadı:
$ sudo python setup.py install
/usr/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'script'
  warnings.warn(msg)
running install
running build
running install_data
running install_egg_info
Removing /usr/local/lib/python2.7/dist-packages/PyVakitci-1.5.egg-info
Writing /usr/local/lib/python2.7/dist-packages/PyVakitci-1.5.egg-info


O olmadan yola devam ettiğimde de şu hatayı verdi:
$ dpkg-buildpackage
dpkg-buildpackage: kaynak paketi pyvakitci-1.5
dpkg-buildpackage: kaynak sürümü 1.5-1
dpkg-buildpackage: kaynak tarafından değiştirlidi Rahman Yazgan <rahmanyazgan@gmail.com>
dpkg-buildpackage: sunucu mimarisi i386
dpkg-source --before-build pyvakitci-1.5
fakeroot debian/rules clean
dh clean
   dh_testdir
   dh_auto_clean
/usr/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'script'
  warnings.warn(msg)
running clean
'build/lib.linux-i686-2.7' does not exist -- can't clean it
'build/bdist.linux-i686' does not exist -- can't clean it
'build/scripts-2.7' does not exist -- can't clean it
   dh_clean
dpkg-source -b pyvakitci-1.5
dpkg-source: bilgi: '3.0 (quilt)' kaynak kod formatı kullanılıyor
dpkg-source: bilgi: building pyvakitci-1.5 using existing ./pyvakitci-1.5_1.5.orig.tar.gz
dpkg-source: hata: cannot represent change to pyvakitci-1.5.tar.gz: Çalıştırılabilir dosya içeriği değiştirildi
dpkg-source: hata: add pyvakitci-1.5.tar.gz in debian/source/include-binaries if you want to store the modified binary in the debian tarball
dpkg-source: hata: unrepresentable changes to source
dpkg-buildpackage: hata: dpkg-source -b pyvakitci-1.5 gave error exit status 2
İnsan için ancak çalıştığının karşılığı vardır. (Kur'an: Necm, 39)

hitokiri

#23
setup.py ile ilgili sorun için 13.10 üzerinde şöyle bir şey yapmak gerekiyormuş,
http://stackoverflow.com/questions/12767023/python-packaging
Bu şekilde ilgili dizin oluştui bu aşamayı bu şekilde geçerek eğer bir sonuca ulaşabilirsen , sanırım sorun çözülmüş olur, olmazsa eğer yine bir bakarız. XD
Bu arada program ismi ve versiyon numarısnda olan bir klasörün içine yerleştiriyoruz , ilgili dosyaları .


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 28 Ekim 2013 - 19:35:22

Ve birde bundan önce aslında esas sıkıntı meğer script'te imiş setup.py 'yi şu şekilde kullanabilirsin , bilemiyorum bir hata var mı artık kontrol edersin..
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from distutils.core import setup
import glob


setup (
        name = "PyVakitci",
        version = "1.5",
        url = "http://code.google.com/p/pyvakitci",
        author = "Rahman Yazgan",
        author_email = "rahmanyazgan@gmail.com",
        description = "Namaz vakitlerini gösterir, ezan okur.",
        long_description = "Diyanet verilerine göre tüm ülkeler için namaz vakitlerini gösterir. Ezan ve ezan duasını okur.",
        platforms = "linux",
        data_files = [
                ('/usr/share/applications', glob.glob('./PyVakitci.desktop')),
                ('/usr/share/pyvakitci', glob.glob('./ontanimli_ayarlar.ini')),
                ('/usr/share/pyvakitci', glob.glob('./GPLv3_EN.html')),
                ('/usr/share/pyvakitci', glob.glob('./GPLv3_TR.html')),
                ('/usr/share/pyvakitci', glob.glob('./Program.py')),
                ('/usr/share/pyvakitci/moduller', glob.glob('./moduller/*.*')),
                ('/usr/share/pyvakitci/ses_dosyalari', glob.glob('./ses_dosyalari/*.*')),
                ('/usr/share/pyvakitci/resimler', glob.glob('./resimler/*.*'))
                ],
                scripts = ['pyvakitci'],
    )

virs

#24
Yeni setup dosyasıyla tekrarladım işlemleri.
Tüm adımları baştan birkaç defa yaptım ama aynı hatayı alıyorum.

dpkg-buildpackage: hata: dpkg-source -b pyvakitci-1.5 gave error exit status 2

Sizde deb paketi oluşuyor mu?
İnsan için ancak çalıştığının karşılığı vardır. (Kur'an: Necm, 39)