Homebrew OpenVPN ਬਾਈਨਰੀ ਨੂੰ PATH ਵਿੱਚ ਨਹੀਂ, sbin ਵਿੱਚ ਰੱਖਦਾ ਹੈ
ਫਾਰਮੂਲਾ OpenVPN ਡੈਮਨ ਨੂੰ sbin ਹੇਠ ਇੰਸਟਾਲ ਕਰਦਾ ਹੈ, ਜੋ ਡਿਫਾਲਟ macOS PATH ਵਿੱਚ ਸ਼ਾਮਲ ਨਹੀਂ ਹੁੰਦਾ। ਪ੍ਰੀਫਿਕਸ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ ਅਤੇ ਫਿਰ ਇੱਕ ਹੀ ਫਾਈਲ ਵਿੱਚ ਹੱਲ ਠੀਕ ਕਰੋ।
ਇੰਸਟਾਲ ਪੂਰਾ ਹੁੰਦਾ ਹੈ, brew ਕਹਿੰਦਾ ਹੈ ਕਿ openvpn ਉੱਥੇ ਹੈ, ਅਤੇ ਸ਼ੈੱਲ command not found ਦਾ ਜਵਾਬ ਦਿੰਦਾ ਹੈ। ਬਾਈਨਰੀ ਮੌਜੂਦ ਹੈ, ਇਹ ਸਿਰਫ਼ ਉਸ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਬੈਠੀ ਹੈ ਜਿਸ ਬਾਰੇ ਸ਼ੈੱਲ ਨੂੰ ਕਦੇ ਦੱਸਿਆ ਨਹੀਂ ਗਿਆ। Homebrew ਡੈਮਨ-ਸ਼ੈਲੀ ਦੀਆਂ ਬਾਈਨਰੀਆਂ ਨੂੰ ਪ੍ਰੀਫਿਕਸ ਦੀ sbin ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਲਿੰਕ ਕਰਦਾ ਹੈ, ਅਤੇ ਡਿਫਾਲਟ macOS PATH ਆਮ ਤੌਰ ’ਤੇ bin ਡਾਇਰੈਕਟਰੀ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ, sbin ਨਹੀਂ। ਕੁਝ ਵੀ ਟੁੱਟਿਆ ਨਹੀਂ ਹੈ, ਅਤੇ ਕੋਈ ਵੀ ਮੁੜ-ਇੰਸਟਾਲ ਇਸ ਨੂੰ ਨਹੀਂ ਬਦਲੇਗਾ।
ਕੋਈ ਵੀ ਸ਼ੈੱਲ ਫਾਈਲ ਸੋਧਣ ਤੋਂ ਪਹਿਲਾਂ ਚਾਰ ਜਾਂਚਾਂ ਇਸ ਪ੍ਰਕਿਰਿਆ ਦੀ ਪੁਸ਼ਟੀ ਕਰਦੀਆਂ ਹਨ।
ਫਾਰਮੂਲਾ ਅਸਲ ਵਿੱਚ ਕੀ ਇੰਸਟਾਲ ਕਰਦਾ ਹੈ
openvpn ਫਾਰਮੂਲਾ ਕਮਾਂਡ-ਲਾਈਨ ਡੈਮਨ ਬਣਾਉਂਦਾ ਹੈ, ਇਸ ਲਈ ਇਸ ਦੀ ਐਗਜ਼ੀਕਿਊਟੇਬਲ bin ਦੀ ਬਜਾਏ sbin ਹੇਠ ਆਉਂਦੀ ਹੈ। ਫਿਰ Homebrew ਉਸ ਬਾਈਨਰੀ ਨੂੰ ਪ੍ਰੀਫਿਕਸ ਦੀ sbin ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਲਿੰਕ ਕਰਦਾ ਹੈ, ਅਤੇ ਇਸੇ ਲਈ "$(brew --prefix)/sbin/openvpn" --version ਕੰਮ ਕਰਦਾ ਹੈ ਜਦੋਂ ਕਿ ਨੰਗੀ ਕਾਲ ਨਹੀਂ ਕਰਦੀ। ਵਰਜ਼ਨ ਵਾਲੀ Cellar ਡਾਇਰੈਕਟਰੀ ਵੀ ਇੱਕ ਕਾਪੀ ਰੱਖਦੀ ਹੈ, ਅਤੇ ਉਸ ਮਾਰਗ ਨੂੰ ਸਟਾਰਟਅੱਪ ਫਾਈਲ ਵਿੱਚ ਰੱਖਣਾ ਉਹ ਤਰੀਕਾ ਹੈ ਜਿਸ ਨਾਲ ਮਸ਼ੀਨ ਅੱਪਗ੍ਰੇਡ ਤੋਂ ਬਾਅਦ ਵੀ ਪੁਰਾਣੇ ਬਿਲਡ ਨਾਲ ਜੁੜੀ ਰਹਿੰਦੀ ਹੈ।
ਪ੍ਰੀਫਿਕਸ ਸਿਮਲਿੰਕ ਸਥਿਰ ਮਾਰਗ ਹੈ। Cellar ਮਾਰਗ ਅੰਦਰ ਵਰਜ਼ਨ ਨੰਬਰ ਵਾਲਾ ਲਾਗੂ ਕਰਨ ਦਾ ਵੇਰਵਾ ਹੈ।
ਫਾਈਲਸਿਸਟਮ ਨੂੰ ਨਹੀਂ, Homebrew ਨੂੰ ਪੁੱਛੋ
ਪੈਕੇਜ ਮੈਨੇਜਰ ਤੋਂ ਸ਼ੁਰੂ ਕਰੋ, ਕਿਉਂਕਿ ਇਹ ਜਾਣਦਾ ਹੈ ਕਿ ਕਿਹੜਾ ਇੰਸਟਾਲ ਫਾਰਮੂਲੇ ਦਾ ਮਾਲਕ ਹੈ: command -v brew, brew --prefix, brew list --versions openvpn, brew --prefix openvpn। ਜੇ ਆਖਰੀ ਮਾਰਗ ਪ੍ਰਿੰਟ ਕਰਦਾ ਹੈ, ਤਾਂ ਫਾਰਮੂਲਾ ਮੌਜੂਦ ਹੈ ਅਤੇ ਸਵਾਲ ਸਿਰਫ਼ ਹੱਲ ਦਾ ਹੈ। ਜੇ ਇਹ ਕੁਝ ਵੀ ਪ੍ਰਿੰਟ ਨਹੀਂ ਕਰਦਾ, ਤਾਂ ਸ਼ੈੱਲ ਕਦੇ ਇੰਸਟਾਲ ਨਾ ਹੋਏ ਪੈਕੇਜ ਨੂੰ ਗਲਤ ਥਾਂ ’ਤੇ ਲੱਭ ਰਿਹਾ ਹੈ, ਅਤੇ ਇਹ ਵੱਖਰੇ ਹੱਲ ਵਾਲੀ ਵੱਖਰੀ ਸਮੱਸਿਆ ਹੈ।
ਇੱਕ ਹੀ ਮਸ਼ੀਨ ’ਤੇ ਦੋ Homebrew ਇੰਸਟਾਲ ਹੋਣਾ ਹੀ ਉਹ ਥਾਂ ਹੈ ਜਿੱਥੇ ਇਹ ਸਭ ਤੋਂ ਵੱਧ ਮਾਇਨੇ ਰੱਖਦਾ ਹੈ: ਜਵਾਬ ਦੇਣ ਵਾਲਾ brew ਲਾਜ਼ਮੀ ਤੌਰ ’ਤੇ ਇੰਸਟਾਲ ਕਰਨ ਵਾਲਾ brew ਨਹੀਂ।
ਸ਼ੈੱਲ sbin ਕਿਉਂ ਨਹੀਂ ਦੇਖ ਸਕਦਾ
ਲੌਗਇਨ ਸ਼ੈੱਲ ਸਿਸਟਮ ਡਿਫਾਲਟ ਅਤੇ ਤੁਹਾਡੀਆਂ ਸਟਾਰਟਅੱਪ ਫਾਈਲਾਂ ਵੱਲੋਂ ਜੋੜੇ ਗਏ ਸਭ ਤੋਂ PATH ਬਣਾਉਂਦਾ ਹੈ। Homebrew bin ਆਮ ਤੌਰ ’ਤੇ ਜੋੜਿਆ ਜਾਂਦਾ ਹੈ ਅਤੇ Homebrew sbin ਆਮ ਤੌਰ ’ਤੇ ਨਹੀਂ, ਇਸ ਲਈ ਡੈਮਨ ਤੋਂ ਬਿਨਾ ਹਰ ਕਮਾਂਡ ਕੰਮ ਕਰਦੀ ਹੈ। command -v openvpn ਕੁਝ ਨਹੀਂ ਦਿੰਦਾ ਜਦੋਂ ਕਿ ਪ੍ਰੀਫਿਕਸ ਵਾਲਾ ਮਾਰਗ ਵਰਜ਼ਨ ਦਿੰਦਾ ਹੈ, ਇਹੀ ਦੋ ਕਮਾਂਡਾਂ ਵਿੱਚ ਪੂਰਾ ਨਿਦਾਨ ਹੈ। ਪੁਸ਼ਟੀ ਕਰੋ ਕਿ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਸੱਚਮੁੱਚ ਲਿੰਕ ਹੈ ls -l "$(brew --prefix)/sbin/openvpn" ਨਾਲ।
ਗੁੰਮ ਲਿੰਕ ਗੁੰਮ PATH ਐਂਟਰੀ ਤੋਂ ਵੱਖਰੀ ਖਰਾਬੀ ਹੈ, ਅਤੇ ਉਨ੍ਹਾਂ ਵਿੱਚੋਂ ਸਿਰਫ਼ ਇੱਕ ਹੀ ਸ਼ੈੱਲ ਫਾਈਲ ਸੋਧ ਕੇ ਠੀਕ ਹੁੰਦਾ ਹੈ।
ਮਾਰਗ ਨੂੰ ਇੱਕ ਵਾਰ, ਇੱਕ ਥਾਂ ’ਤੇ ਠੀਕ ਕਰੋ
ਮੌਜੂਦਾ ਸ਼ੈੱਲ ਵਿੱਚ ਤੇਜ਼ ਜਾਂਚ ਲਈ eval "$(brew shellenv)" ਇੰਸਟਾਲ ਚਰ ਸੈੱਟ ਕਰਦਾ ਹੈ ਅਤੇ ਦੋਵੇਂ ਡਾਇਰੈਕਟਰੀਆਂ ਅੱਗੇ ਰੱਖਦਾ ਹੈ। ਪੱਕੇ ਪ੍ਰਬੰਧ ਲਈ, shellenv ਲਾਈਨ ਨੂੰ ਉਸ ਇੱਕਲੌਤੀ ਸਟਾਰਟਅੱਪ ਫਾਈਲ ਵਿੱਚ ਰੱਖੋ ਜੋ ਤੁਹਾਡਾ ਸ਼ੈੱਲ ਤੁਹਾਡੇ ਵਰਤੇ ਲੌਗਇਨ ਮੋਡ ਲਈ ਪੜ੍ਹਦਾ ਹੈ, bash ਅਤੇ zsh ਫਾਈਲਾਂ ਵਿੱਚ ਐਕਸਪੋਰਟ ਖਿਲਾਰਨ ਦੀ ਬਜਾਏ।
ਫਿਰ ਨਵਾਂ ਟਰਮੀਨਲ ਖੋਲ੍ਹੋ ਅਤੇ ਵਰਜ਼ਨ ਪੁੱਛਗਿੱਛ ਦੁਹਰਾਓ, ਕਿਉਂਕਿ ਕੈਸ਼ ਕੀਤਾ ਸ਼ੈੱਲ ਪੁਰਾਣਾ PATH ਹੀ ਰਿਪੋਰਟ ਕਰਦਾ ਰਹਿੰਦਾ ਹੈ।
ਖੋਜ ਨੂੰ ਸੇਵਾ ਤੋਂ ਵੱਖ ਰੱਖੋ
ਬਾਈਨਰੀ ਲੱਭਣਾ VPN ਸੇਵਾ ਚਲਾਉਣਾ ਨਹੀਂ ਹੈ। openvpn ਨੂੰ ਆਪਣੇ ਆਪ ਸ਼ੁਰੂ ਕਰਨਾ ਪ੍ਰੋਫਾਈਲ, ਪ੍ਰਮਾਣ, ਵਿਸ਼ੇਸ਼ ਅਧਿਕਾਰ ਅਤੇ ਜੀਵਨ ਚੱਕਰ ਦੀਆਂ ਲੋੜਾਂ ਜੋੜਦਾ ਹੈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਪੈਕੇਜ ਖੋਜ ਨੇ ਕਦੇ ਨਹੀਂ ਛੋਹਿਆ। Tunnelblick ਆਪਣਾ ਇੰਜਣ ਵੀ ਨਾਲ ਲਿਆਉਂਦਾ ਹੈ, ਇਸ ਲਈ ਹੁਣੇ ਪ੍ਰਿੰਟ ਕੀਤੇ ਵਰਜ਼ਨ ਦਾ ਐਪਲੀਕੇਸ਼ਨ ਵੱਲੋਂ ਵਰਤੇ ਵਰਜ਼ਨ ਨਾਲ ਕੋਈ ਸੰਬੰਧ ਨਾ ਹੋਵੇ।
ਕਿਹੜੀ ਐਗਜ਼ੀਕਿਊਟੇਬਲ ਨੇ ਵਰਜ਼ਨ ਆਉਟਪੁੱਟ ਬਣਾਇਆ, ਦਰਜ ਕਰੋ। ਉਹ ਇੱਕ ਲਾਈਨ ਅਗਲੀ ਵਾਰ ਦੋ ਵਰਜ਼ਨਾਂ ਦੇ ਨਾ ਮਿਲਣ ’ਤੇ ਇੱਕ ਘੰਟਾ ਬਚਾਉਂਦੀ ਹੈ।