% 100 etkileşimli olmayan Debian dağıtım


38

apt-get dist-upgradeDebian'da, sorulan tüm sorulara sadece "evet" i otomatik olarak cevaplamakla kalmayıp, aynı zamanda çeşitli etkileşimli iletişim kutularının açılmasını gerektirecek kadar karmaşık olan soruların cevapları olarak da makul varsayılanları kullanmanın bir yolu var mı ? Burada, yükseltme yaptığınızda ortaya çıkan ana harita şeylerini libc6ve çekirdek resim seçimlerini düşünüyorum.

Amaç, zaman zaman oldukça dist-upgradegerisinde olan bir makine için bile oldukça büyük bir uzaktan başlatmayı başarabilmektir - ve korkunç bir şekilde, feci bir şekilde yanlış bir şey olmadıkça, ona bakıcılık yapmak zorunda kalmamaktır .

Elbette bu mümkün mü?

Şimdiden teşekkürler!


Ubuntu’da yalnızca yükseltme yapmak isteyenler için (dağıtım yükseltme yerine) katılımsız yükseltme paketini deneyin .
Jo Liss,

Yanıtlar:


42

Eğer ayarlarsanız DEBIAN_FRONTEND=noninteractive(görünmesini Debconf istemlerini önlemek için) ve ekleme force-confoldve force-confdefsizin için /etc/dpkg/dpkg.cfgdosyanın, tamamen etkileşimli olmayan paket yükleme deneyime sahip olmalıdır. Sizden hala bilgi isteyen herhangi bir pakette önemli bir hata var (ve bunun bir otomasyon bağımlısı ve bir Debian geliştiricisi olarak söylüyorum ).


Bu benim için işe yaramadı. apt-listchangestarafından açıldı less.
magnetar

@ magnetar: Bu apt-listchanges ile bir sorun değil apt. Apt-listchanges öğesini kaldırın veya uygun şekilde yapılandırın.
womble

1
Deneyin: env APT_LISTCHANGES_FRONTEND = hiçbiri apt-get dist-yükseltme -u -y
H.-Dirk Schmitt

21

Florian LOHOFF yayınlanmıştır tek komutla içine önerilen WOMBLE elde etmek için bir yol:

DEBIAN_FRONTEND=noninteractive \
apt-get \
-o Dpkg::Options::="--force-confnew" \
--force-yes \
-fuy \
dist-upgrade

Tabii ki kullanabilirsiniz -o Dpkg::Options::="--force-confnew --force-confdef"( konuyla ilgili olarak dpkg man sayfasını arayın). Hangi durumlarda bunun bir fark yaratacağından emin değilim. Vanilya resimlerini güncel hale getirmek için kişisel olarak etkileşimli olmayan bir yükseltmeye ihtiyacım var, bu durumda her zaman yeni yapılandırma dosyasını (olmadan --force-confdef) seçmenin makul bir şey olduğunu varsayalım .


W: --force-yes is deprecated, use one of the options starting with --allow instead.
Alex,

3

Womble'ın yukarıdaki cevabı genel olarak iyi olsa da, benim için işe yaramadı ve% 100 katılımsız olmak için bazı ek araştırmalar yapmak zorunda kaldım. Gelecekte ziyaretçiler için işleri kolaylaştırmak için sonucu özlü bir şekilde paylaşacağımı düşündüm.

Aşağıdaki, debian 8 sürüm notlarına göre çalışacak bir betiktir (not), çoğunlukla öneride bulunmayan bayraklar ve çevre değişkenleriyle birlikte yükseltme önerileri sunar. ( echos yalnızca hata ayıklama içindir ve kaldırılabilir - ancak onları tutmanızı öneririz, ancak komut dosyası sıkışırsa nerede olduğunu bileceksiniz)

#!/bin/bash

apt-get remove apt-listchanges --assume-yes --force-yes &&

#using export is important since some of the commands in the script will fire in a subshell
export DEBIAN_FRONTEND=noninteractive &&
export APT_LISTCHANGES_FRONTEND=none &&

#lib6c was an issue for me as it ignored the DEBIAN_FRONTEND environment variable and fired a prompt anyway. This should fix it
echo 'libc6 libraries/restart-without-asking boolean true' | debconf-set-selections &&

echo "executing wheezy to jessie" &&
find /etc/apt -name "*.list" | xargs sed -i '/^deb/s/wheezy/jessie/g' &&

echo "executing autoremove" &&
apt-get -fuy --force-yes autoremove &&

echo "executing clean" &&
apt-get --force-yes clean &&

echo "executing update" &&
apt-get update &&

echo "executing upgrade" &&
apt-get --force-yes -o Dpkg::Options::="--force-confold" --force-yes -o Dpkg::Options::="--force-confdef" -fuy upgrade &&

echo "executing dist-upgrade" &&
apt-get --force-yes -o Dpkg::Options::="--force-confold" --force-yes -o Dpkg::Options::="--force-confdef" -fuy dist-upgrade

1
Not: "--force-yes Zorla evet; bu, potansiyel olarak zararlı bir şey yapıp yapmadığını sormadan apt'nin devam etmesine neden olacak tehlikeli bir seçenektir. Çok özel durumlar haricinde kullanılmamalıdır. sisteminiz! Konfigürasyon Öğesi: APT :: Get :: force-yes. Bu, kullanımdan kaldırıldı ve yerine 1.1.
Alex,

1

> = Apt 1.1

Eğer 1.1 veya üzeri Apt kullanıyorsanız, --force-yeskullanımdan kaldırıldı ile başlayan seçeneklerini kullanmak ettik böylece, --allowörneğin, bunun yerine --allow-downgrades, --allow-remove-essential, --allow-change-held-packages.

Yani komut:

DEBIAN_FRONTEND=noninteractive \
  apt-get \
  -o Dpkg::Options::=--force-confold \
  -o Dpkg::Options::=--force-confdef \
  -y --allow-downgrades --allow-remove-essential --allow-change-held-packages \
  dist-upgrade

Not: --force-confoldEski --force-confnewtutmak ve yeni yapılandırmaları saklamak için kullanın .

Kaynak: CFE-2360: apt_get paket modül versiyonunun farkında olun .

İlgili:


-4

Gönderen apt-get(8)adam sayfası:

   -y, --yes, --assume-yes
       Automatic yes to prompts; assume "yes" as answer to all prompts
       run non-interactively. If an undesirable situation, such as
       changing a held package, trying to install a unauthenticated
       package or removing an essential package occurs then apt-get will
       abort. Configuration Item: APT::Get::Assume-Yes.

Başvuru için, -yseçenek de çalışır yum(8).


5
Bunu biliyorum. Bu bayrağı kullanıyorum ve mevcut yapılandırmaların üzerine yazmaya vb. İlişkin standart APT Y / N sorularına başarıyla 'evet' cevabını veriyor. Bunlar benim atıfta bulunduğum sorular değil. Apt-get -y dist-upgrade yaptığım zaman, bana bazı önemli şeyler düşündüğü için bazı 'diyalog' uyarıları verdi. Bunu da kapat.
Alex Balashov
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.