ฉันจะตั้งค่า Raspberry Pi เป็น update / upgrade อัตโนมัติได้อย่างไร


34

ปัจจุบันได้รับสิ่งที่ได้ถึงวันที่ราสเบอร์รี่ Pi ของฉันฉันต้องพิมพ์และsudo apt-get update sudo apt-get upgradeมีวิธีตั้งค่าให้ทำสิ่งนี้โดยอัตโนมัติหรือไม่? ฉันกำลังใช้ Raspbian Jessie

คำตอบ:


47

แทนที่จะเป็น cron แบบแมนนวลคุณสามารถติดตั้งunattended-upgradesซึ่งมีประโยชน์เพื่อให้แน่ใจว่าได้ติดตั้งเมล็ดล่าสุดแล้ว มันถูกออกแบบมาเพื่อความปลอดภัยเป็นส่วนใหญ่

https://wiki.debian.org/UnattendedUpgrades

apt-get install unattended-upgrades

มีบางบิตที่สามารถปรับ / กำหนดค่าได้ แต่ค่าเริ่มต้นนั้นใช้ได้


5
สำหรับฉันเริ่มต้นไม่ดี มันไม่ได้ทำอะไรที่: /var/log/unattended-upgrades/unattended-upgrades.logแฟ้มรายงานAllowed origins are: []ดังนั้นโดยทั่วไปมันก็ไม่ได้ดึงการปรับปรุงใด ๆ ในการปรับปรุงหลังจาก. /etc/apt/apt.conf.d/50unattended-upgradesจะรวมถึง"origin=Raspbian,codename=${distro_codename},label=Raspbian";การปรับปรุงเริ่มเข้ามาใน.
Rabarberski

รายการกระดูกของฉัน (ณ เดือนกันยายน 2017) มี50unattended-upgradesรายการ"origin=Debian,codename=${distro_codename},label=Debian-Security";และดูเหมือนว่าจะค้นหาแพ็คเกจที่เกี่ยวข้องได้อย่างถูกต้อง แน่นอนมันไม่สนใจหลายคน ฉันไม่ได้ตั้งค่าบัญชีขาวหรือบัญชีดำ
Jon V

3
ค่าเริ่มต้น50unattended-upgradesคือโง่แน่นอนและจะต้องมีการเปลี่ยนแปลงเพื่อให้สามารถทำงานกับ Raspian Raspian-Securityไม่มี การปรับปรุงความปลอดภัยไม่ได้ระบุว่า เป็นสิ่งสำคัญที่จะต้องเพิ่มทั้งสอง"origin=Raspbian,codename=${distro_codename},label=Raspbian";และ"origin=Raspberry Pi Foundation,codename=${distro_codename},label=Raspberry Pi Foundation";ไปยัง/etc/apt/apt.conf.d/50unattended-upgrades
user643011

23

ในเทอร์มินัลพิมพ์:

sudo su

เพื่อเข้าถึงพรอมต์ระดับราก จากนั้นเรียกใช้:

crontab -e

ในการเริ่มแก้ไข crontab ของคุณสารบัญงานที่จะรันโดยอัตโนมัติตามเวลาที่กำหนด มันจะเปิดในโปรแกรมแก้ไขข้อความที่คุณต้องการ แก้ไขเพื่อรวมบรรทัดต่อไปนี้:

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

เพื่ออัปเดตและอัปเกรดแอปของคุณโดยอัตโนมัติเวลา 7AM ทุกวันจันทร์ อ่านบน crontab เพื่อดูวิธีปรับให้เข้ากับความชอบของคุณ


2
มันน่าจะดีกว่าถ้าวางคำสั่งไว้ในบรรทัดเดียวกัน&&เนื่องจากมันเกี่ยวข้องกันและไม่มีเหตุผลที่จะ 'อัพเกรด' ถ้า 'update' ล้มเหลว
tedder42

ใน crontab 0หมายถึงวันอาทิตย์ แต่ในรหัสของคุณคุณได้ใส่ไว้1ดังนั้นคำสั่งจะทำงานในวันจันทร์ไม่ใช่วันอาทิตย์
rav_kr

3
dist-upgradeดีกว่าคุณจะจบลงด้วยการอ้างอิงหักโดยใช้เพียงupgrade upgradeคุณจะไม่ได้รับการอัพเดตที่ต้องมีการยืนยันการโต้ตอบ @ tedder42 ชี้ให้เห็นวิธีที่ Debian ต้องการ (โดยใช้unattended-upgrades)
ryanpcmcquen

คุณพลาด sudo ตัวที่สองหลังจากเพิ่ม && ถึงแม้ว่ามันจะอยู่ในราก crontab อยู่ดี
user643011

1
ไม่ควรมีสิ่งใดsudoในนั้น คุณได้เปลี่ยนไปบัญชีโดยใช้root sucrontab ของ superuser ทำงานด้วยสิทธิ์ superuser
goldilocks

8

คุณสามารถติดตั้งและกำหนดค่า cron-apt ติดตั้งโดยทำดังต่อไปนี้:

apt-get install cron-apt

ไฟล์กำหนดค่าหลักคือ / etc / cron-apt / config

สิ่งหนึ่งที่ฉันเพิ่มลงในการกำหนดค่าของฉันคือ:

MAILON="always"

การดำเนินการนี้จะส่งอีเมลทุกครั้งที่ทำงานไม่ใช่เฉพาะเมื่อพบข้อผิดพลาด

โปรดทราบว่าการตั้งค่าเริ่มต้นจะไม่ติดตั้งการอัปเดตโดยอัตโนมัติ (มีเหตุผลที่ดีที่จะไม่ทำเช่นนี้) แต่คุณสามารถกำหนดค่าให้ทำเช่นนั้นได้ ข้อดีอย่างหนึ่งของโปรแกรมนี้คือการแก้ปัญหา cron อย่างง่าย ๆ คือมันให้คุณควบคุมสิ่งที่ได้รับการติดตั้ง (ดาวน์โหลดเฉพาะแพ็คเกจใหม่ติดตั้งโปรแกรมปรับปรุงความปลอดภัยหรือติดตั้งโปรแกรมปรับปรุงทั้งหมด)

หากต้องการตั้งเวลาที่จะแก้ไขไฟล์ /etc/cron.d/cron-apt

คุณสามารถค้นหาข้อมูลเพิ่มเติมและตัวเลือกการกำหนดค่าได้ที่นี่

แพคเกจรวมถึงเอกสารที่ดีมาก แต่มันเป็น gzipped วิธีแยกไฟล์:

  1. สร้างไดเรกทอรีเพื่อทำงานใน - mkdir cron-apt_documentation
  2. เปลี่ยนเป็นไดเร็กทอรีใหม่ - cd cron-apt_documentation
  3. คัดลอกไฟล์บีบอัด - cp /usr/share/doc/cron-apt/README.gz (สังเกตจุดต่อท้าย)
  4. คลายการบีบอัดไฟล์ - gunzip README.gz
  5. อ่านไฟล์ - cat README | น้อยกว่า

หรือzcat /usr/share/doc/cron-apt/README.gz | less

5

ในการกำหนดค่าเริ่มต้นมันunattended-upgradesจะแตกใน Raspbian Buster มันจะไม่ติดตั้งอัพเดตที่สำคัญสำหรับเคอร์เนลและซอฟต์แวร์อื่น ๆ ตัวเลือกของคุณคือ:

ตัวเลือกที่แนะนำ:

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

สำหรับการปรับปรุงความปลอดภัยที่เร็วขึ้น (แต่ความเสถียรน้อยลงเนื่องจากแพ็คเกจยังไม่ได้รับการอนุมัติสำหรับ rasbian) คุณสามารถเพิ่มแพ็คเกจความปลอดภัยของเดเบียนลงใน 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

คุณอาจจะต้องติดตั้งกุญแจฉลาดใหม่สำหรับพื้นที่เก็บข้อมูลเดเบียน

ตัวเลือกอื่น:

  • แก้ไขโดยใช้ cron-apt: sudo apt install cron-apt

  • วิธีอื่นในการแก้ไข

ขอแนะนำให้ใช้การอัปเดตแบบไม่ต้องใส่ข้อมูลและแก้ไขแพ็กเกจเนื่องจากเหมาะที่สุดสำหรับวัตถุประสงค์ Cron-apt เป็นตัวเลือกที่ดีที่สุดที่สองของคุณเพราะมันถูกออกแบบมาเพื่อวัตถุประสงค์ที่คล้ายกัน ฉันไม่แน่ใจว่าสามารถรีบูตระบบของคุณโดยอัตโนมัติหลังจากอัปเดตเคอร์เนล การอัปเกรดแบบไม่ต้องใส่ข้อมูลมักจะมีตัวเลือกนั้น แต่ฉันไม่แน่ใจว่าสามารถใช้งานได้กับการแก้ไขด้านบน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.