Bagaimana saya bisa menjalankan stabil Debian tetapi menginstal beberapa paket dari pengujian?

206

Katakanlah Anda menjalankan server dan Anda tidak ingin memutakhirkan ke Testing (Squeeze) dari Stable (Lenny) untuk hanya menginstal satu atau dua paket yang diperlukan.

Apa cara terbaik untuk menginstal hanya paket tertentu dari Pengujian?

Gareth
sumber
2
Inilah yang dikatakan oleh dokumentasi resmi terbaru: Paket-paket dari beragam sumber arsip .
Alexey

Jawaban:

183

Banyak orang tampaknya takut mencampur stabil dengan pengujian, tetapi terus terang, pengujian cukup stabil dalam dirinya sendiri, dan dengan preferensi yang tepat dan pemeriksaan solusi, Anda dapat menghindari "stabilitas drift" yang menempatkan paket inti Anda di jalur yang tidak stabil.

"Pengujian cukup stabil ??" , Anda bertanya. Iya. Agar paket dapat bermigrasi dari tidak stabil ke pengujian, paket tidak boleh memiliki bug terbuka selama 10 hari berturut-turut. Kemungkinannya adalah, terutama untuk paket yang lebih populer, seseorang akan mengirimkan laporan bug untuk versi yang tidak stabil jika ada sesuatu yang salah.

Bahkan jika Anda tidak ingin mencampurkan lingkungan, masih bagus untuk memiliki opsi di sana jika Anda mengalami sesuatu yang memerlukan versi yang lebih baru daripada yang ada di stabil.

Inilah yang saya rekomendasikan untuk pengaturan ini:

Pertama, buat file berikut di /etc/apt/preferences.d:

stable.pref:

# 500 <= P < 990: causes a version to be installed unless there is a
# version available belonging to the target release or the installed
# version is more recent

Package: *
Pin: release a=stable
Pin-Priority: 900

testing.pref:

# 100 <= P < 500: causes a version to be installed unless there is a
# version available belonging to some other distribution or the installed
# version is more recent

Package: *
Pin: release a=testing
Pin-Priority: 400

unstable.pref:

# 0 < P < 100: causes a version to be installed only if there is no
# installed version of the package

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

experimental.pref:

# 0 < P < 100: causes a version to be installed only if there is no
# installed version of the package

Package: *
Pin: release a=experimental
Pin-Priority: 1

(Jangan takut dengan hal-hal yang tidak stabil / eksperimental di sini. Prioritasnya cukup rendah sehingga tidak akan pernah secara otomatis menginstal hal-hal itu. Bahkan cabang pengujian akan berperilaku, karena hanya akan menginstal paket yang Anda inginkan. dalam pengujian.)

Sekarang, membuat set yang cocok untuk /etc/apt/sources.list.d:

stable.list: Salin dari sumber asli Anda /etc/apt/sources.list. Ubah nama file lama menjadi sesuatu seperti sources.list.orig.

testing.list: Sama seperti stable.list, kecuali dengan testing.

unstable.list: Sama seperti stable.list, kecuali dengan unstable, dan menghapus daftar keamanan.

experimental.list: Sama seperti unstable.list, kecuali dengan experimental.

Anda juga dapat menambahkan tanda oldstablemasuk sources.lists.ddan preferences.d(gunakan prioritas 1), meskipun moniker ini akan cenderung kedaluwarsa dan menghilang sebelum siklus stabil berikutnya. Dalam kasus seperti itu, Anda dapat menggunakan http://archive.debian.org/debian/dan "hardcode" versi Debian (etch, lenny, dll.).

Untuk menginstal versi pengujian suatu paket, cukup gunakan aptitude install lib-foobar-package/testing, atau langsung saja ke GUI aptitude dan pilih versi di dalam detail paket (tekan enter pada paket yang Anda cari).

Jika Anda mendapat keluhan tentang konflik paket, lihat solusinya terlebih dahulu. Dalam kebanyakan kasus, yang pertama adalah "jangan pasang versi ini". Belajarlah untuk menggunakan per-paket menerima / menolak pilihan resolver. Misalnya, jika Anda menginstal foobar-package / testing, dan solusi pertama adalah "jangan instal foobar-package / testing", maka tandai pilihan itu sebagai ditolak, dan solusi lain tidak akan pernah membelok ke jalur itu lagi. Dalam kasus seperti ini, Anda mungkin harus menginstal beberapa paket pengujian lainnya.

Jika terlalu berbulu (seperti mencoba untuk meng-upgrade libc atau kernel atau sistem inti besar lainnya), maka Anda dapat menolak jalur upgrade tersebut atau hanya mundur dari upgrade awal sama sekali. Ingatlah bahwa itu hanya akan memutakhirkan hal-hal menjadi pengujian / tidak stabil jika Anda mengizinkannya.

EDIT: Memperbaiki beberapa pin prioritas, dan memperbarui daftar.

Brendan Byrd
sumber
4
Apakah Anda menjalankan apt-get updatesetelah Anda membuat file konfigurasi?
Alir
3
Saya mendapatkan (yang menurut saya) perilaku tidak konsisten menggunakan metode ini. "apt-get install -t testing appX" tidak memberikan yang sama dengan "apt-get install appX / testing" (lihat serverfault.com/q/646934/132528 ) - Saya menduga itu hanya tentang cara metode ini menyebabkan prioritas harus diselesaikan, meskipun tidak intuitif untuk saya?
eugenevd
7
PENTING: penulis memilih pinning preferensi nilai untuk stabil / keamanan yang lebih tinggi daripada nilai Rilis Default ... lihat serverfault.com/a/653552/120130 untuk info lebih lanjut
Alex Ryan
7
Jawaban ini baru saja merusak sistem saya. Setelah upaya dilakukan sudo apt-get update, saya mendapat kesalahan pembaruan. Kemudian restart, yang memberi saya Xsession error, restart lagi, dan sekarang saya tidak punya gui. yang /dev/sda1/sekarang penuh. Bagus.
luchonacho
3
Saya akan merekomendasikan orang-orang memperhatikan komentar negatif pada posting ini. Saya baru saja mendapatkannya pada pembaruan Debian 9 baru-baru ini, yang diperbaiki dengan mengembalikan perubahan ini. Perhatikan saran dalam artikel Debian tentang masalah ini: wiki.debian.org/DontBreakDebian (gulir ke Jangan membuat FrankenDebian)
Brandon Arnold
98

Di /etc/apt/apt.conf.dtambahkan file berikut

99defaultrelease:

APT::Default-Release "stable";

di /etc/apt/sources.list.d- tambahkan url untuk menguji / sumber tidak stabil

stable.list:

deb     http://ftp.de.debian.org/debian/    stable main contrib non-free
deb-src http://ftp.de.debian.org/debian/    stable main contrib non-free

deb     http://security.debian.org/         stable/updates  main contrib non-free

testing.list:

deb     http://ftp.de.debian.org/debian/    testing main contrib non-free
deb-src http://ftp.de.debian.org/debian/    testing main contrib non-free

deb     http://security.debian.org/         testing/updates  main contrib non-free

Lari

apt-get update

dan kemudian instal apa yang Anda butuhkan

apt-get -t testing install something

Berhati-hatilah jika Anda menginstal barang yang memiliki banyak dependensi. Lebih disukai tidak melakukan ini pada produksi.

Anda juga dapat mencoba keberuntungan Anda di backports atau repositori serupa.

pQd
sumber
1
Wow. Itu tadi cepat. Saya memposting untuk membagikan informasi yang baru saja saya jumpai! Yang bagus!
Gareth
Saya belum pernah menggunakan metode apt.conf sebelumnya. Tampaknya lebih sederhana daripada metode file preferensi, tetapi memberi Anda kontrol yang kurang tepat. - Coops
Coops
4
Jawaban perlu ditingkatkan; konfigurasi ini akan menghancurkan segalanya sekarang karena tekanan menjadi stabil dan Lenny telah menjadi stabil.
El Yobo
1
Tidak bisa digunakan lagi, perbarui
Lothar
4
dalam rilis debian yang lebih baru tidak ada file apt.conf, sebagai gantinya edit /etc/apt/apt.conf.d/70debconf
Hayden Thring
49

apt_preferences

Tentukan level default yang harus di-upgrade oleh sistem ke dalam file / etc / apt / preferensi:
man apt_preferences

Ada banyak yang bisa Anda lakukan dengan apt_preferences tapi demi kesederhanaan ...

Saya perlu menginstal satu paket (autoMysqlBackup) yang hanya tersedia di Pengujian. Solusinya adalah menambahkan yang berikut ke / etc / apt / preferences:

Explanation: Uninstall or do not install any Debian-originated
Explanation: package versions other than those in the stable distro
Package: *
Pin: release a=stable
Pin-Priority: 900

Package: *
Pin: release o=Debian
Pin-Priority: -10

Dengan beberapa repositori yang ditambahkan ke /etc/apt/sources.list aptitude sekarang hanya akan meningkatkan ke rilis yang Anda tentukan meskipun repos rilis berikutnya terdaftar (dalam hal ini 'stabil').

deb http://mirror.aarnet.edu.au/debian/ lenny main
deb-src http://mirror.aarnet.edu.au/debian/ lenny main
deb http://mirror.aarnet.edu.au/debian/ squeeze main
deb-src http://mirror.aarnet.edu.au/debian/ squeeze main

Jadi untuk menginstal paket itu, yang harus Anda lakukan adalah:

$ aptitude install -t testing packageName 
Gareth
sumber
Ini adalah metode yang bagus juga, tidak semudah apt.conf, tetapi memungkinkan Anda mengontrol semua sumber yang berbeda secara relatif.
Coops
2
Ini terlalu rumit untuk tugas ... Menggunakan APT :: Default-Release tidak menetapkan prioritas pin rilis ke 990 (mirip dengan cara Anda mengaturnya ke 900) dan pinning negatif untuk sisanya tidak benar-benar diperlukan .. ... selama dist-upgrade paket stabil tetap memiliki prioritas dan segera setelah Anda mendaftar sesuatu secara eksplisit pada baris perintah, prioritas pinning negatifnya akan diabaikan.
Raphaël Hertzog
Saya tidak yakin bagaimana membalas Anda @Raphael. Tampaknya cara yang sangat elegan dalam melakukan sesuatu. Saya telah menggunakan pinning sebelum tahun lalu, tetapi saya tidak pernah benar-benar mendapatkannya. Contoh yang saya gunakan di atas langsung dari halaman manual apt_preferences.
Gareth
2
Konfirmasikan ini berfungsi dengan baik pada pemerasan
tomfanning
3
@Lothar: Ini berfungsi pada Debian 6. Hanya karena file tidak ada tidak berarti tidak berfungsi. Cukup buat file dan tambahkan pengaturan. Kutipan dari halaman manual: "Jika tidak ada file preferensi atau jika tidak ada entri dalam file yang berlaku untuk versi tertentu, maka prioritas yang ditetapkan untuk versi itu adalah prioritas distribusi ke versi yang dimiliki."
rzetterberg
13

Untuk apa nilainya, saran umum yang selalu saya lihat adalah "Jangan bergaul stabil dengan apa pun." Sebagian besar tutorial sistem campuran adalah untuk pengujian campuran dan tidak stabil.

Alasannya tampaknya bahwa jika Anda mencampur stabil dengan pengujian, paket yang sangat mendasar (seperti libc6) akan memerlukan pembaruan (untuk menginstal perangkat lunak dari pengujian), dan sekali paket dasar ini beralih ke pengujian, seluruh sistem dapat bergerak seperti itu.

Berikut adalah dua alternatif:

  1. Gunakan Backports .
  2. Instal baris sumber dari pengujian, dan cobalah untuk membangun versi nanti yang Anda inginkan dari sumber .
Telemakus
sumber
1
Saya setuju. Saya baru saja mencoba memperbarui libdvdread4 dari pengujian karena bug dalam versi di wheezy / stable. Ia ingin membawa libc terbaru. Jadi saya hanya mengambil paket source untuk libdvdread4 dari stable dan menambalnya dengan perubahan sumber 1 baris dan membangunnya kembali. Jauh lebih baik daripada menarik semua jenis paket dari pengujian. Sekarang semua paket masih yang "stabil" dan saya hanya memiliki perubahan 1-line yang saya butuhkan.
Dgrant
12

Dokumentasi debian sangat luas dalam subjek dan saya sangat menyarankan untuk menggali karena itu benar-benar akan mengungkap keindahan sistem debian.

Lihat Bagaimana menjaga sistem campuran , itu akan menjelaskan semua yang perlu Anda ketahui.

Tomdeb
sumber
1
Tampaknya ini adalah metode yang sama yang digunakan dalam jawaban oleh @pQd, jadi itu tidak berlaku untuk debian> = 6.0. Judul tautannya juga mengatakan "dokumentasi usang" sekarang. Sebagian besar juga hanya tautan yang menjawab.
Dequis
Walaupun @dequis benar karena tautannya tampaknya sudah usang, saya hanya mengikuti instruksi pada Debian 8 (pengujian) untuk menginstal paket dari tidak stabil, dan semuanya tampaknya berfungsi dengan sangat baik. Adakah yang mendapat tautan dokumentasi terbaru?
domsson
1
Ini kemungkinan yang Anda cari: debian.org/doc/manuals/debian-reference/…
tomdeb
7

Cara lain, yang dapat mencegah instalasi terlalu banyak ketergantungan dari Testing atau Sid, adalah ini: Anda memberi tahu apt-get untuk mendapatkan sumber paket dari Testing atau Sid dan membuat paket untuk sistem Anda menggunakan alat Debian (tidak perlu mengotak-atik secara manual) dengan sumber).

Mengutip dari sini:
https://wiki.debian.org/DebianUnstable#How_do_I_backport_a_sid_package_to_testing_or_stable.3F

Bagaimana cara backport paket sid untuk pengujian atau stabil?

Instal sumber Debian (dan alat pengembangan, terutama debhelper, devscripts, dan build-essential), lalu buat paket.

Selangkah demi selangkah:

add a deb-src line for sid to your sources.list

apt-get update

apt-get build-dep PACKAGE_NAME

apt-get -b source PACKAGE_NAME 

Hutang yang dihasilkan harus di direktori saat ini dan dapat diinstal dengan dpkg -i the.deb.

gerlos
sumber
4

Saya telah melakukannya untuk waktu yang lama untuk percaya diri dalam mengatakan itu cukup aman dan dapat dibuat nyaman. Dengan setup versi stabil di bawah ini akan diinstal secara default, namun Aptitude juga akan memungkinkan Anda untuk memilih versi backported atau tidak stabil jika diinginkan:

masukkan deskripsi gambar di sini

Ada empat hal yang perlu diedit, rilis pinning default perlu diatur, sumber perlu backports dan tidak stabil ditambahkan, menurunkan prioritas pinning backports / paket tidak stabil, dan pengaturan tampilan aptitude perlu dimodifikasi untuk menampilkan pinning.

  • Buat '/etc/apt/apt.conf.d/10defaultrelease' dan buat isinya sebagai berikut:
Apt :: default-Release "stable";
  • Edit '/etc/apt/sources.list' Anda untuk menambahkan sumber yang tidak stabil dan backports sehingga terlihat seperti ini:
# deb cdrom: [Debian GNU / Linux 6.0.0 _Squeeze_ - Resmi Multi-arsitektur amd64 / i386 NETINST # 1 20110205-14: 45] / memeras main

deb http://ftp.us.debian.org/debian/ pemerasan utama
deb-src http://ftp.us.debian.org/debian/ pemerasan utama

deb http://security.debian.org/ pemerasan / pembaruan utama
deb-src http://security.debian.org/ pemerasan / pembaruan utama

# squeeze-update, yang sebelumnya dikenal sebagai 'volatile'
deb http://ftp.us.debian.org/debian/ pemerasan-pembaruan utama
deb-src http://ftp.us.debian.org/debian/ pemerasan-pembaruan utama

# peras backport
# http://backports.debian.org/Instructions/
deb http://backports.debian.org/debian-backports squeeze-backports utama

# tidak stabil
# http://wiki.debian.org/AptPreferences
deb http://ftp.us.debian.org/debian/ tidak stabil utama
deb-src http://ftp.us.debian.org/debian/ tidak stabil utama

# bukan bebas ex. matahari jawa
#deb http://ftp.us.debian.org/debian/ memeras tidak bebas
# deb-src http://ftp.us.debian.org/debian/ memeras tidak bebas
  • Edit etc/apt/preferencespinning file - jika file tidak ada, buatlah.
# Paket menyematkan prioritas
# Lihat http://wiki.debian.org/AptPreferences dan http://manpages.debian.net/cgi-bin/man.cgi?query=apt_preferences
#
# Dalam kacang shell PIN tertinggi diinstal
#
# Pining default adalah sebagai berikut yang merupakan tambahan dari pengaturan kami:
# 990 - untuk versi yang tidak diinstal tetapi DO milik pengaturan `APT :: Default-Relase" stable "kami.
# 500 - untuk versi yang tidak diinstal dan bukan milik rilis target
# 100 - untuk paket yang sudah diinstal, ini juga berarti versi lain dari paket yang sama
# 1 - untuk paket eksperimental; paket dengan "NotAutomatic: yes"
#
# Pinnings Kami
# 400 - backports yang dapat diinstal dengan aman tanpa perlu memperbarui paket lain
# 50 - paket tidak stabil, instal paksa di layar detail, dapat mengakibatkan konflik

Paket: *
Pin: lepaskan n = squeeze-backports
Pin-Prioritas: 400

Paket: *
Pin: lepaskan a = tidak stabil
  • Buat '/etc/apt/apt.conf.d/100guiconf' dan untuk mengatur Aptitude sehingga menampilkan informasi pinning.
Aptitude :: UI :: Package-Display-Format "% c% a% M% p% Z% v% V% i";
Daniel Sokolowski
sumber
1
Hanya pembaruan yang selain di atas saya telah memutuskan untuk menjalankan semua paket sistem saya dari repositori pengembangan 'pengujian'. Jadi di source.listdalamnya harus menyebutkan nama kode jessiealih-alih squeeze. Kebijakan Debian testinghampir stabil dan paket hampir sama baru dari unstablerepositori. Saya kehabisan ruang di sini jadi silakan lihat di: wiki.debian.org/DebianReleases , wiki.debian.org/StableUpdates , dan wiki.debian.org/StableProposedUpdates ; dua yang terakhir adalah sumber repositori tambahan.
Daniel Sokolowski
2

Jika pilihan paket Anda lebih terlibat atau instalasi akan diulang pada beberapa mesin, Anda dapat mempertimbangkan untuk menyiapkan repositori pribadi yang mencerminkan subset dari repositori resmi. Ini membutuhkan sedikit usaha untuk mengkonfigurasi repositori tetapi hadiahnya mudah dipertahankan dengan konfigurasi minimal pada setiap klien dan hasil yang dapat diulang ketika melakukan lusinan instalasi. Saya menemukan ini membantu bahkan ketika hanya satu atau dua paket sedang diinstal, dan menggunakan metode ini untuk mengotomatisasi dan memelihara pemasangan cloud. Sebuah server tunggal pada VPS murah dapat menangani puluhan repositori pribadi.

Untuk mengkonfigurasi server repositori pribadi Anda:

# Install aptly.
apt-get install aptly

# Create local mirror (choose a source mirror near you).
aptly mirror create -filter="mirror-contains-no-packages" stretch-roundcube http://httpredir.debian.org/debian stretch main

# Configure filters for local mirror.
aptly mirror edit -filter="Name (% roundcube*)" stretch-roundcube

# Update local mirror.
aptly mirror update stretch-roundcube

# Drop previously published repositories and mirrors, if running these commands in a script.
aptly publish drop stretch

# Drop snapshot, if running these commands in a script.
aptly snapshot drop stretch-roundcube

# Create new snapshot.
aptly snapshot create stretch-roundcube from mirror stretch-roundcube

# Publish snapshot.
aptly publish snapshot -architectures=i386,amd64 -distribution=stretch -component=roundcube -label="Your Name" -origin="Your Name" stretch-roundcube

Kemudian konfigurasikan server web pilihan Anda untuk menyajikan file repositori statis. Mungkin melindungi repositori dengan sertifikat keamanan dan otentikasi dasar.

Untuk menjaga repositori pribadi Anda secara otomatis dan menarik pembaruan dari hulu, letakkan yang di atas dalam sebuah skrip dan jalankan dari tugas cron.

Untuk mengkonfigurasi mesin klien Anda, pada mesin klien Anda:

# Configure private repository without authentication.
echo 'deb http://private.repository.example.com/ stretch roundcube' > /etc/apt/sources.list.d/private.repository.example.com.list

# Configure private repository with authentication.
echo 'deb https://hostname:[email protected]/ stretch roundcube' > /etc/apt/sources.list.d/private.repository.example.com.list
apt-get install apt-transport-https

# Update.
apt-get update

# Install package.
apt-get install roundcube

Untuk memelihara mesin klien Anda dan menarik semua pembaruan repositori pribadi Anda, di mesin klien Anda:

# Update.
apt-get update

# Upgrade.
apt-get upgrade
Daniel Kauffman
sumber
1

Pilihan lain adalah mengunduh paket sumber dari pengujian. APT dapat secara otomatis membuat paket sumber setelah mengunduhnya. Dengan cara ini, paket stabil Anda tidak akan terpengaruh oleh pengujian pembaruan. Satu-satunya trade-off adalah bahwa itu akan memakan waktu lebih dari sekedar mengunduh dan menginstal paket biner.

Untuk mengonfigurasi APT untuk mengunduh paket sumber dari pengujian, cukup tambahkan:

deb-src http://<your debian mirror here> testing main

Jika Anda hanya ingin mengikuti pengujian saat ini dan bukan pengujian di masa mendatang, ganti "pengujian" dengan nama kode saat ini (saat penulisan ini adalah "buster")

temy
sumber