Ödeme Yöntemleri Abuse

Snap paketi nasıl oluşturulur Ubuntu 16

11.06.2021, 19:26

Snap, Ubuntu dağıtımına yazılım yüklemeyi kolaylaştırmak için Canonical tarafından geliştirilen bir teknolojidir. Nispeten yeni bir gelişmedir. Snap'in geliştirilmesi birkaç yıl içinde gerçekleşti, ancak yalnızca Ubuntu 16.04'ün piyasaya sürülmesiyle kitleler tarafından kullanılmaya hazır bir durumda ortaya çıktı.

Snap'in ana avantajı, programları bağımlılıkları olmadan yükleyebilmesidir. Gerekli tüm kütüphaneler zaten programla birlikte paketin içindedir ve programı çalıştırmak için sistemden hiçbir şey gerekmez. Güncelleme yaparken kullanıcı sistemde değişiklik yapmadan bir snap paketini güncellemek zorundadır ve arıza ve hata durumunda paketi önceki sürüme geri döndürebilir. Web'de kullanıcılar arasında snap teknolojisinin gerçekten iyi olup olmadığı ya da deb paketleri lehine terk edilip edilmemesi gerektiği konusunda sık sık tartışmalara rastlayabilirsiniz. Ancak bunu zaman ve testler gösterecektir. Bu makalede snap paketleri oluşturma sürecine bakacağız. Bunları oluşturmak aynı deb paketlerinden biraz daha kolaydır.

Ubuntu 16.04'te Snap Paketleri Oluşturma

Snap paketleri oluşturmak için Snapcraft adında özel bir araç kullanacağız. Bu, geliştiricinin sistem genelinde gerekli dosyaları oluşturmak için programları paketlemesine olanak tanıyan snap paketleri oluşturmak için resmi bir araçtır. Snapcraft yalnızca dosyaları kopyalamanıza değil, aynı zamanda kaynak kodunu indirmenize ve programı oluşturmanıza da olanak tanır.

Şimdi, örnek olarak Samplenote uygulamasını kullanarak snap paketlerinin nasıl oluşturulacağını görelim.

İlk olarak Snapcraft'ı yükleyin. En son sürümü edinmek için sistemimize bir PPA ekleyin:

$ sudo add-apt-repository ppa:snappy-dev/tools

Şimdi paket listesini güncelleyin ve programı yükleyin:

$ sudo apt-get update
$ sudo apt-get install snapcraft

Snapcraft'ın kurulumu tamamlandığında, programın kaynak kodunu almak için devam edebiliriz. Öncelikle GitHub'dan kaynakları indirin ve açın:

$ wget https://github.com/Automattic/simplenote-electron/releases/download/v1.0.1/Simplenote-linux-x64.1.0.1.tar.gz
$ tar xvzf Simplenote-linux-x64.1.0.1.tar.gz

Programın derlenmesine gerek olmadığı için işimiz biraz daha kolay. Programın bulunduğu klasöre gidin ve Snapcraft derleme ortamını orada başlatın:

$ cd Simplenote-linux-x64
$ snapcraft init

Son komutu çalıştırdıktan sonra snapcraft.yml dosyası klasörde görünecektir. Dosyayı düzenleyerek snap paketimizi oluşturma sürecini yapılandıralım. Aşağıdaki içeriğe sahip bir dosyaya ihtiyacımız olacak:

name: simplenote
version: 1.0.1
summary: The simplest way to keep notes.
description: The simplest way to keep notes. Light, clean, and free.
apps:
simplenote:
command: usr/bin/wrapper
plugs:
- unity7
- opengl
- network
parts:
simplenote:
plugin: copy
stage-packages:
- libnss3
- fontconfig-config
- gnome-themes-standard
files:
Simplenote: Simplenote
wrapper: usr/bin/wrapper
icudtl.dat: icudtl.dat
snapshot_blob.bin: snapshot_blob.bin
natives_blob.bin: natives_blob.bin
resources*: resources
libnode.so: usr/lib/x86_64-linux-gnu/libnode.so
libffmpeg.so: usr/lib/x86_64-linux-gnu/libffmpeg.so

İlk dört satır paketin kendisi hakkında bilgi, programın adı, sürümü ve kısa ve tam bir açıklamadır.

Komut - bu, programı başlatacak komuttur, ayrıca script warpper kullanacağız, çünkü ek ortam değişkenleri belirtmemiz gerekiyor.

Fişler - bunlar program tarafından kullanılabilecek arayüzlerdir. Önemli olan nokta, ek programların donanım ve kişisel verilere erişemedikleri izole bir ortamda çalışmasıdır. Programımızın düzgün çalışması için opengl, unity7 ve arayüzlerine erişim sağlaması gerekir.

Komutu çalıştırarak mevcut arayüzleri ve bunları kullanan programları görebilirsiniz:

$ snap interfaces

Parçalar bölümünde program dosyalarını belirtmeniz gerekir. Özellikle, snapcraft 'ın bir paket oluştururken ne yapması gerektiği. Herhangi bir şeyi derlememiz gerekmediğinden, dosyaları kopyalamak için copy eklentisini kullanırız. Kopyalanması gereken dosyalar dosyalar bölümünde listelenir. Sadece çalıştırılabilir dosyalar değil, aynı zamanda gerekli tüm kütüphaneler de vardır, böylece program ihtiyaç duyduğu tüm bileşenleri alacaktır.

Girişin formatı aşağıdaki gibidir:

system_file: snap_package_file_path

Standart olmayan bir giriş vardır:

resources*: resources

Joker karakter * tüm dizini kopyalamanızı sağlar. Tüm dosyaların sistemden kopyalanmasını önlemek için, site-packages bölümünde programa hangi paketlerin snap paketine yüklenmesi gerektiğini söyleyen bir seçenek vardır, bizim durumumuzda bunlar libnss3, fontconfig-config-config ve gnome-themes-standard'dır.

Programın hangi kütüphaneleri kullandığını görmek için komutu kullanabilirsiniz:

ldd Simplenote | grep Simplenote
libnode.so => /home/sergiy/test/Simplenote/Simplenote-linux-x64/./libnode.so (0x00007f05fb477000)
libffmpeg.so => /home/sergiy/test/Simplenote/Simplenote-linux-x64/./libffmpeg.so (0x00007f05f61ec000)

Önemli olan bu kütüphanelerin programla birlikte gönderilmesidir, bu yüzden snapcraft.yaml yapılandırma dosyasında bunları belirtmemiz gerekir. Diğer tüm kütüphaneler sistemde mevcuttur ve snapcraft tarafından otomatik olarak algılanacaktır.

Sonra, sarmalayıcı dosyasını oluşturalım:

!/bin/sh
export FONTCONFIG_PATH=$SNAP/etc/fonts
export FONTCONFIG_FILE=$SNAP/etc/fonts/fonts.conf
export XDG_DATA_HOME=$SNAP/usr/share
export LD_LIBRARY_PATH=$SNAP_LIBRARY_PATH:$SNAP/usr/lib/x86_64-linux-gnu/
exec "$SNAP/Simplenote" "$@"

Bu çok basit - bir Bash betiği. Yazı tipleri için yolları ayarlayın ve programa kütüphaneleri nerede arayacağını söyleyin, böylece libnote. so ve libffmpeg.so başarıyla bulunur. Ve son satır simplenote'u başlatır.

Yapılacak bir sonraki şey bu dosyayı çalıştırılabilir hale getirmektir:

$ chmod +x wrapper

Paketi oluşturmaya başlamak için çalıştırın:

$ snapcraft

Derleme işlemi biraz zaman alabilir ve derleme tamamlandığında paketi kurabilirsiniz:

$ sudo snap install simplenote_1.0.1_amd64.snap

Programı çalıştırmak için normal komutu kullanabilirsiniz:

$ simplenote

Şimdi program yüklenmiştir. Uygulamalarınızı paketlemek için aynı ek paket oluşturma yöntemini kullanabilirsiniz.