GNU/Linux >> Belajar Linux >  >> Debian

Debian – Bagaimana Cara Menginstal Perangkat Lunak Versi Terbaru Daripada Apa yang Disediakan Debian?

Misalkan saya menginginkan versi perangkat lunak yang lebih baru daripada yang tersedia untuk versi sistem operasi saya saat ini, apa yang dapat saya lakukan?

Kasus untuk dipertimbangkan:

  1. Ada sumber semiresmi/resmi dari paket tambahan
    yang tersedia untuk versi OS tersebut. Misalnya. backports.org untuk Debian
    atau PPA untuk Ubuntu.
  2. Tidak ada versi terbaru dari paket yang tersedia untuk
    versi OS tersebut, tetapi ada versi terbaru yang tersedia untuk
    versi OS yang lebih baru. Ini adalah kasus standar untuk
    backport.
  3. Tidak ada versi paket dari versi perangkat lunak
    yang lebih baru yang tersedia. Opsi yang tersedia adalah mengemas versi
    yang lebih baru.

Jawaban yang Diterima:

(Jika Anda memiliki pertanyaan/komentar tentang jawaban ini, silakan tambahkan komentar. Atau, jika Anda memiliki perwakilan yang cukup, Anda dapat melakukan ping ke saya di obrolan.)

Menginstal langsung paket biner dari versi Debian yang lebih baru – bukan jawabannya.

Misalkan Anda menjalankan beberapa versi distribusi berbasis Debian. Anda menginginkan versi paket yang lebih baru daripada yang tersedia untuk Anda. Hal pertama yang setiap pemula coba lakukan adalah menginstal paket biner langsung di versi Debian Anda. Ini mungkin berfungsi atau tidak, tergantung pada versi apa yang Anda jalankan, dan seberapa baru paketnya. Secara umum, prosedur ini tidak akan berjalan dengan baik.

Pertimbangkan misalnya kasus di mana seseorang mencoba menginstal paket biner dari pengujian/tidak stabil langsung ke stabil. Ini kemungkinan besar tidak akan berjalan dengan baik, kecuali pengujian/tidak stabil terjadi sangat dekat dengan stabil pada saat itu. Alasannya ada hubungannya dengan sifat distribusi biner berbasis Linux seperti Debian. Sistem operasi semacam itu sangat bergantung pada pustaka bersama, dan dependensi ini seringkali sangat bergantung pada versi; seringkali jauh lebih dari yang diperlukan. Debian saat ini tidak memiliki cara yang baik untuk membuat dependensi versi menjadi "ketat" – cara singkat untuk mengatakan bahwa ketergantungan versi sama ketatnya dengan yang diperlukan.

Apa artinya ini bagi pengguna? Misalkan misalnya Anda mencoba menginstal katakan slrn dari Debian tidak stabil ke Debian stabil. Seperti apa bentuknya?

# apt-get install slrn/unstable
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Selected version '1.0.1-10' (Debian:testing [amd64]) for 'slrn'
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 slrn : Depends: libc6 (>= 2.15) but 2.13-38+deb7u1 is to be installed
E: Unable to correct problems, you have held broken packages.

Terlepas dari kesalahan yang dihasilkan oleh apt , tidak ada paket yang rusak di sini. Jadi, apa yang salah? Masalahnya adalah versi libc6 bahwa slrn . yang tidak stabil dikompilasi terhadap berbeda (dan memiliki nomor versi yang lebih tinggi) dari yang tersedia di stabil Debian. (libc6 adalah perpustakaan GNU C. Pustaka C adalah pusat dari sistem operasi mirip Unix, dan pustaka C GNU adalah versi yang umumnya digunakan oleh sistem operasi berbasis Linux.)

Oleh karena itu slrn unstable yang tidak stabil memerlukan versi libc6 bernomor lebih tinggi dari yang tersedia untuk stabil. Perhatikan bahwa karena sebuah paket telah dikompilasi dengan versi pustaka yang lebih tinggi tidak selalu memerlukan versi pustaka yang lebih tinggi, tetapi seringkali demikian.

Sintaksnya

apt-get install slrn/unstable

artinya:gunakan slrn yang tidak stabil tetapi untuk semua paket lainnya hanya menggunakan versi dari stable. Untuk lebih tepatnya, ini menggunakan nomor prioritas. Lihat man apt_preferences untuk detailnya.

Seseorang juga dapat melakukannya

apt-get install -t unstable slrn

Ini jauh lebih mungkin berhasil, tetapi Anda biasanya tidak ingin melakukannya. Mengapa?

Ini berarti:obati semua untuk sementara paket-paket dalam keadaan tidak stabil pada pijakan yang sama dengan paket-paket dalam keadaan stabil. Oleh karena itu ini akan menarik slrn yang tidak stabil dependensi dari tidak stabil jika mereka dari nomor versi yang lebih tinggi, dan mereka umumnya akan. Ini umumnya akan menyertakan pustaka GNU C untuk alasan yang telah dijelaskan. Sekarang, pendekatan ini umumnya akan "berhasil", di mana dependensi akan dipenuhi menurut definisi (slrn tidak stabil memiliki dependensi yang dipenuhi dalam ketidakstabilan), tetapi Anda berakhir dengan campuran paket yang tiba-tiba dipaksa untuk dijalankan dengan versi perpustakaan yang berbeda dari tujuan pembuatannya. Ini mungkin tidak akan berakhir dengan baik.

Terkait:batasi temukan keluaran DAN hindari sinyal 13?

Jawabannya adalah… BACKPORTS!

Jadi, apa cara yang benar untuk melakukan ini? Ini untuk membangun kembali sumber Debian dari versi yang lebih baru di sistem Anda, yang dikenal sebagai “backporting”.
Pertimbangkan kasus berikut:

Ada sumber semi-resmi/resmi dari paket tambahan yang tersedia untuk versi Debian tersebut.

Tempat pertama yang harus dilihat adalah Debian Backports, yang merupakan situs resmi untuk backport Debian.

Untuk contoh konkret:

Tambahkan baris backport yang sesuai untuk rilis Anda dan perbarui untuk menemukan paket baru kemudian instal sesuatu dari backport secara eksplisit (karena backport dinonaktifkan secara default).

echo "deb http://ftp.debian.org/debian stretch-backports main" | sudo tee /etc/apt/sources.list.d/stretch-backports.list
sudo apt-get update
sudo apt-get install -t stretch-backports git

Ini akan mendapatkan versi stabil terbaru dari git yang memiliki fitur-fitur baru yang berguna daripada yang stabil yang disertakan dengan peregangan (mis. 'termasuk' yang memungkinkan Anda untuk menggabungkan beberapa file konfigurasi atau mengubah nama pengguna Anda untuk ~/work/projects/ vs ~/personal/ proyek/).

Tempat lain untuk dilihat adalah berbagai PPA oleh pengelola Ubuntu. Anda dapat melakukan pencarian untuk “packagename PPA”.

Tidak ada versi terbaru dari paket yang tersedia untuk versi OS tersebut, tetapi ada versi terbaru yang tersedia untuk versi/rilis OS yang lebih baru. Ini adalah kasus standar untuk backport.

Backporting berarti Anda membangun kembali sumber Debian dari versi Debian yang lebih baru pada versi yang Anda jalankan. Prosedur ini mungkin mudah atau terlibat dan sulit tergantung pada paketnya. Berikut adalah garis besar cara melakukannya.

Tutorial Singkat Backporting untuk Pemula

Untuk konkretnya, saya akan menganggap Anda menjalankan stabil Debian saat ini, saat ini mengi. Saya akan menggunakan paket slrn sebagai contoh.

Pertama, perhatikan bahwa semua file pengemasan Debian berada di debian/ subdirektori dari direktori sumber.

Langkah pertama adalah memeriksa apakah versi yang lebih baru tersedia. Anda dapat melakukannya menggunakan apt-cache policy .

apt-cache policy slrn

slrn:
  Installed: 1.0.0~pre18-1.3
  Candidate: 1.0.0~pre18-1.3
  Version table:
     1.0.1-10 0
         50 http://debian.lcs.mit.edu/debian/ testing/main amd64 Packages
         50 http://debian.lcs.mit.edu/debian/ unstable/main amd64 Packages
 *** 1.0.0~pre18-1.3 0
        500 http://debian.lcs.mit.edu/debian/ wheezy/main amd64 Packages
        100 /var/lib/dpkg/status
     1.0.0~pre18-1.1 0
        500 http://debian.lcs.mit.edu/debian/ squeeze/main amd64 Packages

Kami ingin mem-backport 1.0.1-10 .

LANGKAH 1:

NB:Pastikan bahwa deb-src baris untuk versi sumber yang ingin Anda unduh muncul di /etc/apt/sources.list Anda . Misalnya, jika Anda ingin mengunduh versi slrn yang tidak stabil , Anda memerlukan deb-src saluran untuk tidak stabil, atau tidak akan berfungsi. Perhatikan bahwa Anda tidak memerlukan deb yang sesuai baris untuk mengunduh sumber, meskipun apt-cache policy menggunakan informasi itu, jadi jika Anda tidak memiliki deb yang sesuai baris, lalu apt-cache policy tidak akan menunjukkan versi yang relevan kepada Anda. Jika Anda memiliki deb baris, jangan lupa untuk menyematkan versi yang lebih baru menggunakan entri di /etc/apt/preferences atau serupa. Entri di /etc/apt/preferences seperti ini (untuk tidak stabil) akan bekerja, misalnya.

Package: *
Pin: release a=unstable
Pin-Priority: 50

Jika Anda menambahkan baris di /etc/apt/sources.list , jangan lupa jalankan apt-get update setelah itu.

Unduh sumber untuk slrn . Tempat yang bagus adalah /usr/local/src/slrn .

apt-get source slrn=1.0.1-10

LANGKAH 2:

Ubah nomor versi sedikit, untuk membedakan backport Anda dari versi upstream. Jalankan dch --bpo , yang secara otomatis akan menambahkan entri ke debian/changelog file dengan nomor versi yang sesuai, misalnya

slrn (1.0.1-10~bpo10+1) UNRELEASED; urgency=low

  * Backport to buster.

 -- User <[email protected]>  Sun, 02 Feb 2014 23:54:13 +0530

LANGKAH 3:

Mencoba untuk membangun sumber. Jika paket yang diperlukan untuk pembangunan tidak tersedia, maka upaya akan gagal. Ubah direktori menjadi direktori sumber. Gunakan debuild dari devtools paket.

cd slrn-1.0.1/
debuild -uc -us

Jika dependensi build terpenuhi, maka sumber akan membangun dan menghasilkan beberapa deb pada tingkat di atas direktori sumber; dalam hal ini /usr/local/src/slrn .

LANGKAH 4:

Misalkan dependensi build tidak terpenuhi. Maka Anda perlu mencoba menginstal dependensi build. Ini mungkin berfungsi atau tidak, karena dependensi mungkin tidak tersedia untuk versi Anda, atau jika tersedia, mungkin tidak tersedia di versi yang tepat.

NB:Sayangnya tidak jarang paket Debian memerlukan versi dependensi build yang lebih tinggi dari yang diperlukan. Tidak ada cara otomatis di Debian untuk memeriksa ini, dan seringkali pengelola paket tidak peduli selama itu bekerja pada versi/rilis yang sesuai. Oleh karena itu, ambil sikap skeptis terhadap versi ketergantungan, dan gunakan akal sehat. Misalnya, paket yang digunakan secara luas seperti Python dan alat GNU tidak akan bergantung pada versi dependensi yang sangat spesifik, terlepas dari daftar paket Debian.

Terkait:Debian – Bagaimana kami memprediksi kapan rilis Debian berikutnya akan keluar?

Bagaimanapun, Anda dapat mencoba menginstalnya dengan melakukan

apt-get build-dep slrn=1.0.1-10

Jika ini berhasil, coba buat paket lagi (LANGKAH 2). Jika gagal, maka pekerjaan lebih lanjut diperlukan. Perhatikan bahwa debuild lihat Build Dependencies di debian/control file, dan Anda dapat mengubahnya jika perlu. Jadi mari kita bicarakan itu sekarang. Berikut adalah Ketergantungan Build untuk slrn.

Build-Depends: debhelper (>=9), libslang2-dev, libuu-dev,
 exim4 | mail-transport-agent, libgnutls-openssl-dev, po-debconf, autoconf,
 libcanlock2-dev, autotools-dev, dpkg-dev (>= 1.16.0), chrpath, dh-autoreconf, inn2-inews

Alternatif untuk menggunakan apt-get build-dep adalah menginstal ini secara manual, dengan melakukan

apt-get install debhelper libslang2-dev ...

Jika Anda mulai mengubah nilai-nilai ini di file kontrol, maka Anda harus beralih ke instalasi manual, seperti apt-get build-dep tidak akan lagi melakukan hal yang benar.

Tidak ada versi paket dari versi perangkat lunak yang lebih baru yang tersedia. Opsi yang tersedia adalah mengemas versi yang lebih baru.

Dalam banyak kasus, seseorang dapat menggunakan kembali kemasan dari versi perangkat lunak sebelumnya bersama dengan sumber yang lebih baru. Pendekatan ini dapat mengalami masalah, terutama tambalan yang diterapkan ke versi perangkat lunak sebelumnya mungkin tidak berlaku di sini, jadi orang mungkin perlu menyinkronkannya kembali dengan sumbernya. Format source 3.0 (quilt) yang sekarang menjadi standar menggunakan quilt, dan patch terletak di debian/patches direktori.

Namun, diskusi mendetail tentang masalah ini berada di luar cakupan postingan ini.


Debian
  1. Cara Menginstal Docker dan Docker Compose di Debian 11

  2. Cara Menginstal Paket Debian Offline

  3. Cara Menginstal Paket RPM di Debian 11 Bullseye

  1. Cara Menginstal Java di Debian 9

  2. Cara Menginstal R di Debian 9

  3. Cara Menginstal Apache Maven di Debian 9

  1. Cara Menginstal Git di Debian 10 Linux

  2. Cara Menginstal Apache Maven di Debian 10

  3. Cara Menginstal R di Debian 10