Nâng cấp distro Debian không tương tác 100%


38

Có cách nào để thực hiện một apt-get dist-upgradeDebian không chỉ tự động trả lời "có" cho tất cả các câu hỏi mà còn sử dụng các giá trị mặc định hợp lý làm câu trả lời cho các câu hỏi đủ tinh vi để yêu cầu các hộp thoại tương tác khác nhau bật lên không? Tôi đang suy nghĩ ở đây về các công cụ sơ đồ bàn phím xuất hiện khi bạn nâng cấp libc6và lựa chọn hình ảnh hạt nhân.

Mục đích là để có thể điều khiển từ xa bắt đầu một khá lớn dist-upgrade- ngay cả đối với một máy tính mà là nghiêm trọng đằng sau những lần - và không phải trông nom nó ở tất cả, trừ khi một cái gì đó chỉ là khủng khiếp, disastrously sai.

Chắc chắn điều này là có thể?

Cảm ơn trước!


Đối với những người chỉ muốn nâng cấp (chứ không phải nâng cấp xa) trên Ubuntu, hãy thử gói nâng cấp không giám sát .
Jo Liss

Câu trả lời:


42

Nếu bạn đặt DEBIAN_FRONTEND=noninteractive(để ngăn lời nhắc gỡ lỗi xuất hiện) và thêm force-confoldforce-confdefvào /etc/dpkg/dpkg.cfgtệp của mình , bạn sẽ có trải nghiệm cài đặt gói hoàn toàn không tương tác. Bất kỳ gói nào vẫn nhắc bạn về thông tin đều có lỗi nghiêm trọng về phát hành (và tôi nói đó là cả người nghiện tự động hóa là nhà phát triển Debian).


điều này đã không làm việc cho tôi. apt-listchangesđã được mở bởi less.
nam châm

@magnetar: Đó là một vấn đề với apt-listchanges, không phải apt. Gỡ cài đặt apt-listchanges hoặc cấu hình nó một cách thích hợp.
womble

1
Hãy thử: env APT_LISTCHANGES_FRONTEND = none apt-get dist-nâng cấp -u -y
H.-Dirk Schmitt

21

Florian Lohoff đã đăng một cách để có được những gì womble đề xuất thành một lệnh duy nhất:

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

Tất nhiên bạn cũng có thể sử dụng -o Dpkg::Options::="--force-confnew --force-confdef"(tìm kiếm trang man dpkg cho confnew). Tôi không chắc chắn trong trường hợp này điều này sẽ làm cho một sự khác biệt mặc dù. Cá nhân tôi cần nâng cấp không tương tác để cập nhật hình ảnh vanilla, trong trường hợp tôi cho rằng luôn chọn tệp cấu hình mới (không có --force-confdef) là một điều hợp lý.


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

3

Mặc dù câu trả lời của womble ở trên nói chung là tốt, nhưng nó không hiệu quả với tôi và tôi đã phải thực hiện một số nghiên cứu bổ sung để không bị giám sát 100%. Tôi nghĩ rằng tôi sẽ chia sẻ kết quả một cách súc tích để làm cho mọi thứ đơn giản hơn cho khách truy cập trong tương lai.

Sau đây là một tập lệnh sẽ chạy theo các đề xuất nâng cấp ghi chú phát hành 8 (phần lớn) cùng với các cờ và biến môi trường sẽ làm cho nó không được giám sát. (các echos chỉ để gỡ lỗi và có thể được gỡ bỏ - mặc dù tôi khuyên bạn nên giữ chúng để nếu đoạn script bị kẹt, bạn sẽ biết nơi)

#!/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
Lưu ý: "- Force-yes Buộc có, đây là một tùy chọn nguy hiểm sẽ khiến apt tiếp tục mà không cần nhắc nhở nếu nó đang làm gì đó có hại. Nó không nên được sử dụng trừ khi trong những tình huống rất đặc biệt. Sử dụng vũ lực-có thể có khả năng phá hủy Hệ thống của bạn! Mục cấu hình: APT :: Get :: force-yes. Điều này không được chấp nhận và được thay thế bằng --allow-downgrades, --allow-remove-Essential, --allow-thay đổi-giữ-gói trong 1.1. "
Alex

1

> = Apt 1.1

Nếu bạn đang sử dụng Apt 1.1 trở lên, --force-yesđã bị phản đối , vì vậy bạn đã sử dụng các tùy chọn bắt đầu với --allowthay vào đó, ví dụ như --allow-downgrades, --allow-remove-essential, --allow-change-held-packages.

Vì vậy, lệnh là:

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

Lưu ý: Sử dụng --force-confoldđể giữ cũ và --force-confnewđể giữ cấu hình mới.

Nguồn: CFE-2360: Nhận biết phiên bản mô-đun gói apt_get .

Liên quan:


-4

Từ apt-get(8)trang người đàn ông:

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

Để tham khảo, -ytùy chọn hoạt động yum(8)là tốt.


5
Tôi biết về điều đó. Tôi sử dụng cờ đó và nó trả lời thành công 'có' cho các câu hỏi APT Y / N tiêu chuẩn về việc ghi đè các cấu hình hiện có, v.v., v.v. Đó không phải là những câu hỏi tôi đang đề cập. Khi tôi thực hiện nâng cấp apt-get -y, nó vẫn đưa cho tôi một số lời nhắc 'hộp thoại' cho nội dung được xem là vé lớn, tức là thay đổi sơ đồ bàn phím, khởi động lại dịch vụ liên quan đến libc6, v.v. Tôi đang tìm kiếm một cờ bổ sung cho tắt nó đi
Alex Balashov
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.