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 ਦੀ ਉਸ ਨੋਟ ਨਾਲ ਤੁਲਨਾ ਕਰਨ ਨਾਲ ਬਹਾਲੀ ਉਦੋਂ ਫੜੀ ਜਾਂਦੀ ਹੈ ਜਦੋਂ ਸੁਧਾਰ ਅਜੇ ਸਸਤਾ ਹੈ।

ਸੰਬੰਧਿਤ ਲੇਖ