apt purge noņēma VPN, bet pakalpojums joprojām startē pie ielādes
apt purge dzēš pakotnes failus, nevis unit, ko instalēja piegādātāja skripts. Dzēsiet unit un tā wants saiti, pēc tam izvēlieties vienu ielādes īpašnieku.
apt purge saka, ka pakotne ir prom, un tomēr pie katras palaišanas atkal paceļas tunelis. Žurnāls turpina augt, maršruti atgriežas, un iekārta uzvedas tā, it kā nekas nebūtu noņemts. Piegādātāja instalētājs var rakstīt failus, ko pakotņu pārvaldnieks nekad nav reģistrējis, tāpēc pakotnes noņemšana un produkta noņemšana ir divi dažādi darbi. Tālāk esošais runbook atdala divus ierakstus un apzināti pabeidz noņemšanu.
Divi instalētāji, divi dažādi ieraksti
Debian pakotnes glabā failu sarakstu, un purge dzēš tieši to, ko šis saraksts nosauc, plus pakotnes konfigurāciju. Shell instalētājs vai .run komplekts šādu sarakstu neglabā; tas raksta, kur grib, parasti /opt, /usr/local un /etc/systemd/system. Neviens no šiem ceļiem neparādās nevienas pakotnes failu sarakstā, tāpēc dpkg par tiem ne zina, ne ziņo. Beigās vienā failu sistēmā ir divi instalācijas īpašnieki, un tikai viens no viņiem ved uzskaiti.
Pirms dzēšanas pajautājiet dpkg par konkrēto ceļu. Ceļš, no kura tas atsakās, ir jūsu noņemšanai, un tā pati atbilde pasaka, vai vēlāks atjauninājums to atgriezīs.
dpkg -S /etc/systemd/system/acmevpn.service
systemctl list-unit-files | grep -i acmevpn
Unit un tā wants saite ir atsevišķi faili
Iespējošana ir atsevišķa darbība no instalēšanas. Unit savā [Install] sadaļā deklarē mērķu attiecības, un systemctl enable pārvērš šos paziņojumus simboliskās saitēs katra mērķa .wants/ mapē. Tagad ir divi ceļi: unit fails un saite, kas to ievelk ielādes mērķī. Dzēšot tikai failu, saite nekur nenorāda, kas pie ielādes rada sūdzību; dzēšot tikai saiti, unit paliek palaižams pēc nosaukuma. Abiem jāiet prom.
Noņemiet tos secībā un pēc tam pārlādējiet, lai systemd pārstātu turēt vecās definīcijas atmiņā.
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
Lasiet FragmentPath, nevis pieņemiet atrašanās vietu, jo piegādātājs var būt rakstījis /usr/lib/systemd/system vai /lib/systemd/system, nevis /etc. Dzēšot gaidīto kopiju, efektīvā turpina darboties, un labojums izskatās veiksmīgs līdz nākamajai pārlādei. Kad pārlāde beigusies, vēlreiz uzskaitiet unit failus un apstipriniet, ka nosaukums vairs neparādās.
Atrodiet bināro failu, kas uztur šo izkārtojumu dzīvu
Iespējots unit turpina startēt dēmonu neatkarīgi no tā, ko domā pakotņu datubāze. Šis process var atgriezt tuneli, atkal pievienot maršrutus vai atjaunot kill-switch noteikumu, un uzvedība šķiet pārdabiska, līdz apskatāt izkārtojumu. Sekojiet ExecStart ceļam un pārbaudiet, vai binārais fails vēl ir tur, jo /opt apakšā atstāts izpildfails ir viss, kas izkārtojumam vajadzīgs. Unit dzēšana aptur plānoto startu; tā nedzēš programmu.
Ar stāvokļa mapēm izturieties tikpat rūpīgi. Konta pilnvaras, ģenerētie profili un kešatmiņā saglabātie serveru saraksti dzīvo zem /var/lib vai mājas mapē, un tie ir akreditācijas dati, nevis izmetama kešatmiņa. Noņemiet tos pēc pakalpojuma apturēšanas, apzināti, un pierakstiet, ko paņēmāt.
sudo ls -l /opt/acmevpn /usr/local/bin/acmevpn
sudo find /var/lib -maxdepth 2 -iname "*acme*"
systemctl is-enabled acmevpn.service
Izvēlieties vienu ielādes īpašnieku un pārbaudiet to
Trīs kandidāti var pieprasīt ielādi, un visu trīs instalēšana rada sacensību, nevis dubultu drošību. Darbvirsmas automātiskās palaišanas fails darbojas tikai pēc tam, kad kāds ir pieteicies, systemd unit darbojas agrāk, bet prasa klientu, kas strādā bez ekrāna, un cron @reboot ieraksts nostrādā pēc grafika, kas tīkla klientam var būt nepareizs. Piegādātāja CLI var papildus prasīt servera argumentu, jo pie ielādes nav iepriekšējas sesijas, ko turpināt. Izvēlieties kandidātu, kas atbilst tam, kā klients autentificējas, un pārējos atmetiet.
Pārbaudiet to, pārstartējot iekārtu un aplūkojot trīs neatkarīgus faktus: unit stāvokli, procesu sarakstu un jaunu savienojumu ar kaut ko, ko varat pārbaudīt. Klients, kam vajag atslēgu saiņu vai interaktīvu pieteikšanos, pie ielādes neizdodas pat ar pareizu unit failu, un žurnāls to pasaka, ja to lasāt, nevis tikai pakalpojuma statusu.
Vai nu dodiet klientam akreditācijas datus, kas darbojas bez jautājuma, vai startējiet to pieteikšanās laikā. Abi ir attaisnojami, un to apvienošana ir veids, kā vienam tunelim rodas divi īpašnieki, kas par to strīdas.
Pierakstiet, ko nākamajai purge vajadzētu gaidīt
Pēc katras manuālas noņemšanas pierakstiet divus faktus: kurš instalētājs izveidoja izkārtojumu un kurš īpašnieks to tagad startē. Šī piezīme pārvērš nākamo purge no pārsteiguma par kontrolsaraksta punktu, un tā dzīvo ilgāk nekā cilvēks, kurš darbu veica.
Glabājiet to blakus pakalpojuma konfigurācijai, nevis personīgā mapē, un datējiet to, jo piegādātāja atjauninājums var atjaunot jūsu dzēsto unit. Salīdzinot systemctl list-unit-files ar šo piezīmi ik pēc dažiem mēnešiem, atjaunošana tiek noķerta, kamēr labojums vēl ir lēts.