พบว่า ubuntu 16.04 จะใช้ apache2 v 2.4.18 แม้ว่าเราจะสั่ง apt update; apt upgrade แล้วก็ตามเมื่อเช็คด้วยคำสั่ง apache2 -v จะพบว่ายังคงเป็นเวอร์ชั่น 2.4.18 เช่นเดียวกับ ubuntu 18.04 จะใช้ apache2 v 2.4.29 เท่านั้น หลังจากหาข้อมูลอยู่ทั้งวัน มีผู้ให้ข้อมูลใน google search ว่า ทีมพัฒนาจะไม่เปลี่ยนเวอร์ชั่นใน ubuntu ตาม upstream developer จนกว่าจะทดสอบและออก ubuntu next release
หากต้องการเป็นเวอร์ชั่น 2.4.39 ณ วันนี้ (4 เม.ย. 62 หลังจากข่าวช่องโหว่ apache2 2 วัน) ก็ต้องใช้ Third-Party PPA ของ ondrej (ผู้พัฒนาคนหนึ่งที่ทำ Debian Package)
เพิ่มเติมล่าสุด (5 เม.ย. 62) ทำใน ubuntu server อีกเครื่องที่ยังไม่ได้ทำแบบ PPA
$ sudo apt-get update ; sudo apt-get dist-upgrade
$ apache2 -v
Server version: Apache/2.4.18 (Ubuntu)
Server built: 2019-04-03T13:34:47
$ dpkg -l | grep apache2
ii apache2 2.4.18-2ubuntu3.10 amd64 Apache HTTP Server
พบว่ามีการปรับปรุงเวอร์ชั่น Server built 2019-04-03 ซึ่งตามหลัง patch PPA ไม่กี่ชั่วโมง ใครยังไม่สนใจจะเปลี่ยนเป็นเวอร์ชั่น 2.4.39 ก็น่าจะไม่ต้องทำแบบ PPA ตามข้อมูลใน link นี้
https://usn.ubuntu.com/3937-1/ และ
https://launchpad.net/ubuntu/xenial/+source/apache2/+changelog
ข้อควรระวัง ให้ตรวจสอบว่ามีการเข้าไปปรับแต่งไฟล์ apache2.conf ไว้หรือไม่ ต้องมีการทำ backup ไว้ก่อนอัปเดต เช่น บางท่านอาจไปเขียน Rewrite Rule ในไฟล์นี้ เป็นต้น ก็ต้องแก้ไขหลังจากอัปเดต รวมถึง Apache configuration files อื่น ๆ ที่เราใช้ เราต้องมี backup
อย่างไรก็ตามก่อนทำอัปเดต ต้องมั่นใจว่าถ้า server เราเป็น VM ก็ต้องมีการ backup VM ไว้ก่อน จะอุ่นใจขึ้น
sudo add-apt-repository ppa:ondrej/apache2
sudo apt-get update
sudo apt-get upgrade
หลังจากอัปเดต เช็คเวอร์ชั่นด้วยคำสั่ง apache2 -v ได้เวอร์ชั่นล่าสุด
Server version: Apache/2.4.39 (Ubuntu)
Server built: 2019-04-02T20:30:08
หากพบว่า ยังคงได้ version เดิม ตรวจสอบดู output จะพบว่า
Reading package lists… Done
Building dependency tree
Reading state information… Done
Calculating upgrade… Done
The following packages have been kept back:
apache2 apache2-bin apache2-data apache2-utils libaprutil1
libaprutil1-dbd-sqlite3 libaprutil1-ldap openssl
0 upgraded, 0 newly installed, 0 to remove and 8 not upgraded.
ทำคำสั่งนี้แทน
sudo apt-get dist-upgrade
Reading package lists… Done
Building dependency tree
Reading state information… Done
Calculating upgrade… Done
The following package was automatically installed and is no longer required:
liblua5.1-0
Use 'apt autoremove' to remove it.
The following NEW packages will be installed:
libbrotli1 libjansson4 liblua5.2-0 libnghttp2-14 libssl1.1
The following packages will be upgraded:
apache2 apache2-bin apache2-data apache2-utils libaprutil1
libaprutil1-dbd-sqlite3 libaprutil1-ldap openssl
8 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
Need to get 4,628 kB of archives.
After this operation, 6,757 kB of additional disk space will be used.
Do you want to continue? [Y/n]
กด Enter (เพื่อเลือก Y) แล้วจะมีการติดตั้งให้
ตอนนี้ก็เฝ้าระวังกันต่อไปว่า หลังจากทำวิธีนี้จะมีผลกระทบอะไรตามมาในอนาคตบ้างมั้ย หวังว่าจะไม่มี เพราะพยายามหาข้อมูลว่ามีใครแจ้งปัญหาจากวิธีการนี้ก็ไม่พบ พบแต่คำแนะนำวิธีนี้
ผมคงไม่สามารถรับประกันความปลอดภัยใด ๆ หรือผลที่ตามมาจากการทำขั้นตอนในโพสต์นี้นะครับ
สำหรับวิธีไม่ใช้ PPA จะกลับไปใช้ของเดิม
sudo apt-get install ppa-purge
sudo ppa-purge ppa:ondrej/apache2
ตรวจสอบ version ของ apache2
apache2 -v
dpkg -l | grep apache2
และล้างไฟล์ใน sources.list.d
ls -l /etc/apt/sources.list.d/
sudo add-apt-repository --remove ppa:ondrej/apache2
ลิงค์ที่เกี่ยวข้อง
- PPA for Apache 2.x https://launchpad.net/~ondrej/+archive/ubuntu/apache2
- Ubuntu 16.0.4 has Apache 2.4.18 in the cache but 2.4.29 is the latest release. Is it necessary to get latest version? https://askubuntu.com/questions/981535/ubuntu-16-0-4-has-apache-2-4-18-in-the-cache-but-2-4-29-is-the-latest-release-i
- How to Add or Remove PPA in Ubuntu
https://www.tecmint.com/add-remove-purge-ppa-in-ubuntu/