Àṣìṣe check_hostname pip lẹ́yìn aṣojú: pip tàbí ọ̀nà abẹ́lẹ̀?
Àwọn ìkùnà méjì ọ̀tọ̀ọ̀tọ̀ ń tẹ́ àṣìṣe orúkọ agbàlejò kan náà ti pip lẹ́yìn aṣojú. Ya alátìlẹ́yìn àtijọ́ sọ́tọ̀ kúrò lọ́wọ́ aṣojú tí ń tún fi ọwọ́ sí ìrìnàjò, kí o sì tún kẹ̀kẹ́ tó yẹ ṣe.
Àwọn ìkùnà méjì ọ̀tọ̀ọ̀tọ̀ ń tẹ́ ìtọ́pa pip kan náà, àti àtúnṣe tí ó bá ọ̀kan mu ń mú èkejì burú sí i. Alátìlẹ́yìn tí ó ti dagba jù láti dárúkọ agbàlejò tí a gbé kọjá nínú ọ̀nà abẹ́lẹ̀ nílò ìgbéga. Aṣojú tí ń tún fi ọwọ́ sí ìrìnàjò nílò ẹ̀rí ìpilẹ̀ tí a gbẹ́kẹ̀lé, kì í ṣe ìsọ̀kalẹ̀ ẹ̀dá. Pinnu èwo nínú méjèèjì ni o ní kí o tó ṣàtúnṣe àyípadà aṣojú, nítorí pé àwọn ọ̀nà ń lọ sí ìtẹ̀síwájú tí ó yàtọ̀.
Ka àwọn férémù ìkẹyìn kí o tó fi ọwọ́ kan àwọn ètò
Ibi tí ìtọ́pa parí ń sọ fún ọ pé kẹ̀kẹ́ wo ni ó jáwọ́. Tí àwọn férémù ìparí bá wà nínú kóòdù TLS ti urllib3 tí ó wá pẹ̀lú pip tí ọ̀rọ̀ náà sì ń ṣàròyé nípa orúkọ agbàlejò, kẹ̀kẹ́ alátìlẹ́yìn kò lè parí ìgbésẹ̀ ìjẹ́rìí, àti pé ìyẹn jẹ́ ìṣòro ẹ̀dá ní ọ̀pọ̀ ìgbà ju ìṣòro ẹ̀rí lọ. Tí ọ̀rọ̀ náà bá dípò bẹ́ẹ̀ jábọ̀ ìsopọ̀ tí a kọ̀, orúkọ aṣojú tí a kò yanjú tàbí àṣìṣe HTTP 407, ìparí ọ̀nà abẹ́lẹ̀ ni ó jẹ̀bi, kò sì sí ìgbéga tí yóò yí i padà.
Mú ẹ̀dá pip àti àwọn àyípadà aṣojú nínú shell kan náà tí ó kùnà. Shell tí a ṣí kí ọ̀nà abẹ́lẹ̀ tó gòkè ń gbé àwọn iye tí ó yàtọ̀ sí èyí tí a ṣí lẹ́yìn, ìyàtọ̀ láàárín wọn sì ni ìwádìí gbogbo ní ọ̀pọ̀ ìgbà.
python3 -m pip --version
env | grep -i -E 'proxy|no_proxy'
Nígbà tí alátìlẹ́yìn bá dàgbà ju ọ̀nà abẹ́lẹ̀ lọ
Àwọn ìtújáde pip àtijọ́ gbé àkójọ HTTPS kan tí ó ń pàdánù orúkọ agbàlejò ìdí nígbà tí a bá fi ọ̀nà abẹ́lẹ̀ wé sọ́kẹ́ẹ̀tì. Ìfiránṣẹ́ check_hostname ni ohun tí àkójọ yẹn ń jáde nígbà tí ó dé ìjẹ́rìí láìsí orúkọ láti fi wé. Ìgbéga ń mú àṣìṣe kúrò nítorí pé alátìlẹ́yìn tuntun ń pa orúkọ mọ́ káàkiri ìfọwọ́sọ̀wọ́, àti pé àyípadà náà pọ̀ tó láti gbìyànjú kọ́kọ́ nígbàkigbà tí àwọn férémù ìparí bá tọ́ka sí kóòdù TLS tí ó wá pẹ̀lú.
Tí a kò bá lè dé àtọ́ka láti ẹ̀rọ tí ó kùnà, gba wheel ìsinsìnyí lórí agbàlejò tí ó lè ṣe é kí o sì fi sori ẹrọ láti fáìlì. Lo orúkọ fáìlì tí o gbà gan-an, kì í ṣe ẹ̀dá tí a dàkọ láti àkọsílẹ̀ blog.
python3 -m pip install --upgrade pip
python3 -m pip install ./pip-24.2-py3-none-any.whl
Nígbà tí aṣojú bá tún fi ọwọ́ sí ìrìnàjò
Aṣojú tí ó parí TLS tí ó sì tún gbé àwọn ẹ̀rí jáde lábẹ́ ìpilẹ̀ ilé-iṣẹ́ kan ń dá àṣìṣe mìíràn: certificate verify failed, kì í ṣe ẹjọ́ orúkọ agbàlejò. Ìyàtọ̀ yẹn ni àmì, nítorí pé alátìlẹ́yìn dé ọ̀dọ̀ sáfà kan lẹ́yìn náà ó kọ ìdánimọ̀ tí a fi hàn án. Àtúnṣe ni láti gbẹ́kẹ̀lé ìpilẹ̀ yẹn ní gbangba, yálà fún àṣẹ kan tàbí nípasẹ̀ àyípadà PIP_CERT, kí alátìlẹ́yìn lè kọ́ ẹ̀wọ̀n sí ohun tí aṣojú ń gbé kalẹ̀. Fífi ìpilẹ̀ náà kún ilé ìgbẹ́kẹ̀lé ẹ̀rọ náà tún ń ṣiṣẹ́, ṣùgbọ́n ó ń yí ìgbẹ́kẹ̀lé padà fún gbogbo ètò lórí ẹ̀rọ náà, ìyẹn sì jẹ́ ìpinnu tí ó tóbi ju àtúnṣe ìfiṣe kalẹ̀ àpò kan lọ.
Pa --trusted-host mọ́ gẹ́gẹ́ bí ìwádìí, kì í ṣe ipò tí ó dúró. Ó ń pa ìjẹ́rìí tí o ń gbìyànjú láti pa mọ́, nítorí náà ẹ̀rí tí ó ṣàṣìṣe gan-an máa ń dàbí aláìlera lẹ́yìn náà. Tí o bá lò ó láti fi àpò kan sori ẹrọ, yọ ọ́ kúrò kí o sì tún ẹ̀wọ̀n náà ṣe kí ìtújáde tó ń bọ̀ tó dé.
Kóòdù Python rẹ fúnra rẹ̀ ń ṣàìkọ́ ìṣètò pip. Ìpè requests nílò kí a gbé aṣojú àti àkójọ náà sí ibi tí ìpàdé yẹn ti lè rí wọn, ìdí nìyẹn tí blọ́ọ̀kù tó wà nísàlẹ̀ fi ń gbé àwọn méjèèjì sórí ohun ìpàdé.
pip install --cert /usr/local/share/ca-certificates/corp-root.crt requests
export PIP_CERT=/usr/local/share/ca-certificates/corp-root.crt
s = requests.Session()
s.proxies = {"https": "http://10.20.30.40:8080"}
s.verify = "/usr/local/share/ca-certificates/corp-root.crt"
s.get("https://pypi.org/simple/", timeout=15)
Nígbà tí ìparí tàbí ibùdó bá ṣàṣìṣe
Alátìlẹ́yìn ọ̀nà abẹ́lẹ̀ sábà máa ń tún kọ aṣojú ẹ̀rọ nígbà tí ó ń sopọ̀, èyí tí ó lè fi pip sí ibi agbàlejò tí kò dáhùn rárá ní ibùdó yẹn. Dán ìparí wò pẹ̀lú alátìlẹ́yìn tí kì í ṣe pip kí o tó yí ètò pip kankan padà. Tí curl bá kùnà pẹ̀lú àríyanjíí aṣojú kan náà, àṣìṣe wà lókè pip, kò sì sí ìṣètò kankan nínú pip tí yóò ràn ọ́ lọ́wọ́.
Àmì àṣẹ àti àwọn àyípadà àyíká ń sọ ohun kan náà sí àwọn ìwọ̀n ọ̀tọ̀ọ̀tọ̀: àmì náà wà fún ìpè kan, àwọn àyípadà fún gbogbo ìlànà tí a bẹ̀rẹ̀ lẹ́yìn náà. Fi NO_PROXY kún fún àtọ́ka inú, kí ìrìnàjò àpò àdáni lè forí kọjá ọ̀nà yíyípo nípasẹ̀ ọ̀nà abẹ́lẹ̀.
curl -x http://proxy.corp.internal:8080 --head https://pypi.org/simple/
pip install --proxy http://proxy.corp.internal:8080 requests
Pa ètò mọ́ kí o sì fi hàn pé ọ̀nà ń ṣiṣẹ́
Fi aṣojú pamọ́ nínú ìṣètò pip fúnra rẹ̀ nígbà tí ó gbọ́dọ̀ gbé ìgbésí ayé ju shell lọ́wọ́lọ́wọ́ lọ, lẹ́yìn náà ka ohun tí pip yóò lò gan-an. Àbájáde debug ń dárúkọ fáìlì àti àyípadà tí ó wà lẹ́yìn iye kọ̀ọ̀kan, èyí tí ó ń parí àríyànjiyàn nípa ipò ní yára ju kíka ìwé ìtọ́kasí lọ.
Ìjẹ́rìí ń lo alátìlẹ́yìn méjì lọ́nà àfẹ́mọ́. Ìbéèrè láti ilé-ìkàwé àkọ́kọ́ ń fi ọ̀nà àti ẹ̀wọ̀n ìgbẹ́kẹ̀lé hàn, nígbà tí gbígbà ẹ̀dá wá ń fi hàn pé ìṣètò pip fúnra rẹ̀ bá wọn mu. Nígbà tí èkíní bá ṣàṣeyọrí tí èkejì sì kùnà, ìyàtọ̀ wà nínú pip kì í ṣe nínú àwọn nẹ́tíwọ́kì.
pip config set global.proxy http://proxy.corp.internal:8080
pip config debug
python3 -c "import urllib.request as r; print(r.urlopen('https://pypi.org/simple/').status)"
pip download --no-deps -d /tmp/wheelcheck requests
| What you see | First command | Repair |
|---|---|---|
| hostname message inside vendored TLS frames | python3 -m pip --version | upgrade the client |
| certificate verify failed after the tunnel | curl -x http://proxy.corp.internal:8080 --head https://pypi.org/simple/ | trust the corporate root |
| connection refused or HTTP 407 | env | grep -i -E 'proxy|no_proxy' | correct host, port or credentials |