Kuliax

GNU/Linux untuk Kampus

Alat Pengguna

Alat Situs


devel:pkg:backport:manual

Melakukan Backport Paket

Tujuan

Menggunakan program dengan versi terbaru di sistem dengan rilis lama, misal menjalankan OpenOffice.org 3.1.1 dari rilis unstable di sistem dengan rilis stable.

Cara yang umum digunakan adalah membangun ulang program dari rilis terbaru dengan dependensi pustaka pada rilis lama. Jika dibutuhkan pustaka yang hanya terdapat di rilis baru, kita perlu melakukan backport terhadap pustaka tersebut.

Cara Cepat

Cara yang paling cepat untuk menjalankan program dengan versi baru di sistem dengan rilis stable adalah menggunakan repositori backports yang sudah disediakan oleh backports.org dan repo lainnya seperti debian-unofficial, apt-get.org.

Pengembang diharapkan menggunakan paket-paket yang sudah di-backport dari backports.org untuk menghindari aktivitas yang berulang (reinventing the wheel) dan masalah keamanan isi paket (trust).

Jadi yang perlu dilakukan adalah:

  1. apt-get install debian-backports-keyring
  2. jika tidak ada paket dengan versi yang diinginkan, lakukan backport dan ujicoba paket
  3. usahakan untuk meminimalkan dependensi paket di luar rilis stable yang digunakan, sehingga kita tidak perlu melakukan backport pada paket dependensi tersebut
  4. letakkan paket dalam pohon repo rilis Kuliax, hal ini akan dibahas pada halaman yang lain.

Kunci GPG

Untuk melihat daftar kunci gpg

gpg --list-keys
/home/stwn/.gnupg/pubring.gpg
-----------------------------
pub   1024D/F0D6B1E0 2004-06-06
uid                  TrueCrypt Foundation <contact@truecrypt.org>
sub   4077g/6B136ECF 2004-06-06

pub   1024D/517D0F0E 2000-10-10
uid                  Linux Kernel Archives Verification Key <ftpadmin@kernel.org>
sub   4096g/E50A8F2A 2000-10-10

pub   1024D/16BA136C 2005-08-21
uid                  Backports.org Archive Key <ftp-master@backports.org>
sub   2048g/5B82CECE 2005-08-21

Untuk mengekspor kunci gpg backports ke format teks ascii adalah dengan perintah

gpg --armor export 16BA136C > backports.asc

Kebutuhan

  • Debian 5.0
  • Paket-paket pengembangan: build-essential, debhelper, debootstrap/cdebootstrap, devscripts, fakeroot, gpg

Langkah-Langkah

  1. Tambahkan deb-src pada berkas sources.list
    deb-src http://repo/debian/ stable main contrib non-free
    deb-src http://repo/debian/ testing main contrib non-free
    deb-src http://repo/debian/ unstable main contrib non-free
  2. Lakukan APT pinning untuk paket kode sumber Debian, sunting berkas /etc/apt/preferences
    Package: *
    Pin: release a=stable
    Pin-Priority: 300
    
    Package: *
    Pin: release a=testing
    Pin-Priority: 200
    
    Package: *
    Pin: release a=unstable
    Pin-Priority: 100
  3. Mutakhirkan indeks paket dengan
    apt-get update
  4. Pasang dependensi paket sumber yang akan dibangun ulang (backport)
    apt-get build-dep paket
  5. Unduh dan bangun paket
    apt-get -b source paket
  6. Cek dengan lintian dan linda

Contoh Proses Backport

Aplikasi yang digunakan sebagai contoh backport adalah KTechlab. Kita akan melakukan proses backport dari rilis unstable Debian ke stable.

Masalah yang dihadapi adalah pada versi lama program ini terdapat kutu yang membuat crash saat komponen dimasukkan ke lembar kerja, selain itu terdapat versi baru dari upstream pada bulan November 2009.

  1. Periksa dependensi ktechlab
    sudo apt-get build-dep ktechlab

    dpkg-checkbuilddeps?

  2. Backport chrpath, karena paket ini berasal dari unstable
    sudo apt-get build-dep chrpath
    sudo apt-get -b source chrpath
    sudo dpkg -i chrpath_0.13-2_i386.deb
  3. Backport automake1.9
    sudo apt-get build-dep automake1.9
    sudo apt-get -b source automake1.9
    sudo dpkg -i automake1.9_1.9.6+nogfdl-3_all.deb
  4. Backport dbs
    sudo apt-get build-dep dbs
    sudo apt-get -b source dbs
    sudo dpkg -i dbs_0.45_all.deb
  5. Backport cvs
    sudo apt-get build-dep cvs
    sudo apt-get -b source cvs
    sudo dpkg -i cvs_1.12.13-12_i386.deb
  6. Backport gpsim
    sudo apt-get -b source gpsim
    sudo dpkg -i gpsim_0.22.0-5.2_i386.deb
    sudo dpkg -i gpsim-dev_0.22.0-5.2_i386.deb
  7. Pasang paket-paket dependensi build ktechlab dari stable
    sudo apt-get -t stable install cmake kdelibs4-dev libreadline5-dev \
    libpopt-dev flex libtool libgtkextra-x11-2.0-dev libopts25-dev kdesdk-scripts
  8. Backport ktechlab
    sudo apt-get -b source ktechlab
  9. Pasang dan ujicoba ktechlab
    sudo dpkg -i ktechlab_0.3.7-3_i386.deb
  10. Simpan checksum paket deb untuk tujuan pemeriksaan integritas oleh pengembang
    sha256sum *.deb > sha256sum.deb

    Bila perlu lakukan sign, akan dibahas pada saat mendatang

squashfs-tools

  • Unduh kode sumber squashfs-tools: squashfs-tools_4.0.orig.tar.gz, squashfs-tools_4.0-6.dsc, dan squashfs-tools_4.0-6.diff.gz dari repo debian terdekat atau gunakan perintah
    sudo apt-get -t testing source squashfs-tools
  • Hasilkan checksum untuk paket-paketnya
    sha256sum * > squashfs-tools.sha256
  • Pasang paket debhelper dari rilis testing dan quilt dari backports
  • Bangun paket
    apt-get -b source squashfs-tools

    ekstrak, tambal, dan bangun

  • Pasang paket hasil build
    dpkg -i squashfs-tools_4.0-6_i386.deb

Catatan

Langkah-langkah melakukan backport sebenarnya tidak semudah yang sudah ditulis di atas ;-)

Kita perlu mengulang dua langkah terakhir untuk masing-masing dependensi paket yang tidak terdapat pada rilis stable, atau paket program membutuhkan fitur pada versi yang hanya ada pada rilis baru. Selain itu diperlukan proses troubleshooting dan debugging jika terdapat pesan kesalahan

Contoh kita akan membangun paket abiword 2.8 yang hanya ada di unstable:

$ sudo apt-get build-dep abiword
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Build-Depends dependency for abiword cannot be satisfied because no available versions of package libasio-dev can satisfy version requirements

Kita perlu melakukan backport libasio-dev terlebih dulu

sudo apt-get build-dep libasio-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  automake libboost-date-time-dev libboost-date-time1.34.1 libboost-dev libboost-doc libboost-filesystem-dev libboost-filesystem1.34.1
  libboost-graph-dev libboost-graph1.34.1 libboost-iostreams-dev libboost-iostreams1.34.1 libboost-program-options-dev
  libboost-program-options1.34.1 libboost-python-dev libboost-python1.34.1 libboost-regex-dev libboost-serialization-dev
  libboost-serialization1.34.1 libboost-signals-dev libboost-signals1.34.1 libboost-test-dev libboost-test1.34.1 libboost-thread-dev
  libboost-thread1.34.1 libboost-wave-dev libboost-wave1.34.1 libicu-dev python-dev python2.5-dev
0 upgraded, 29 newly installed, 0 to remove and 85 not upgraded.
Need to get 0B/35.2MB of archives.
After this operation, 163MB of additional disk space will be used.
Do you want to continue [Y/n]?
sudo apt-get -b source libasio-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done

Daftar Bacaan

devel/pkg/backport/manual.txt ยท Terakhir diubah: 2010/01/13 14:48 (Perubahan eksternal)