سرورز میں بیشتر کامیاب نقب زنی چالاک استحصال کے ذریعے نہیں بلکہ ایسی خامی کے ذریعے ہوتی ہے جس کا پیوند کئی مہینے پہلے آ چکا تھا۔ سبب عموماً سستی نہیں: چلتے ہوئے سرور پر ہاتھ سے تازہ کاری خوفناک لگتی ہے، کیونکہ apt upgrade کبھی کبھی ایسی چیزیں دوبارہ چلا دیتا ہے جن کے بارے میں کسی نے کہا ہی نہ تھا۔ خودکار تازہ کاریاں یہ معاملہ بند کر دیتی ہیں، مگر ان کی شہرت بری ہے — اور وہ عین اسی حد تک مستحق ہے جس حد تک انہیں جلدی میں مرتب کیا جاتا ہے۔
آئیے ایسا بندوبست دیکھتے ہیں جس میں سیکیورٹی کے پیوند خود آتے رہیں اور PHP کا نسخہ رات بھر میں نہ بدلے۔
تنصیب
sudo apt install unattended-upgrades apt-listchanges
sudo dpkg-reconfigure -plow unattended-upgrades
یہ مکالمہ /etc/apt/apt.conf.d/20auto-upgrades بناتا ہے۔ جانچیں کہ اس سے کیا نکلا:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
اکائیوں کا مطلب ہے «روزانہ»۔ اور یہ سب کلاسیکی cron نہیں بلکہ systemd کا ٹائمر چلاتا ہے:
systemctl list-timers | grep apt
اصل بات: صرف سیکیورٹی
بنیادی فائل /etc/apt/apt.conf.d/50unattended-upgrades ہے۔ اس میں Allowed-Origins کی فہرست ہوتی ہے (Debian میں Origins-Pattern)، اور بطور طے شدہ وہاں صرف سیکیورٹی کا ذخیرہ فعال ہوتا ہے۔ اسے ویسا ہی رہنے دیں۔
-updates سطر سے تبصرہ ہٹانے کا لالچ — «سب کچھ تازہ ہوتا رہے» — طاقتور ہے۔ ایسا نہ کریں: تازہ کاریوں کا ذخیرہ صرف اصلاحات نہیں بلکہ نئے نسخے لاتا ہے، اور رات کی حیرتیں عین وہیں سے آتی ہیں۔ سلامتی اور تازگی الگ الگ کام ہیں، اور دوسرا کام کی بورڈ پر بیٹھے ہوئے ہاتھ سے کرنا بہتر ہے۔
اگر کوئی پیکج خودکار طور پر تازہ نہ ہونا چاہیے تو اس کے لیے ایک سیاہ فہرست ہے:
Unattended-Upgrade::Package-Blacklist {
"mariadb-server";
"php8.3-fpm";
};
اسے شعوری طور پر استعمال کریں: یہاں کی ہر سطر کا مطلب ہے «یہ میں خود تازہ کروں گا» — اور یہ ایسا وعدہ ہے جسے نبھانا پڑے گا۔
دوبارہ آغاز
کلیدی سطر:
Unattended-Upgrade::Automatic-Reboot "false";
سائٹ والے سرور کے لیے اسے false پر رکھنا درست ہے: رات تین بجے بغیر اعلان دوبارہ آغاز ایک دن مؤخر ہونے والے پیوند سے بدتر ہے۔ مگر اس فیصلے کا ایک لازمی دوسرا نصف ہے، اور وہی نصف بھلا دیا جاتا ہے۔
جب کرنل، libc یا openssl تازہ ہوتے ہیں تو نظام فائل /var/run/reboot-required بناتا ہے۔ جب تک دوبارہ آغاز نہ ہو، درست شدہ نسخہ ڈسک پر پڑا رہتا ہے اور پرانا میموری میں چلتا رہتا ہے — یعنی خامی کہیں نہیں گئی، حالانکہ پیکج تازہ شدہ شمار ہوتا ہے۔ واضح طور پر جانچیں:
ls -l /var/run/reboot-required
cat /var/run/reboot-required.pkgs
دوسری فائل بتاتی ہے کہ دوبارہ آغاز کو ٹھیک ٹھیک کس چیز نے ضروری بنایا۔ اصول سادہ ہے: جھنڈا دیکھا — آنے والے ایک دو دن میں کھڑکی طے کریں، «کبھی» نہیں۔
لائبریریاں الگ معاملہ ہیں۔ openssl تازہ ہو جاتا ہے جبکہ nginx اور PHP-FPM میموری میں پرانے نسخے کے ساتھ کام کرتے رہتے ہیں، اور دوبارہ آغاز کا کوئی جھنڈا نمودار نہیں ہوتا۔ کسے دوبارہ چلانے کی ضرورت ہے، یہ needrestart دکھاتا ہے:
sudo apt install needrestart
sudo needrestart -b
بس اسے «بتاؤ، پوچھو نہیں» کی وضع پر رکھیں — ورنہ یہ کسی غیر تعاملی تنصیب کے بیچ سوال کرنے لگے گا اور اسے لٹکا دے گا۔ اس کے لیے /etc/needrestart/conf.d/ میں $nrconf{restart} = 'l'; سطر والی فائل رکھ دیں۔
جانچیں کہ یہ سرے سے کام کرتا ہے
تنصیب کے بغیر آزمائشی چلانا:
sudo unattended-upgrade --dry-run --debug
نتیجہ دکھاتا ہے کہ کون سے پیکج قواعد پر پورے اترتے ہیں اور کون سے کیوں مسترد ہوئے۔ اور واقعی کیا ہوا، یہ لاگ میں ہے:
sudo tail -50 /var/log/unattended-upgrades/unattended-upgrades.log
اِس وقت کتنی تازہ کاریاں انتظار میں ہیں:
apt list --upgradable 2>/dev/null | grep -i security
یہ آخری کمانڈ ان سب میں سب سے مفید ہے۔ مرتب شدہ خودکار تازہ کاریوں کی عادت ہے کہ خاموشی سے ٹوٹ جائیں: /boot بھر گیا، کسی ذخیرے نے کلید بدل دی، کسی دستی ترمیم کے بعد ٹائمر بند ہو گیا۔ باہر سے سب ٹھیک ہے، اور مہینوں سے پیوند نصب نہیں ہوئے۔
/boot پر جگہ
کلاسیکی صورت: پرانے کرنل نہیں مٹتے، پارٹیشن /boot بھر جاتا ہے، نیا کرنل نصب نہیں ہو پاتا، اور تازہ کاریاں مکمل طور پر رک جاتی ہیں۔ چند مہینوں میں ایک بار نظر ڈالنا چاہیے:
df -h /boot
sudo apt autoremove --purge
یا اسی 50unattended-upgrades میں خودکار صفائی فعال کریں: Remove-Unused-Kernel-Packages "true" اور Remove-Unused-Dependencies "true"۔
انسان کے لیے کیا بچتا ہے
خودکار تازہ کاریاں معمول کا کام ہٹا دیتی ہیں، نگرانی نہیں۔ دو سوال جن کا جواب آپ ہر لمحے دے سکنے چاہئیں: کتنی سیکیورٹی تازہ کاریاں انتظار میں ہیں، اور کیا دوبارہ آغاز کا جھنڈا لگا ہوا ہے۔ دونوں جواب ایک صفحے پر ایک ایک سطر ہیں، اور سارا مقصد یہ ہے کہ یہ سطر خود آپ کی نظر میں آ جائے، نہ کہ آپ کی پہل پر سہ ماہی میں ایک بار۔