Ubuntu 12'de apt-get yükseltmesi sırasında değiştirilmiş yapılandırma dosyaları nasıl otomatikleştirilir


13

Yeni bir VM oluşturmak için "bıçak cloudtack sunucu oluştur ..." kullanmayı seviyorum. Bootstrap şablonum bir "apt-get güncellemesi" ve "apt-get -y yükseltmesi" ile başlar.

Yükseltme daha sonra şunlarla durur:

10.190.113.11 Configuration file `/etc/nscd.conf'
10.190.113.11  ==> Modified (by you or by a script) since installation.
10.190.113.11  ==> Package distributor has shipped an updated version.
10.190.113.11    What would you like to do about it ?  Your options are:
10.190.113.11     Y or I  : install the package maintainer's version
10.190.113.11     N or O  : keep your currently-installed version
10.190.113.11       D     : show the differences between the versions
10.190.113.11       Z     : start a shell to examine the situation
10.190.113.11  The default action is to keep your current version.
10.190.113.11 *** nscd.conf (Y/I/N/O/D/Z) [default=N] ?

Yani gerçekten iki sorun var:

Öncelikle, varsayılan olarak bir şey yapmak için uygun hale getirebilir miyim? Açıkçası bir cevap vermenin yolu yok.

İkincisi, soruya doğru cevabın ne olması gerektiğini bile bilmiyorum. Değiştirdiği yapılandırma dosyası bir şablondan geldi. "Nscd" nin ne yaptığını henüz araştırmadım. (Muhtemelen "Y" doğru cevaptır, ancak soru anında yapılan araştırma göz korkutucudur.)

Yanıtlar:


15

Bilgi istemini önlemek için bağımsız değişkenler iletebilirsiniz. Bu benim için çalışıyor;

apt-get update
apt-get --yes --force-yes -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
apt-get --yes --force-yes -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade

--force-confold(seçimim) bu "Değiştirilmiş yapılandırma dosyası hakkında ne yapmak istiyorsunuz?" sorularını varsayılan olarak Nayarlayacaktır (şu anda yüklü sürümünüzü koruyun )

--force-confold: do not modify the current configuration file, the new version is installed with a .dpkg-dist suffix. With this option alone, even configuration files that you have not modified are left untouched. You need to combine it with --force-confdef to let dpkg overwrite configuration files that you have not modified.
--force-confnew: always install the new version of the configuration file, the current version is kept in a file with the .dpkg-old suffix.
--force-confdef: ask dpkg to decide alone when it can and prompt otherwise. This is the default behavior of dpkg and this option is mainly useful in combination with --force-confold.
--force-confmiss: ask dpkg to install the configuration file if it’s currently missing (for example because you have removed the file by mistake).

Uyarı - bazı değiştirilmiş yapılandırma dosyaları, güncel tutulur ve güncellenmiş paket sürümüyle uyumlu değilse sisteminizi bozabilir. Lütfen otomasyon çözümlerine uygulamadan önce test edin .


5

Etkileşimli soruları kesinlikle yanıtlamak istemiyorsanız, kullanıcı arabirimi DEBIAN_FRONTENDdeğişkenini olarak ayarlayın noninteractive.

Bu kadar kolay olabilir DEBIAN_FRONTEND=noninteractive apt-get upgrade.

Hiçbir ileti almayacaksınız ve varsayılanlar seçilecektir. Çoğu durumda, bu, yapılandırma dosyalarınızın değiştirilmeyeceği ve *.dpkg-newbir yapılandırma dosyasının dokunulmamış olduğu tüm yerler için olduğu gibi adlandırılmış dosyalarınız olduğu anlamına gelir . Daha sonra değişiklikleri manuel olarak çözebilir veya bir yapılandırma yönetim sistemi veya başka bir yöntem kullanarak yerel yapılandırmanızı sisteme gönderebilirsiniz.

İkincisi, soruya doğru cevabın ne olması gerektiğini bile bilmiyorum

D tuşuna bastığınızda farkı inceleyebilirsiniz. Bu dosyayı asla manuel olarak değiştirmediğinizden eminseniz, değiştirmek için Y'yi seçmek muhtemelen güvenlidir (yedeklemelerinizin SAĞ yükseltmesini doğruladınız ! ). Paketin, yükseltme / dağıtım yükseltme komutunu çalıştırmadan önce de okuduğunuz değişiklik günlüğü / sürüm notlarında yer alan büyük değişiklikler olmadıkça, N'nin seçilmesi eski dosyayı da% 95 oranında güvende tutar.

Bunu geçtikten sonra, ilk önce test ortamınızda komutu deneyin. İşlerin işe yarayıp yaramadığına bakın. Eğer gerçekten emin değilseniz fark almak ve paket ve araştırma için belgeleri okuyun.


DEBIAN_FRONTEND = etkileşimli olmayan aşırı --force-yes? Varsayılan olarak HAYIR gibi görünür ve "evet" bu durumda daha doğrudur. (Stdin olmadığı için hiçbir tuşa basamıyorum.)
Mojo
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.