apt purge VPNди өчүрдү, бирок кызмат жүктөөдө дагы эле башталат
apt purge пакеттин файлдарын өчүрөт, жеткирүүчүнүн скрипти орноткон unitти эмес. unit жана анын wants шилтемесин өчүрүңүз, анан жүктөөнүн бир ээсин тандаңыз.
apt purge пакет кетти дейт, бирок ар бир баштоодо туннель кайра көтөрүлөт. Journal өсө берет, маршруттар кайтат, машина эч нерсе өчүрүлбөгөндөй иштейт. Жеткирүүчүнүн орноткучу пакет менеджери эч качан жазып албаган файлдарды жаза алат, ошондуктан пакетти өчүрүү менен продуктуну өчүрүү эки башка иш. Төмөнкү runbook эки жазууну бөлүп, өчүрүүнү атайын бүтүрөт.
Эки орноткуч, эки башка жазуу
Debian пакеттери файлдардын тизмесин кармайт, purge так ошол тизме атаган нерсени жана пакеттин конфигурациясын өчүрөт. Shell орноткучу же .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 тизмесин ошол жазуу менен салыштыруу калыбына келтирүүнү түзөтүү дагы арзан кезинде кармайт.