apt purge म्हणते पॅकेज गेले, तरी प्रत्येक सुरुवातीला बोगदा पुन्हा वर येतो. journal वाढतच राहतो, मार्ग परत येतात, आणि मशीन काहीच काढले नसल्यासारखे वागते. विक्रेत्याचा इन्स्टॉलर पॅकेज व्यवस्थापकाने कधीही नोंदवली नसलेली फाइल्स लिहू शकतो, म्हणून पॅकेज काढणे आणि उत्पादन काढणे या दोन वेगळ्या गोष्टी आहेत. खालील runbook दोन नोंदी वेगळ्या करते आणि काढणे जाणूनबुजून पूर्ण करते.

दोन इन्स्टॉलर, दोन वेगळ्या नोंदी

Debian पॅकेजेस फाइलींची यादी ठेवतात, आणि purge ती यादी जे नाव देते तेच आणि पॅकेजची संरचना काढते. शेल इन्स्टॉलर किंवा .run बंडल अशी यादी ठेवत नाही; तो हवे तिथे लिहितो, सहसा /opt, /usr/local आणि /etc/systemd/system मध्ये. त्या मार्गांपैकी कोणताही कोणत्याही पॅकेजच्या फाइल यादीत दिसत नाही, म्हणून dpkg त्यांना ओळखत नाही किंवा त्यांची नोंद करत नाही. शेवटी एकाच फाइल सिस्टमवर दोन इन्स्टॉलेशन मालक असतात, आणि त्यांच्यापैकी एकच हिशोब ठेवतो.

काढण्यापूर्वी त्या विशिष्ट मार्गाबद्दल dpkg ला विचारा. तो नाकारतो तो मार्ग तुमचा काढण्यासाठी आहे, आणि तेच उत्तर सांगते की पुढील अपग्रेड तो परत आणेल का.

dpkg -S /etc/systemd/system/acmevpn.service
systemctl list-unit-files | grep -i acmevpn

unit आणि त्याची wants लिंक वेगळ्या फाइल्स आहेत

सक्षम करणे हे बसवण्यापेक्षा वेगळे कृत्य आहे. unit त्याच्या [Install] विभागात लक्ष्य संबंध जाहीर करतो, आणि systemctl enable त्या जाहिराती प्रत्येक लक्ष्याच्या .wants/ डिरेक्टरीत प्रतीकात्मक लिंकमध्ये बदलतो. आता दोन मार्ग आहेत: unit फाइल, आणि तिला बूट लक्ष्यात ओढणारी लिंक. फक्त फाइल काढा तर लिंक कुठेही दाखवत नाही, यामुळे बूटवर तक्रार होते; फक्त लिंक काढा तर unit नावाने सुरू करता येण्यासारखा राहतो. दोन्ही जायला हवेत.

ते क्रमाने काढा आणि नंतर पुन्हा लोड करा, जेणेकरून systemd जुन्या व्याख्या स्मृतीत ठेवणे थांबवेल.

systemctl disable --now acmevpn.service
systemctl show -p FragmentPath -p ExecStart acmevpn.service
sudo rm /etc/systemd/system/acmevpn.service
sudo rm /etc/systemd/system/multi-user.target.wants/acmevpn.service
systemctl daemon-reload

जागा गृहीत धरण्याऐवजी FragmentPath वाचा, कारण विक्रेत्याने /etc ऐवजी /usr/lib/systemd/system किंवा /lib/systemd/system मध्ये लिहिले असू शकते. अपेक्षित प्रत काढल्यास प्रभावी प्रत चालू राहते, आणि पुढील पुनर्लोडपर्यंत दुरुस्ती यशस्वी वाटते. पुनर्लोड संपल्यावर unit फाइल्स पुन्हा सूचीबद्ध करा आणि नाव आता दिसत नाही याची खात्री करा.

ही रचना जिवंत ठेवणारी बाइनरी शोधा

सक्षम unit पॅकेज डेटाबेस काहीही मानो, डेमन सुरू करतच राहतो. ती प्रक्रिया बोगदा परत आणू शकते, मार्ग पुन्हा जोडू शकते किंवा kill-switch नियम पुनर्संचयित करू शकते, आणि रचना तपासेपर्यंत वर्तन अलौकिक वाटते. ExecStart मार्ग अनुसरा आणि बाइनरी अजूनही तिथे आहे का पहा, कारण /opt खाली राहिलेली एक्झिक्युटेबल फाइल ही या रचनेला लागणारी सगळी गोष्ट आहे. unit काढल्याने नियोजित सुरुवात थांबते; ते प्रोग्राम काढत नाही.

स्थिती डिरेक्टरींनाही तितक्याच काळजीने वागवा. खाते टोकन, तयार केलेली प्रोफाइल्स आणि कॅशे केलेल्या सर्व्हर याद्या /var/lib खाली किंवा होम डिरेक्टरीत राहतात, आणि ती ओळखपत्रे आहेत, फेकून देण्यासारखा कॅशे नाही. सेवा थांबल्यावर ती जाणूनबुजून काढा आणि काय घेतले ते नोंदवा.

sudo ls -l /opt/acmevpn /usr/local/bin/acmevpn
sudo find /var/lib -maxdepth 2 -iname "*acme*"
systemctl is-enabled acmevpn.service

बूटचा एक मालक निवडा आणि तपासा

तीन उमेदवार बूटवर दावा करू शकतात, आणि तिन्ही बसवल्यास दुहेरी सुरक्षेऐवजी शर्यत होते. डेस्कटॉप ऑटोस्टार्ट फाइल कोणी साइन इन केल्यावरच चालते, systemd unit लवकर चालतो पण स्क्रीनशिवाय चालणारा क्लायंट लागतो, आणि cron @reboot नोंद नेटवर्क क्लायंटसाठी चुकीचे असू शकणाऱ्या वेळापत्रकावर चालते. विक्रेत्याची CLI जास्तीत जास्त सर्व्हर आर्ग्युमेंट मागू शकते, कारण बूटवर पुढे चालू ठेवण्यासाठी मागील सत्र नसते. क्लायंट कसा प्रमाणीकरण करतो याला जुळणारा उमेदवार निवडा आणि बाकीचे सोडा.

मशीन रीबूट करून आणि तीन स्वतंत्र तथ्ये पाहून तपासा: unit ची स्थिती, प्रक्रियांची यादी, आणि तुम्ही पडताळू शकता अशा एखाद्याशी नवीन जोडणी. कीरिंग किंवा परस्परसंवादी लॉगिन लागणारा क्लायंट योग्य unit फाइल असूनही बूटवर अपयशी ठरतो, आणि फक्त सेवा स्थितीऐवजी journal वाचल्यास ते सांगते.

एकतर क्लायंटला विचारण्याशिवाय चालणारे ओळखपत्र द्या, किंवा साइन इनला तो सुरू करा. दोन्ही समर्थनीय आहेत, आणि दोन्ही एकत्र केल्यावरच एका बोगद्याला त्यासाठी भांडणारे दोन मालक मिळतात.

पुढील purge काय अपेक्षित धरावे ते लिहा

कोणत्याही हाताने काढल्यानंतर दोन तथ्ये नोंदवा: कोणत्या इन्स्टॉलरने ही रचना तयार केली, आणि आता कोणता मालक ती सुरू करतो. ती नोंद पुढील purge ला आश्चर्यातून तपासणी यादीतील एक बिंदू बनवते, आणि काम करणाऱ्या व्यक्तीपेक्षा जास्त काळ टिकते.

ती वैयक्तिक डिरेक्टरीत नाही तर सेवा संरचनेजवळ ठेवा आणि तारीख घाला, कारण विक्रेत्याचे अपडेट तुम्ही काढलेला unit पुनर्संचयित करू शकते. दर काही महिन्यांनी systemctl list-unit-files त्या नोंदीशी तुलना केल्यास दुरुस्ती अजून स्वस्त असतानाच पुनर्संचयन सापडते.

संबंधित लेख