PPA'yı nasıl oluştururum?


Yanıtlar:


97

Kişisel Paket Arşivi ( PPA ) kullanarak, yazılım ve güncellemeleri doğrudan Ubuntu kullanıcılarına dağıtabilirsiniz. Kaynak paketinizi oluşturun, yükleyin ve Launchpad ikilik dosyalar oluşturacak ve daha sonra kendi uygun deponuzda barındıracaktır.

İşte ayrıntılı bir açıklama .


5
FWIW Davranış kurallarını imzalamadan önce PPA'mı aktif hale getirdim.
Sparhawk

2
Bu en iyi cevap. Sadece bir PPA nasıl oluşturulacağı size söylendi. Aşağıdaki cevap (totti tarafından), bir PPA değil, bir kamu deposudur. İkisi de aynı şeyi başarmasına rağmen (potansiyel olarak) farklıdır. Hatta cevabının ilk satırında bile: "Bu sorunun iyi yazılmış, kabul edilmiş bir cevabı var. OP, paketlerini yayınlamak için basit bir yol istediği için, kolay bir saldırı veriyorum." Çünkü sen kolay kesmeyi tercih ediyorsun, en iyi cevabı vermiyor.
lbaile200

Tamam, ancak bu cevaptaki bağlantılardan hiçbiri gerçekten nasıl sıfırdan yapılacağını açıklamıyor. Buradaki tüm linkler zaten geliştiricilere
yöneliktir

1
@ rubo77 - "nasıl yaratılır" kesinlikle cevap verilemeyecek kadar geniştir. Her şey ne paketlemeye çalıştığınıza bağlı. Nitekim, yukarıdaki cevaptaki adımların her biri, her biri için ayrıntılı cevapları olan bireysel Q'lar olabilir.
fossfreedom


86

Bir .deb dosyası nasıl oluşturulur

Bu, belirli bir örnek komut dosyasından temel bir .deb dosyası oluşturma konusunda bir öğreticidir. Bu derste, ilk önce bash olarak 'PROGRAM'DAN HELLO'yu gösteren örnek bir program oluşturuyoruz . Daha sonra debian kurucu yapmak için program için bir kontrol dosyası oluşturuyoruz . Sonunda bir .debdosya halinde paketlenirler .

Adımlar:

  1. bash'ta örnek bir program yarat

    mkdir "$HOME/create_deb/pgmdir"
    gedit "$HOME/create_deb/pgmdir/zenity_hello.sh"
    

    aşağıdaki kodu içine yapıştırın

    #!/bin/bash
    echo 'HELLO FROM PROGRAM' | zenity --text-info 
    
  2. Programı çalıştırılabilir yap

    chmod +x "$HOME/create_deb/pgmdir/zenity_hello.sh"
    
  3. Debian paketi için kontrol dosyası oluştur

    controlKlasör içinde bir dosya oluşturunDEBIAN

    mkdir "$HOME"/create_deb/DEBIAN
    gedit "$HOME"/create_deb/DEBIAN/control
    

    ve aşağıdaki ayrıntıları yapıştırın

    Package: hellodeb
    Version: 0.1
    Architecture: all
    Maintainer: totti
    Installed-Size: 6
    Depends: zenity, bash
    Section: testing
    Priority: optional
    Homepage: http://askubuntu.com
    Description: This is my first debian package.
     Guided by Totti Torvalds.
     In Description new line start with a space.
    

    İsterseniz içerikleri düzenleyebilirsiniz. Burada ve burada bu dosyanın formatı hakkında daha fazla bilgi edinin .

  4. postinstPaket yüklendikten hemen sonra çalıştırılan komut dosyasını oluşturun

    gedit "$HOME"/create_deb/DEBIAN/postinst
    

    sonra yapıştır

    #!/bin/sh
    set -e
    echo 'Installing program : zenity_hello.sh ......' | zenity --text-info
    

    ve çalıştırılabilir yap

    chmod +x "$HOME/create_deb/DEBIAN/postinst"
    
  5. prermPaket kaldırılmadan önce yürütülen komut dosyasını oluşturun.

    #!/bin/sh
    set -e
    echo 'Removing program : zenity_hello.sh ......' | zenity --text-info
    

    ve çalıştırılabilir yap

    chmod +x "$HOME/create_deb/DEBIAN/prerm"
    
  6. Paket yapısını yapın ve programları, verileri vb. Kopyalayın
    . Yüklü programlarınızın ve verilerinin bir yapısını oluşturun. Bu örnekte dosyayı koyduk /bin.

    mkdir -p "$HOME"/create_deb/bin
    cp "$HOME/create_deb/pgmdir/zenity_hello.sh" "$HOME/create_deb/bin/zenity_hello"
    
  7. İnşa .deb dosyasını.

    dpkg-deb --build "$HOME"/create_deb .
    

    .İrade oto isim .debsürümü, kemer vb Veya özel adıyla dosyayı

    dpkg-deb --build "$HOME"/create_deb "$HOME"/create_deb/hellodeb.deb
    

    Veya .deb dosyasını ile oluşturursanız

    debuild -k'your GPG key here' -S
    

    o zaman ile Ubuntu Launchpad’e yükleyebilirsiniz.

    dput ppa:<lp-username>/<ppa-name> packet-source.changes
    

    Burada açıklandığı gibi (kaynak: scriptlerden veya ikili dosyalardan bir .deb paketi oluşturun )

  8. Yeni oluşturulan .debpaketi yükleyin . İle açabilirsiniz, software-centerancak yüklemenize izin vermeyebilir. Bu yüzden gdebipaket yöneticisini kullanmanızı öneririm .

    sudo apt-get install gdebi
    
    gdebi "$HOME"/create_deb/hellodeb.deb
    

    Şimdi yükleyebilirsiniz. Kurulum sırasında bir gtk diyaloğu görmelisiniz

    Yükleme programı: zenity_hello.sh ......

  9. Taktıktan sonra bir terminal açın ve yazın zenity_hello. Program doğru kurulmuşsa ve her şey yolundaysa bir gtk diyalogu görmelisiniz

    PROGRAMDAN HELLO

  10. Paketi çıkarma

    sudo apt-get remove zenity_hello
    

Deponuzu 2 dakika içinde yayınlayın

OP, paketlerini yayınlamak için basit bir yol istediği için, kolay bir saldırı veriyorum.

gereksinimi: ortak bir klasör içeren dropbox (veya örneğin github için herhangi bir hizmet ).

  1. Public-Dropbox-Folder içinde * .deb Dosyalarınızı koyduğunuz bir klasör oluşturun:

    mkdir ~/Dropbox/Public/deb-packages  
    

    veya bu klasörü başka bir yerde oluşturun ve Ortak klasörünüze bir link ekleyin:

    mkdir ~/deb-packages
    cd ~/Dropbox/Public
    ln -s ~/deb-packages/ deb-packages
    
  2. Bu klasöre gidin ve çalıştırıldığında, deb paketleri hakkında gerekli tüm bilgileri içeren Packages.gz dosyasını oluşturan bir komut dosyası oluşturun. yaratmak, yapmak, tasarlamak, üretmek:

    gedit import.sh  
    

    Bunu içine koy:

    #!/bin/bash
    dpkg-scanpackages . /dev/null |gzip > Packages.gz
    

    çalıştırılabilir yap:

    chmod  x import.sh
    
  3. Bazı * .deb Dosyalarını Klasöre kopyalayın. Başka depolarda bulunmayan, kendiniz veya bir kısmı olabilir. Ardından Klasöre gidin ve buraya koyduğumuz komut dosyasını yürütün:

    cd ~/deb-packages/ 
    ./import.sh
    

    Bu , hangi depoda bu depoda bulunduğunu bilmek isteyen apt adlı paketler.gz Dosyası'nı yaratmalıdır .


Bu kadar

Şimdi, Dropbox'ın Klasörü senkronize etmesini ve Genel-URL'siniPackages.gz . Bunun gibi bir şeye benzemeli:

http://dl.getdropbox.../Packages.gz

Bu bağlantının sonundan kurtulun, ona biraz daha kelime koyun; şimdi aşağıdakileri kullanın ve kopyalayabilirsiniz.

deb http://dl.getdropbox.../deb-packages ./

İşte kendi borç deponuzu yayınladınız. Her zaman yerel olarak senkronize edilir, ancak herhangi bir zamanda, herhangi bir zamanda, herhangi bir yerde kullanılabilir.

NOT: dpkg-scanpackages edinilebilir dpkg-dev
referans


3
+1 Harika! Bu çalıştı: Ben Github kullanılan ve bir klasör için ham dizin var releases/bakın github.com/rubo77/mouse-speed/blob/master/release/...
rubo77

Bu, kendi kendine barındırılan bir
PPA'yı

3
.Deb dosyasını 7. adımda oluşturursanız , burada açıklanan şekilde Launchpad'e debuild -us -uc -k'your GPG key here'yükleyebilirsiniz (kaynak: scriptler veya ikili dosyalardan bir .deb paketi oluşturun )dput ppa:<lp-username>/<ppa-name> packet-source.changes
rubo77

@ rubo77, Teşekkürler, cevabımın sonuna bu bilgileri eklemenizi rica ediyorum.
totti

1
Tamam, yeni yaptım, ayrıca, Launchpad'in şu anda .deb dosyasını oluşturmaması için başka parametrelere ihtiyacınız olduğunu da öğrendim (sadece -S): debuild -k'your GPG key here' -Sçünkü Launchpad deb dosyasını oluşturacak (reddedilmediyse) - ne -us -uc` için olurdu?
rubo77

2

Bir PPA oluşturmak için bir Launchpad.net hesabına ihtiyacınız olacak. Kullanıcıyı Launchpad'de (sol üstteki isminize tıklayın) tıklayın ve bir PPA oluşturun. İlk önce Davranış Kurallarını imzalamanız ve hesabınıza kayıtlı bir GPG anahtarınızın olması gerekebilir.

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.