การตั้งค่า auto update บน ubuntu 16.04 server

จาก Wiki Opensource

บันทึกนี้ปรับปรุงล่าสุดเมื่อวันที่ 10-08-2559
ดูแลโดย WIBOON

พบว่าบน ubuntu 16.04 มีการตั้งค่า auto update เป็นแบบ วันละครั้ง และ แบบ random period
บางครั้ง เราจะพบว่า เราทำคำสั่ง apt-get เพื่อติดตั้งโปรแกรมไม่ได้ ดังผลลัพธ์ตัวอย่างนี้

mama@ubuntu:~$ sudo apt-get install shorewall
[sudo] password for mama:
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?


ค้นหาด้วยคำนี้ unattended-upgrades
จะพบว่ามีการติดตั้งไว้แล้ว

mama@ubuntu:~$ dpkg -l | grep unattended-upgrades
ii  unattended-upgrades                0.90                            all          automatic installation of security upgrades


และเมื่อตรวจสอบ log ได้ผลลัพธ์อ่านได้ว่า มีการทำ auto update ตอนเปิดเครื่อง

mama@ubuntu:~$ tail -10 /var/log/unattended-upgrades/unattended-upgrades.log
2016-08-08 09:49:16,430 INFO Starting unattended upgrades script
2016-08-08 09:49:16,430 INFO Allowed origins are: ['o=Ubuntu,a=xenial-security']
2016-08-08 09:49:19,561 INFO No packages found that can be upgraded unattended and no pending auto-removals
2016-08-10 10:12:09,194 INFO Initial blacklisted packages:
2016-08-10 10:12:09,335 INFO Initial whitelisted packages:
2016-08-10 10:12:09,335 INFO Starting unattended upgrades script
2016-08-10 10:12:09,335 INFO Allowed origins are: ['o=Ubuntu,a=xenial-security']
2016-08-10 10:12:25,979 INFO Packages that will be upgraded: curl gcc-5-base libcurl3-gnutls libstdc++6 linux-generic linux-headers-generic linux-image-generic
2016-08-10 10:12:25,980 INFO Writing dpkg log to '/var/log/unattended-upgrades/unattended-upgrades-dpkg.log'
2016-08-10 10:16:23,096 INFO All upgrades installed


นอกจากนี้หากค้นดูใน /etc/apt/apt.conf.d จะพบว่ามีรายการเกี่ยวกับการ auto update
ผลลัพธ์

mama@ubuntu:~$ ls -l /etc/apt/apt.conf.d/
total 52
-rw-r--r-- 1 root root   49 Apr 22 16:35 00aptitude
-rw-r--r-- 1 root root   82 Apr 22 16:28 00CDMountPoint
-rw-r--r-- 1 root root   40 Apr 22 16:28 00trustcdrom
-rw-r--r-- 1 root root  769 Apr 14 14:45 01autoremove
-r--r--r-- 1 root root 3110 Aug 10 10:15 01autoremove-kernels
-rw-r--r-- 1 root root   42 Apr 14 14:45 01-vendor-ubuntu
-rw-r--r-- 1 root root  129 Apr 12 17:25 10periodic
-rw-r--r-- 1 root root  108 Apr 12 17:25 15update-stamp
-rw-r--r-- 1 root root   85 Apr 12 17:25 20archive
-rw-r--r-- 1 root root   80 Feb 19 05:19 20auto-upgrades
-rw-r--r-- 1 root root 2331 Apr 22 16:32 50unattended-upgrades
-rw-r--r-- 1 root root  182 Nov 11  2015 70debconf
-rw-r--r-- 1 root root  305 Apr 12 17:26 99update-notifier


ลองอ่านดูไฟล์ 10periodic
ภายในมีค่าต่าง ๆ ดังนี้

mama@ubuntu:~$ sudo cat /etc/apt/apt.conf.d/10periodic
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "0";
APT::Periodic::AutocleanInterval "0";


และลองอ่านดูไฟล์ 20auto-upgrades
ภายในมีค่าต่าง ๆ ดังนี้

mama@ubuntu:~$ sudo cat /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";


และลองอ่านดูไฟล์ 50unattended-upgrades
ภายในมีค่าต่าง ๆ ดังนี้

mama@ubuntu:~$ sudo cat /etc/apt/apt.conf.d/50unattended-upgrades
// Automatically upgrade packages from these (origin:archive) pairs
Unattended-Upgrade::Allowed-Origins {
        "${distro_id}:${distro_codename}-security";
.
.
.


หากต้องการตั้งค่าเป็นอย่างอื่น ก็คงต้องแก้ไขค่าในไฟล์เหล่านี้ แต่ ubuntu แนะนำว่า นี่คือ เรื่องที่ทำขึ้นมาเพื่อแก้ปัญหาการละเลย การไม่ ทำ update ubuntu แล้วส่งผลต่อ security ของ server

ก่อนหน้านี้ใน ubuntu รุ่นก่อน เราต้องใช้คำสั่งนี้เอง คือ
sudo apt-get update; sudo apt-get dist-upgrade -y
เพื่อให้มีการอัปเดตตามรายการที่แจ้งว่ามีจำนวนเท่านั้นเท่านี้ที่ต้องอัปเดต

Reference:
https://help.ubuntu.com/lts/serverguide/automatic-updates.html https://wiki.debian.org/UnattendedUpgrades