Kích hoạt nâng cấp không giám sát từ tập lệnh shell


17

Tôi có một tập lệnh shell để tự động cấu hình các máy ảo Ubuntu mới cho mục đích của mình. Tôi muốn tập lệnh này để cài đặt và kích hoạt unattended-upgrades, nhưng tôi không thể tìm ra cách thực hiện mà không có sự tương tác của người dùng.

Cách thông thường để kích hoạt nâng cấp là dpkg-reconfigure unattended-upgrades, nhưng tất nhiên đó là tương tác. Mặt trước không tương tác sẽ tránh hỏi bất kỳ câu hỏi nào, và mặt trước văn bản dường như bị ràng buộc và quyết tâm thực hiện I / O của nó với tty chứ không phải với stdin / stdout.


1
Tôi chưa từng sử dụng công cụ này trước đây, nhưng có vẻ như cho phép nó ghi 1 vào hai dòng trong tệp /etc/apt/apt.conf.d/20auto-upgrades. Nếu bạn tự viết tập tin đó thì nó có hoạt động không?
mfisch

Câu trả lời:


20

Chỉ cần tạo một bản sao của /etc/apt/apt.conf.d/20auto-upgrades sau khi định cấu hình theo cách bạn muốn và thả nó vào vị trí trên máy mục tiêu của bạn. Bạn có thể nhúng nó vào tập lệnh của mình hoặc bạn có thể rsync hoặc wget nó từ máy chủ hoặc bất cứ thứ gì.

Vì vậy, về cơ bản kịch bản của bạn có thể làm một cái gì đó như thế này:

apt-get install unattended-upgrades
wget -O /etc/apt/apt.conf.d/20auto-upgrades http://myserver.mytld/confs/20auto-upgrades
/etc/init.d/unattended-upgrades restart

Thực sự không có lý do gì để khỉ với kịch bản dpkg-cấu hình lại cả.

Nếu bạn không muốn tìm nạp tệp conf từ một máy chủ từ xa, thì RẤT rất ngắn và đơn giản - phiên bản mặc định, chỉ tìm nạp và cài đặt các bản cập nhật bảo mật, trông như thế này:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

Vì vậy, bạn chỉ có thể lặp lại các dòng đó vào tệp cấu hình trực tiếp bằng cách sau:

echo -e "APT::Periodic::Update-Package-Lists \"1\";\nAPT::Periodic::Unattended-Upgrade \"1\";\n" > /etc/apt/apt.conf.d/20auto-upgrades

1

Nếu bạn muốn sử dụng dpkg-cấu hình lại, bạn có thể đặt giá trị bằng "debconf-set-select", sau đó cấu hình lại nó theo cách không tương tác.

echo "unattended-upgrades       unattended-upgrades/enable_auto_updates boolean true" | debconf-set-selections; dpkg-reconfigure -f noninteractive unattended-upgrades

0

Bạn phải sử dụng sudo để lặp lại /etc/apt/apt.conf.d/20auto-upgrades

if [[ ! -f /etc/apt/apt.conf.d/20auto-upgrades.bak ]]; then
    sudo cp /etc/apt/apt.conf.d/20auto-upgrades /etc/apt/apt.conf.d/20auto-upgrades.bak
    sudo rm /etc/apt/apt.conf.d/20auto-upgrades
    echo "APT::Periodic::Update-Package-Lists \"1\";
    APT::Periodic::Download-Upgradeable-Packages \"1\";
    APT::Periodic::AutocleanInterval \"30\";
    APT::Periodic::Unattended-Upgrade \"1\";" | sudo tee --append /etc/apt/apt.conf.d/20auto-upgrades
fi

0
dpkg-reconfigure -f noninteractive unattended-upgrades

0

Tôi sẽ đề nghị chèn các tham số cấu hình để cấu hình nâng cấp không giám sát.

sudo touch /etc/apt/apt.conf.d/20auto-upgrades

echo "APT::Periodic::Update-Package-Lists "1"" >> /etc/apt/apt.conf.d/20auto-upgrades

echo "APT::Periodic::Unattended-Upgrade "1" " >> /etc/apt/apt.conf.d/20auto-upgrades

Tương tự như cách bạn có thể cấu hình / thêm tham số theo yêu cầu của bạn trong tệp conf /etc/apt/apt.conf.d/50unattended-upgrades.

Đừng quên khởi động lại dịch vụ để áp dụng các thay đổi.

/etc/init.d/unattended-upgrades restart
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.