apt purge કહે છે કે પેકેજ ગયું છે, અને છતાં દરેક શરૂઆતમાં ટનલ ફરી આવે છે. જર્નલ વધતું રહે છે, રૂટ પાછા આવે છે, અને મશીન એવું વર્તે છે જાણે કંઈ દૂર થયું જ ન હોય. વેન્ડરનું ઇન્સ્ટોલર એવી ફાઇલો લખી શકે છે જે પેકેજ મેનેજરે કદી નોંધી નથી, તેથી પેકેજ દૂર કરવું અને ઉત્પાદન દૂર કરવું બે અલગ કામ છે. નીચેનું રનબુક બે રેકોર્ડ અલગ કરે છે અને દૂર કરવાનું જાણી જોઈને પૂરું કરે છે.

બે ઇન્સ્ટોલર, બે અલગ રેકોર્ડ

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 ફાઇલ હોવા છતાં બૂટ પર નિષ્ફળ જાય છે, અને ફક્ત સેવા સ્થિતિને બદલે જર્નલ વાંચો તો તે એમ કહે છે.

ક્યાં તો ક્લાયન્ટને પ્રોમ્પ્ટ વગર કામ કરતું ઓળખપત્ર આપો, અથવા સાઇન-ઇન પર તેને શરૂ કરો. બંને વાજબી છે, અને બંનેને જોડવાથી જ એક ટનલને બે માલિકો મળે છે જે તેના માટે ઝઘડે છે.

આગલા purge એ શું અપેક્ષા રાખવી તે લખો

કોઈ પણ જાતે દૂર કર્યા પછી બે તથ્ય નોંધો: કયા ઇન્સ્ટોલરે આ ગોઠવણ બનાવી, અને હવે કયો માલિક તેને શરૂ કરે છે. તે નોંધ આગલા purge ને આશ્ચર્યમાંથી ચેકલિસ્ટની એક કલમમાં ફેરવે છે, અને કામ કરનાર વ્યક્તિ કરતાં વધુ જીવે છે.

તેને અંગત ડિરેક્ટરીમાં નહીં પણ સેવાના રૂપરેખાંકન પાસે રાખો અને તારીખ નાખો, કારણ કે વેન્ડર અપડેટ તમે કાઢેલું unit પાછું લાવી શકે છે. દર થોડા મહિને systemctl list-unit-files ને તે નોંધ સાથે સરખાવવાથી પુનઃસ્થાપન ત્યારે જ પકડાય છે જ્યારે સુધારો હજી સસ્તો છે.

સંબંધિત લેખો