Debian'ı stabil olarak nasıl çalıştırabilirim, ancak bazı paketleri testten nasıl kurabilirim?


Yanıtlar:


183

Pek çok insan testlerle dengelenmiş karıştırmaktan korkuyor gibi görünmektedir, ancak açıkçası testler kendi başına oldukça kararlıdır ve uygun tercihler ve çözüm kontrolü ile çekirdek paketlerinizi dengesiz yola koyan "kararlılık kaymasını" önleyebilirsiniz.

"Test oldukça istikrarlı mı ??" , sen sor. Evet. Bir paketin dengesizlikten sınamaya geçmesi için, ardışık 10 gün boyunca sıfır açık hata olması gerekir. Muhtemelen, daha popüler paketler için, birinin yanlış bir şey varsa dengesiz bir sürüm için bir hata raporu sunması muhtemeldir.

Ortamları karıştırmak istemeseniz bile, istikrarlı olandan daha yeni bir sürüm gerektiren bir şeyle karşılaşmanız durumunda, seçeneğinizin olması yine de güzeldir.

İşte bunu ayarlamak için önereceğim:

İlk önce, aşağıdaki dosyaları oluşturun /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

(Buradaki dengesiz / deneysel şeylerden korkmayın. Öncelikler, bu şeylerin hiçbirini otomatik olarak kurmayacak kadar düşüktür. Test dalı bile, yalnızca istediğiniz paketleri kuracak şekilde davranacaktır. Testte.)

Şimdi, şunun için eşleşen bir küme oluşturmak /etc/apt/sources.list.d:

stable.list: Orijinal belgenizden kopyalayın /etc/apt/sources.list. Eski dosyayı yeniden adlandırın sources.list.orig.

testing.list: İle aynı stable.list, hariç testing.

unstable.list: Güvenlik listeleri stable.listdışında olanlarla aynı unstableve bunları kaldırın.

experimental.list: İle aynı unstable.list, hariç experimental.

Ayrıca bu takma bir sonraki kararlı döngüden önce sona erme ve kaybolma eğiliminde olsa da, bir oldstablegiriş ekleyebilir sources.lists.dve preferences.d(1 önceliğini kullan) kullanabilirsiniz. Böyle durumlarda http://archive.debian.org/debian/, Debian versiyonunu ("etch, lenny, vb.") Kullanabilir ve "hardcode" edebilirsiniz .

Bir paketin test sürümünü kurmak için, basitçe kullanın aptitude install lib-foobar-package/testingya da sadece yetenek GUI'sine atlayın ve paket ayrıntılarının içindeki sürümü seçin (bakmakta olduğunuz pakete girin).

Paket çakışmalarından şikayet alırsanız, önce çözümlere bakın. Çoğu durumda, ilki "bu sürümü yükleme" olacaktır. Paket başına kabul / reddetme çözümleyici seçeneklerini kullanmayı öğrenin. Örneğin, foobar-paket / test kuruyorsanız ve ilk çözüm "foobar-paket / test kurmayın" ise, o seçimi reddedilmiş olarak işaretleyin ve diğer çözümler bir daha asla bu yola sapmayacak. Bu gibi durumlarda, muhtemelen birkaç test paketi daha yüklemeniz gerekecektir.

Çok kıllı hale geliyorsa (libc veya çekirdeği veya başka bir büyük çekirdek sistemi yükseltmeye çalışıyor gibi), o zaman bu yükseltme yollarını reddedebilir veya ilk yükseltme işleminden tamamen çıkabilirsiniz. Unutmayın, izin verirseniz yalnızca sınava / dengesiz maddeye yükseltme yapacağınızı unutmayın.

EDIT: Bazı öncelik pinleri düzeltildi ve listeyi güncelledi.


4
Çalıştırmak mı apt-get updatekonfigürasyon dosyalarının oluşturduktan sonra?
Akış

3
Bu yöntemi kullanarak (bana göründüğü gibi) tutarsız davranışlar alıyorum. "apt-get install -t testi appX", "apt-get install appX / testi" ile aynı şeyi vermiyor (bkz. serverfault.com/q/646934/132528 ) - Bunun sadece bu yöntemle ilgili olduğunu tahmin ediyorum benim için sezgisel olmasa da önceliklerin çözülmesine neden olur mu?
eugenevd

7
ÖNEMLİ: Yazar, Kararlı / güvenlik için Varsayılan Sürüm değerinden daha yüksek olan bir sabitleme tercihi seçti ... daha fazla bilgi için bkz. Serverfault.com/a/653552/120130 ,
Alex Ryan

7
Bu cevap sistemimi bozdu. Bir denemeden sudo apt-get updatesonra bir güncelleme hatası alıyorum. Sonra yeniden başlatıldı, bu bana verdi Xsession error, tekrar başlattı ve şimdi gui'm yok /dev/sda1/şimdi doludur. Harika.
luchonacho

3
Millet, bu yazıdaki olumsuz yorumlar dikkate almak tavsiye edeceğim. Bu değişiklikleri geri alarak düzeltilen Debian 9 güncellemesinde biraz bitirdim. Debian'ın bu konudaki makalesinde yer alan tavsiyeyi dikkate alınız: wiki.debian.org/DontBreakDebian (FrankenDebian yapmayın)
Brandon Arnold

98

In /etc/apt/apt.conf.daşağıdaki dosyayı ekleyin

99defaultrelease:

APT::Default-Release "stable";

içinde /etc/apt/sources.list.d- test / istikrarsız kaynakları için URL'leri ekleyin

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

Çalıştırmak

apt-get update

ve sonra ihtiyacınız olanı yükleyin

apt-get -t testing install something

Çok fazla bağımlılığı olan şeyler kurarsanız çok dikkatli olun. Tercihen bunu üretimde yapmayın.

Siz de şansınızı deneyebilirsiniz backports veya benzeri depo.


1
Vay. Bu hızlı oldu. Karşılaştığım bilgileri paylaşmak için gönderiyorum! Güzel!
Gareth

Apt.conf metodunu daha önce hiç kullanmamıştım. Tercihler dosya yöntemi daha basit görünüyor, ancak size daha az hassas kontrol verir. - Coops
Coops

4
Cevap yükseltilmesi gerekiyor; Bu yapılandırma şimdi sıkmak istikrarlı hale geldi ve lenny eskileştirilebilir hale geldi şimdi tamamen şeyler kıracak.
El Yobo,

1
Artık kullanılamaz, lütfen güncelleyin
Lothar

4
Daha yeni debian sürümlerinde apt.conf dosyası yoktur, bunun yerine /etc/apt/apt.conf.d/70debconf dosyasını düzenleyin
Hayden Thring

49

apt_preferences

/ Etc / apt / preferences dosyasında sistemin 'güvenli yükseltme' yapması gereken varsayılan seviyeyi tanımlayın:
man apt_preferences

Apt_preferences ile yapabileceğiniz çok şey var ama basitlik adına ...

Yalnızca Test'te kullanılabilen tek bir paket (autoMysqlBackup) yüklemem gerekiyordu. Çözüm, / etc / apt / tercihlerine aşağıdakileri eklemek oldu:

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

/Etc/apt/sources.list listesine birden fazla havuz eklendiğinde, yetenek, daha sonra yayınlanacak repolar listelenmesine rağmen (sadece bu durumda 'kararlı') yalnızca belirtilen sürümünüze yükseltilecektir.

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

Bu paketi kurmak için yapmanız gereken tek şey:

$ aptitude install -t testing packageName 

Bu da apt.conf kadar kolay değil, aynı zamanda tüm farklı kaynaklarınızı göreceli bir şekilde kontrol etmenizi sağlar.
Coops

2
Bu görev için çok karmaşık ... APT :: Default-Release kullanmak, sürümün pin önceliğini 990'a ayarlar (900'e ayarladığınıza benzer) ve geri kalanı için negatif pinleme gerçekten gerekli değildir. Dağıtım yükseltmeleri sırasında kararlı paket yine de önceliğe sahiptir ve komut satırında açıkça bir şey listelediğinizde, negatif pinleme önceliği çoğunlukla göz ardı edilir.
Raphaël Hertzog

@Raphael size nasıl cevap vereceğimi bilmiyorum. Bir şeyleri yapmanın çok zarif bir yolu gibi görünüyor. Yıllarca önce apt pinning kullandım ama asla gerçekten anlamadım. Yukarıda kullandığım örnekler apt_preferences man sayfasından.
Gareth

2
Bunun
sıkışmada

3
@ Lothar: Bu Debian 6'da çalışır. Sadece dosya olmadığı için çalışmadığı anlamına gelmez. Sadece dosyayı oluşturun ve ayarları ekleyin. Kılavuz sayfasından alıntı yapın: "Tercih dosyası yoksa veya dosyada belirli bir versiyon için geçerli bir giriş yoksa, o versiyona atanan öncelik o versiyonun ait olduğu dağıtımın önceliğidir."
rzetterberg

13

Buna değer, her zaman gördüğüm genel tavsiye "Bir şey ile istikrarlı karıştırmayın" dir. Karışık sistemlerdeki eğiticilerin çoğu karıştırma testi içindir ve dengesizdir.

Bunun nedeni, testle kararlı bir şekilde karıştırırsanız, çok temel paketlerin (libc6 gibi) güncellemeleri gerektirmesi (yazılımın test edilmesini kurmak için) gerekmesi ve bu temel paketlerin teste geçmesiyle tüm sistemin bu şekilde sürüklenebileceği görünüyor.

İşte iki alternatif:

  1. Backports kullanın .
  2. Testten bir kaynak satırı kurun ve kaynağından istediğiniz daha sonraki sürümü oluşturmayı deneyin .

1
Katılıyorum. Wheezy / stable versiyonundaki bir hata nedeniyle testten libdvdread4'ü güncellemeye çalıştım. Yine de en son libc'yi getirmek istiyor. Bu yüzden libdvdread4 için kaynak paketini kararlı bir şekilde aldım ve 1 satırlık kaynak değişikliği ile doldurdum ve yeniden yaptım. Her çeşit paketi testten çıkarmaktan çok daha iyi. Şimdi tüm paketler hala "kararlı" paketler ve sadece ihtiyacım olan 1 satırlık değişime sahibim.
16

12

Debian dokümantasyonu konuyla ilgili kapsamlı ve debian sisteminin güzelliğini tam anlamıyla ortaya çıkaracak şekilde kazmayı şiddetle tavsiye ediyorum.

Karma bir sistemin nasıl korunacağına bir göz atın , bilmeniz gereken her şeyi açıklayacaktır.


1
Bu, pQd tarafından cevapta kullanılan aynı yöntem gibi görünüyor, bu yüzden debian> = 6.0 için geçerli değil. Ayrıca bağlantı başlığı şimdi "eski belgeler" diyor. Ayrıca çoğunlukla bağlantı sadece cevap.
dequis,

@Dequis, bağlantının modası geçmiş gibi göründüğü doğru olsa da, Debian 8'in (testlerin) dengesizliğinden bir paket yüklemek için verilen talimatları izledim ve her şey gayet iyi çalışıyor gibi görünüyor. Güncel bir dokümantasyon bağlantısı olan var mı?
domsson, 15

1
: Bu aradığınızı olması muhtemeldir debian.org/doc/manuals/debian-reference/...
tomdeb

7

Testing veya Sid'e çok fazla bağımlılık yüklenmesini engelleyebilecek başka bir yol da şudur: paketin kaynağını Testing veya Sid'den almasını ve sisteminiz için Debian araçlarını kullanarak bir paket oluşturmasını (manuel olarak denetlemenize gerek yok) kaynakları ile).

Buradan alıntı yapmak:
https://wiki.debian.org/DebianUnstable#How_do_I_backport_a_sid_package_to_testing_or_stable.3F

Sid paketini teste veya dengelemeye nasıl geri alabilirim?

Debian kaynağını (ve geliştirme araçlarını, özellikle debhelper, devscripts ve build-essential) yükleyin ve sonra paketi oluşturun.

Adım adım:

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 

Ortaya çıkan debs mevcut dizinde olmalı ve dpkg -i the.deb ile yüklenebilir.


4

Yeterince güvenli olduğunu ve uygun hale getirilebileceğinden emin olmak için uzun süredir yapıyorum. Aşağıdaki kurulumda kararlı sürüm varsayılan olarak yüklenir, ancak Yetenek, istenirse desteklenmeyen veya dengesiz sürümü seçmenize de izin verir:

görüntü tanımını buraya girin

Düzenlenmesi gereken dört şey vardır, varsayılan sabitleme serbest bırakma ayarlanması gerekir, kaynaklar geri desteklemeye ve dengesiz eklemeye ihtiyaç duyar, geri desteklerin / dengesiz paketlerin sabitleme önceliğini düşürür ve yetenek gösterme ayarlarının sabitlenmesi için değiştirilmeleri gerekir.

  • Bir '/etc/apt/apt.conf.d/10defaultrelease' oluşturun ve içeriğini aşağıdaki gibi yapın:
Apt :: default-Release "kararlı";
  • Kararsız ve destekleyici kaynaklar eklemek için '/etc/apt/sources.list' adresinizi düzenleyin;
# deb cdrom: [Debian GNU / Linux 6.0.0 _Squeeze_ - Resmi Çok Amaçlı Mimari amd64 / i386 NETINST # 1 20110205-14: 45] / sıkmak

deb http://ftp.us.debian.org/debian/ sıkmak ana
deb-src http://ftp.us.debian.org/debian/ sıkmak ana

deb http://security.debian.org/ sıkmak / güncellemek ana
deb-src http://security.debian.org/ sıkmak / güncellemek

# squeeze-update, önceden 'geçici' olarak bilinen
deb http://ftp.us.debian.org/debian/ squeeze-updates main
deb-src http://ftp.us.debian.org/debian/ squeeze-updates main

# sıkma destekleri
# http://backports.debian.org/Instructions/
deb http://backports.debian.org/debian-backports squeeze-backports main

# kararsız
# http://wiki.debian.org/AptPreferences
deb http://ftp.us.debian.org/debian/ kararsız ana
deb-src http://ftp.us.debian.org/debian/ kararsız ana

# özgür olmayan eski güneş java
#deb http://ftp.us.debian.org/debian/ sıkıştırmasız sıkmak
# deb-src http://ftp.us.debian.org/debian/ olmayan sıkmak
  • Edit etc/apt/preferencesiğneleme dosyayı - dosya oluşturulduğu do yoksa.
# Paket sabitleme öncelikleri
# Bkz. Http://wiki.debian.org/AptPreferences ve http://manpages.debian.net/cgi-bin/man.cgi?query=apt_preferences
#
# Fındık kabuğundaki en yüksek PIN takıldı
#
# Pining default, ayarlarımıza ek olarak aşağıdaki gibidir:
# 990 - yüklü olmayan ancak DO sürümleri için `APT :: Default-Relase" sabit "ayarımıza aittir.
# 500 - yüklü olmayan ve hedef sürümüne ait olmayan sürümler için
# 100 - önceden yüklenmiş paketler için bu aynı paketin diğer sürümleri anlamına gelir
# 1 - deneysel paketler için; "NotAutomatic: yes" ile paketler
#
# İğnelerimiz
# 400 - diğer paketleri güncellemeye gerek kalmadan güvenli bir şekilde monte edilebilecek yedekler
# 50 - ayrıntılar ekranına zorla kurulan kararsız paketler çakışmalara neden olabilir

Paket: *
Pin: bırakma n = sıkma destekleri
Pin Önceliği: 400

Paket: *
Pin: a = serbest bırak
  • '/Etc/apt/apt.conf.d/100guiconf' oluşturun ve Yetenek ayarlayarak sabitleme bilgilerini görüntüler.
Yetenek :: Kullanıcı Arabirimi :: Paket Görüntüleme Biçimi "% c% a% M% p% Z% v% V% i";

1
Sadece bir güncelleme yukarıdakilere ek olarak tüm sistem paketlerimi 'test' geliştirme havuzlarından çalıştırmaya karar verdim. Yani bunun yerine source.listkod adını söylemelisiniz . Debian'ın politikası istikrarlıdır ve paketler neredeyse depodaki kadar yeni olmuştur . Buradaki alanım tükeniyor , lütfen bir göz atın: wiki.debian.org/DebianReleases , wiki.debian.org/StableUpdates ve wiki.debian.org/StableProposedUpdates ; Son ikisi ek depo kaynaklarıdır. jessiesqueezetestingunstable
Daniel Sokolowski

2

Paket seçiminiz daha fazla ilgiliyse veya kurulum birden fazla makinede tekrarlanacaksa, resmi depoların bir alt kümesini yansıtan özel bir depo kurmayı düşünebilirsiniz. Bu, depoyu yapılandırmak için biraz çalışma gerektirir, ancak ödülün her istemcide minimum düzeyde yapılandırma ve onlarca kurulum yaparken tekrarlanabilir sonuçlarla bakımı kolaydır. Bunu yalnızca bir veya iki paket kurulurken bile faydalı buluyorum ve bulut kurulumlarını otomatikleştirmek ve korumak için bu yöntemi kullanıyorum. Ucuz bir VPS'deki tek bir sunucu, düzinelerce özel depoya işleyebilir.

Özel depo sunucunuzu yapılandırmak için:

# 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

Ardından, web sunucunuzu statik depo dosyalarına hizmet edecek şekilde yapılandırın. Muhtemelen depoyu bir güvenlik sertifikası ve temel kimlik doğrulama ile koruyun.

Özel deponuzu otomatik olarak korumak ve yukarı akıştaki güncellemeleri almak için yukarıdakileri bir komut dosyasına yerleştirin ve bir cron işinden çalıştırın.

İstemci makinenizi yapılandırmak için, istemci makinenizde:

# 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:password@private.repository.example.com/ 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

İstemci makinenizi korumak ve tüm özel depo güncellemelerinizi istemci makinenize çekmek için:

# Update.
apt-get update

# Upgrade.
apt-get upgrade

1

Başka bir seçenek de kaynak paketin testten indirilmesidir. APT, kaynak paketi indirdikten sonra otomatik olarak oluşturabilir. Bu şekilde, kararlı paketleriniz güncellemelerin test edilmesinden etkilenmeyecektir. Tek değişiklik, ikili paketi indirmek ve kurmaktan daha uzun sürmesidir.

APT'yi kaynak paketleri testten indirecek şekilde yapılandırmak için şunu ekleyin:

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

Eğer sadece mevcut testleri takip etmek ve gelecekteki testleri takip etmek istemiyorsanız, "test" i geçerli kod adıyla değiştirin (bu yazı itibariyle "buster" olur)

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.