Làm cho apt-get (hoặc aptitude) chạy với -y nhưng không được nhắc thay thế các tệp cấu hình?


71

Khi chạy apt-get -y install <packages ...>trên Ubuntu 10.04, tôi muốn apt-get(hoặc aptitudenếu điều đó giúp dễ dàng hơn) không nhắc tôi khi cài đặt các phụ thuộc bổ sung (hành vi -ynhư tôi hiểu) và không nhắc tôi về việc ghi đè các tệp cấu hình, thay vào đó giả sử luôn giữ các tệp hiện có (thường là mặc định). Đáng tiếc là --trivial-onlycó vẻ là nghịch đảo của -yvà không ảnh hưởng đến dấu nhắc được hiển thị, theo mantrang.

Trong gói cụ thể auch như samba, nullmailer, localepurgelighttpdđã buộc tôi phải tương tác với các thiết bị đầu cuối, mặc dù toàn bộ thủ tục được viết kịch bản và có nghĩa là không tương tác.

Câu trả lời:


97

Bạn có thể sử dụng:

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

Chỉ dành cho các gói cụ thể, ví dụ mypackage1 mypackage2:

sudo apt-get update
sudo apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install mypackage1 mypackage2

Nguồn: http://raphaelhertzog.com/2010/09/21/debian-conffile-configuration-file-managed-by-dpkg/

Avoiding the conffile prompt

Every time that dpkg must install a new conffile that you have modified
(and a removed file is only a particular case of a modified file in dpkg’s eyes),
it will stop the upgrade and wait your answer. This can be particularly annoying for
major upgrades. That’s why you can give predefined answers to dpkg with the help
of multiple --force-conf* options:

    --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).

If you use Apt, you can pass options to dpkg with a command-line like this:

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

You can also make those options permanent by creating /etc/apt/apt.conf.d/local:

Dpkg::Options {
   "--force-confdef";
   "--force-confold";
}

Bạn có thể tìm thêm thông tin và nhiều tùy chọn hơn trong hướng dẫn sử dụng dpkg tại http://manpages.ubfox.com/manpages/xenial/en/man1/dpkg.1.html hoặc man dpkgvà tìm kiếm "confdef".


33
"Tôi tin rằng đây là tự giải thích" ... tiến hành sử dụng các tùy chọn mà tôi chưa từng thấy ai sử dụng cho apt-get
notbad.jpeg

1
@ notbad.jpeg: Tôi tin rằng nhận xét này nhằm vào việc đặt tên cho các tùy chọn đó. Tôi tìm thấy tên thực sự tự giải thích. Tất nhiên biết sử dụng chúng không phải là :-D
0xC0000022L

3
những gì về -y?
JDS

4
Xem thêm: linux.die.net/man/1/dpkg trong --forcephần này, nó mô tả các tùy chọn confoldconfdef. Cũng hữu ích: apt-config dumptừ Askubfox.com/questions/254129/ Lời
thom_nic

3
"Tự giải thích" ... hmm, tôi thấy mô tả đó vô cùng khó hiểu, đặc biệt là có nên sử dụng chúng kết hợp hay không. Một trong những điều đã làm sáng tỏ là dpkg(1). Cảm ơn @thom_nic.
Lloeki
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.