การเปิดใช้งานการอัพเกรดแบบอัตโนมัติจากเชลล์สคริปต์


17

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

วิธีปกติในการเปิดใช้งานการอัปเกรดคือdpkg-reconfigure unattended-upgradesแต่แน่นอนว่าเป็นแบบโต้ตอบ ส่วนหน้าที่ไม่มีการตอบโต้หลีกเลี่ยงการถามคำถามใด ๆ เลยและส่วนหน้าของข้อความดูเหมือนจะถูกผูกไว้และมุ่งมั่นที่จะทำ I / O ของมันด้วย tty และไม่ใช่กับ stdin / stdout


1
ฉันไม่เคยใช้เครื่องมือนี้มาก่อน แต่ดูเหมือนว่าการเปิดใช้งานจะเขียน 1 ถึงสองบรรทัดในไฟล์ /etc/apt/apt.conf.d/20auto-upgrades หากคุณเขียนไฟล์นั้นด้วยตนเองจะใช้งานได้หรือไม่
mfisch

คำตอบ:


20

เพียงทำสำเนาของ /etc/apt/apt.conf.d/20auto-upgrades หลังจากกำหนดค่าตามที่คุณต้องการและวางลงในเครื่องเป้าหมายของคุณ คุณสามารถฝังไว้ในสคริปต์ของคุณหรือคุณสามารถ rsync หรือ wget จากเซิร์ฟเวอร์หรืออะไรก็ตาม

ดังนั้นโดยทั่วไปสคริปต์ของคุณอาจทำสิ่งนี้:

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

ไม่มีเหตุผลใดที่จะลิงด้วยสคริปต์ dpkg-reconfigure เลย

หากคุณไม่ต้องการเรียกไฟล์ conf จากเซิร์ฟเวอร์ระยะไกลมันสั้นมากและง่ายมาก - รุ่นเริ่มต้นที่ดึงและติดตั้งโปรแกรมปรับปรุงความปลอดภัยเท่านั้นดูเหมือนว่า:

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

ดังนั้นคุณสามารถสะท้อนบรรทัดเหล่านั้นลงในไฟล์กำหนดค่าได้โดยตรงดังต่อไปนี้:

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

1

หากคุณต้องการใช้ dpkg-reconfigure คุณสามารถตั้งค่าด้วย "debconf-set-selections" แล้วกำหนดค่าใหม่ด้วยวิธีที่ไม่โต้ตอบ

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

0

คุณต้องใช้ sudo เพื่อสะท้อน /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

ฉันขอแนะนำให้ใส่พารามิเตอร์การกำหนดค่าเพื่อกำหนดค่าการอัพเกรดแบบอัตโนมัติ

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

วิธีเดียวกับที่คุณสามารถกำหนดค่า / /etc/apt/apt.conf.d/50unattended-upgradesเพิ่มพารามิเตอร์ตามความต้องการของคุณในแฟ้ม

อย่าลืมรีสตาร์ทบริการเพื่อใช้การเปลี่ยนแปลง

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