Làm cách nào để đặt Raspberry Pi tự động cập nhật / nâng cấp?


34

Hiện tại, để cập nhật mọi thứ trên Raspberry Pi của tôi, tôi phải nhập sudo apt-get updatesudo apt-get upgrade. Có cách nào để thiết lập nó để tự động làm điều này không? Tôi đang chạy Raspbian Jessie.

Câu trả lời:


47

thay vì một cron thủ công, bạn có thể cài đặt unattended-upgrades, rất hữu ích để đảm bảo các hạt nhân mới nhất được cài đặt. Nó chủ yếu được thiết kế để bảo mật.

https://wiki.debian.org/UnattendsUpgrades

apt-get install unattended-upgrades

Có một số bit có thể được điều chỉnh / cấu hình, nhưng mặc định là tốt.


5
Đối với tôi, mặc định là không tốt. Nó không làm gì cả: /var/log/unattended-upgrades/unattended-upgrades.logtệp đã báo cáo Allowed origins are: []nên về cơ bản nó không lấy bất kỳ bản cập nhật nào. Sau khi cập nhật /etc/apt/apt.conf.d/50unattended-upgradesđể bao gồm các "origin=Raspbian,codename=${distro_codename},label=Raspbian";bản cập nhật bắt đầu.
Rabarberski

Cổ xương của tôi (như trong tháng 9 năm 2017) 50unattended-upgradesdanh sách "origin=Debian,codename=${distro_codename},label=Debian-Security";và nó xuất hiện để tìm các gói có liên quan một cách chính xác. Tất nhiên nó bỏ qua nhiều người trong số họ. Tôi đã không thiết lập bất kỳ danh sách trắng hoặc đen.
Jon V

3
Mặc định 50unattended-upgradeslà thực sự ngu ngốc và phải được thay đổi để hoạt động trên Raspian. Không có Raspian-Security. Cập nhật bảo mật không được dán nhãn. Điều quan trọng là phải thêm cả "origin=Raspbian,codename=${distro_codename},label=Raspbian";"origin=Raspberry Pi Foundation,codename=${distro_codename},label=Raspberry Pi Foundation";vào/etc/apt/apt.conf.d/50unattended-upgrades
user643011

23

Trong một thiết bị đầu cuối, gõ:

sudo su

Để truy cập một dấu nhắc cấp gốc. Sau đó chạy:

crontab -e

Để bắt đầu chỉnh sửa crontab của bạn, một bảng các tác vụ sẽ tự động chạy tại một thời điểm nhất định. Nó sẽ mở trong trình soạn thảo văn bản ưa thích của bạn. Sửa đổi nó để bao gồm các dòng sau:

0 7 * * 1 apt update && apt upgrade -y

Để tự động cập nhật và nâng cấp ứng dụng của bạn vào lúc 7 giờ sáng thứ Hai. Đọc trên crontab để xem cách điều chỉnh theo ý thích của bạn.


2
Có lẽ tốt hơn là đặt các lệnh trên cùng một dòng &&vì chúng có liên quan và không có lý do gì để thực hiện 'nâng cấp' nếu 'cập nhật' thất bại.
tedder42

trong crontab 0có nghĩa là Chủ nhật nhưng trong mã của bạn, bạn đã đặt 1để lệnh sẽ được chạy vào Thứ Hai, không phải Chủ Nhật
rav_kr

3
dist-upgradetốt hơn là upgrade, bạn sẽ kết thúc với các phụ thuộc bị hỏng chỉ sử dụng upgrade. Bạn cũng sẽ không nhận được xung quanh các bản cập nhật yêu cầu xác nhận hộp thoại. @ tedder42 đã chỉ ra phương pháp được Debian ưa thích (sử dụng unattended-upgrades).
ryanpcmcquen

Bạn đã bỏ lỡ sudo thứ hai sau khi thêm &&. Mặc dù đó là trong crontab gốc.
user643011

1
Không nên có bất kỳ thứ gì sudotrong đó; bạn đã chuyển sang roottài khoản bằng cách sử dụng su. Crontab của siêu nhân được điều hành với các đặc quyền siêu người dùng.
goldilocks

8

Bạn có thể cài đặt và cấu hình cron-apt. Cài đặt nó bằng cách làm như sau:

apt-get install cron-apt

tập tin cấu hình chính là / etc / cron-apt / config

Một điều tôi thêm vào cấu hình của mình là:

MAILON="always"

điều này sẽ gửi email mỗi khi nó chạy, không chỉ khi nó gặp lỗi.

Lưu ý rằng thiết lập mặc định sẽ không tự động cài đặt các bản cập nhật (có một số lý do chính đáng để không làm điều này), nhưng bạn có thể cấu hình nó để làm như vậy. Một lợi thế mà chương trình này cung cấp cho một giải pháp cron đơn giản là nó cho phép bạn kiểm soát những gì được cài đặt (chỉ tải xuống các gói mới, cài đặt các bản cập nhật bảo mật hoặc cài đặt tất cả các bản cập nhật).

Để đặt thời gian nó chạy chỉnh sửa tệp /etc/cron.d/cron-apt.

Bạn có thể tìm thêm thông tin và tùy chọn cấu hình ở đây

Gói bao gồm tài liệu rất tốt, tuy nhiên nó được nén. Để giải nén tập tin:

  1. tạo một thư mục để làm việc trong - mkdir cron-apt_documentation
  2. thay đổi thư mục mới - cd cron-apt_documentation
  3. sao chép tệp nén - cp /usr/share/doc/cron-apt/README.gz. (lưu ý dấu chấm)
  4. giải nén tệp - gunzip README.gz
  5. đọc tập tin - mèo README | ít hơn

hoặczcat /usr/share/doc/cron-apt/README.gz | less

5

Trong cấu hình mặc định của nó, unattended-upgradesbị hỏng trong Raspbian Buster. Nó sẽ không cài đặt các bản cập nhật quan trọng cho kernel và phần mềm khác. Lựa chọn của bạn là:

Tùy chọn đề xuất:

sudo apt install unattended-upgrades

echo 'Unattended-Upgrade::Origins-Pattern {
//      Fix missing Rasbian sources.
        "origin=Debian,codename=${distro_codename},label=Debian";
        "origin=Debian,codename=${distro_codename},label=Debian-Security";
        "origin=Raspbian,codename=${distro_codename},label=Raspbian";
        "origin=Raspberry Pi Foundation,codename=${distro_codename},label=Raspberry Pi Foundation";
};' | sudo tee /etc/apt/apt.conf.d/51unattended-upgrades-raspbian

Để cập nhật bảo mật nhanh hơn (nhưng kém ổn định hơn, vì các gói chưa được phê duyệt cho rasbian), bạn có thể thêm các gói bảo mật debian vào apt:

echo 'deb http://deb.debian.org/debian-security/ buster/updates main contrib non-free' | sudo tee /etc/apt/sources.list.d/debian-security.list

Bạn có thể sẽ cần phải cài đặt các khóa apt mới cho kho lưu trữ debian .

Sự lựa chọn khác:

  • Làm việc xung quanh nó bằng cách sử dụng cron-apt: sudo apt install cron-apt

  • Những cách khác để làm việc xung quanh nó.

Bạn nên sử dụng các bản cập nhật không giám sát và sửa lỗi gói, vì nó phù hợp nhất cho mục đích này. Cron-apt là tùy chọn tốt thứ hai của bạn, bởi vì nó cũng được thiết kế cho mục đích tương tự. Tôi không chắc có thể tự động khởi động lại hệ thống của bạn sau khi cập nhật kernel. Nâng cấp không giám sát thường có tùy chọn đó, nhưng tôi không chắc nó hoạt động với bản sửa lỗi ở trên.

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.