Traceback هغه وخت څرګندیږي چې د VPN مدیریت کمانډ پیل شي، او لومړنی غریزه بل Python نصبولو یا د سیستم ډیفالټ بل ځای ته اړولو ته ځغلي۔ هغه غریزه دوو رنټایمونو ته چې د یو بل سره هیڅ تړاو نلري یوځای کوي۔ یو د عملیاتي سیستم او د هغه د بنډل شویو وسایلو دی؛ بل د هغه هر پروژې دی چې ته یې جوړوي۔ لومړی د دویم د رضایت لپاره بدلول هغه لار ده چې یو کارکوونکی ډیسکټاپ خپل د بنډل مدیر له لاسه ورکوي۔

د پرتله کولو وړ خبره د هغه برخې چې واقعاً پاتې راغلې او هغه رنټایم ترمنځ ده چې ته یې د بدلولو حق لري۔ دوی نږدې هېڅکله یو شی نه وي۔

دوه Python پوښتنې چې د یوې په څېر ښکاري

لومړۍ پوښتنه: کوم تفسیروونکي هغه پروګرام چلاوه چې Traceback یې چاپ کړ؟ دویمه: زما پروژه باید کوم تفسیروونکی وکاروي؟ په ټرمینل کې دواړه یو شان ښکاري، ځکه د دواړو ځواب د python3 په ټایپ کولو ورکول کیږي، خو دوی بېلا بېل مالکان، بېلا بېل د نوي کولو لارې او بېلا بېل د اغېز ساحه لري۔

د سیستم وسله هغه تفسیروونکي ته تړلې ده چې د هغې ویشونکې راوړی، او همدارنګه هغو کمپایل شویو ماډلونو ته چې د هغه تفسیروونکي ABI لپاره جوړ شوي۔ پروژه هرهغه چاپیریال ته تړلې ده چې ته ورته جوړوې۔ د سیستم ډیفالټ لېږدول لومړی د ماشین هرې وسیلې لپاره یوځای بدلوي؛ چاپیریال جوړول دویم یوازې د یوې فولډر لپاره بدلوي۔

له دې کارونو یوازې یو په یوه دقیقه کې بېرته کېدای شي۔ هغه لومړی نه دی۔

کومه برخه تېروتنه پیدا کړه

د بل هر څه لوستلو دمخه د Traceback لومړی کرښه او هغه اجرایوي فایل ولوله چې هغه یې پیدا کړی۔ د کمانډ کرښې فرنټنډ، صلاحیت لرونکی خدمت او د API تړنې جلا برخې دي، او یوازې ځینې یې Python دي۔

command -v openvpn3
head -n 1 "$(command -v openvpn3)"
dpkg -S "$(command -v openvpn3)" 2>/dev/null
systemctl status openvpn3-service-client --no-pager

د سکریپټ لومړی کرښه هغه تفسیروونکی نوموي چې کار به یې کړي، او Traceback هماغه تفسیروونکي ته رسېدلی دی۔ د بنډل پوښتنه وایي چې فایل چا لري، چې دا ټاکي څوک یې بدلولی شي۔ د خدمت حالت بشپړ بلې پوښتنې ته ځواب وایي: آیا هغه صلاحیت لرونکی بیکنډ چې واقعاً غونډې پرانیزي روان دی۔

د ماډل وارداتو تېروتنه، د D-Bus فعالولو انکار او رد شوي اسناد درې بېلا بېل پړاوونه دي۔ د وارداتو تېروتنه له دې دمخه چې کومه غونډه وي پېښیږي، نو د VPN هېڅ اندازه تنظیمات به یې سم نه کړي، او کارکوونکی خدمت به هم سم نه کړي۔ پیغام په دې درې پړاوونو کې یو ته ورګډول واقعي لومړی ګام دی۔

د پروژې چاپیریال څه سمولی شي او څه نه شي

د پروژې چاپیریال د پروژې ستونزه حل کوي: هغه دقیق کتابتون نسخې چې یوې اپلیکیشن ته اړتیا وي، له نورو هر څه جلا۔ دا واقعاً ګټور دی، او کله چې پاتې راغلی پروګرام ستا خپل سکریپټ وي، هماغه سمه وسیله ده۔

uv run --python 3.11 app.py
python3 -c 'import openvpn3; print(openvpn3.__file__)'

دویم کمانډ ښیي چې یو ټاکلی تفسیروونکی د تړنو کومه کاپي ویني، او دا ترټولو ژر لار ده چې ورک بنډل له پټ شوي بنډل څخه وپېژنې۔ هغه په هغه تفسیروونکي چلوه چې پاتې راغلی سکریپټ یې کاروي، نه په بل چې ناڅاپه کار کوي۔

هغه څه چې د پروژې چاپیریال یې نه شي کولی، د ویشونکې له خوا بنډل شوی فرنټنډ سمول دي۔ د هغه پروګرام انحصارونه د بنډل مدیر غوره کړي تفسیروونکي لپاره جوړ شوي، او ستا د پروژې په چاپیریال کې یې چلول یا پاتې راځي یا داسې مخلوط جوړوي چې هیڅوک یې ملاتړ نه کوي۔ په هغه کې د چاپیریال متغیر له لارې لارې ننباسل هماغه تېروتنه ده د اضافي ګامونو سره: ته بدل کړل هغه څه چې وسیله یې لوډ کوي، خو هغه څه دې نه بدل کړل چې پر وړاندې یې ازموینه شوې وه۔ هغه بدلون یوازې تر بلې وارداتو پورې سمون ښکاري۔

ولې د سیستم تفسیروونکي بدلول جال دی

د ډیفالټ تفسیروونکي بدلول زړه ښه کوونکي دي ځکه چې د یو کمانډ سره Traceback سمېدونکي ښکاري۔ دا هماغه انګېرنه ماتوي چې په هوسټ کې هر بنډل شوی Python وسیله پر بنسټ ولاړه ده، او نیمګړتیاوې وروسته او په ناتړلو ځایونو کې ښکاري۔

د بدیل غوراوي میکانیزمونه د برابرو تطبیقونو ترمنځ د تلو لپاره جوړ شوي وو، نه د پخوانیو کمپایل شویو ماډلونو لاندې د نوي ژبې نصبولو لپاره۔ کمپایل شوې غځونې د ټاکلي ABI لپاره جوړیږي، نو هغه ماډل چې پرون وارد شو، نن کېدای شي پرته له یوې هم لرې شوې بنډلې لوډ نشي۔

په هغو نصیحتونو کې چې خلک یې مومي د نوم جال هم شته۔ د نسخې پرته python کمانډ د ویشونکو او چاپیریالونو په منځ کې یو نړیوال مانا نلري، او د یوې ټاکلې اصلي نسخې د ثابت مترادف په توګه یې ګڼل هغه سمونونه وړاندې کوي چې یوازې په هغه ماشین کې کار کوي چیرې چې لیکل شوي۔ د بلاګ پوسټ پالیسي مه لوله، د خپل مخکې سیستم پالیسي ولوله۔

جلا د منلو ازموینې

په پای کې دوه ازموینې ځای لري، او یوې ته تېرېدل د بلې په اړه هېڅ نه وایي۔ لومړۍ دا ده چې ملاتړ شوی کلاینټ کمانډ په هغه تفسیروونکي کار کوي چې ورته بنډل شوی و۔ دویمه دا ده چې صلاحیت لرونکی خدمت یوه غونډه جوړوي او ټنل ټرافیک وړي۔

openvpn3 sessions-list
openvpn3-service-client --help 2>/dev/null | head -n 3
ip -4 addr show tun0

کله چې کار کوې، ماشین ته د ننوتلو خپلواکه لار وساته، په ځانګړې توګه که VPN ستا یوازینی اداري لاسرسی وړي۔ په سیستمي تفسیروونکي کې بدلون هماغه ډول سمون دی چې هغه لاسرسی په نیمایي کې اخلي۔

که نیمګړتیا د سیستم وسیلې لپاره ورک ماډل وي، سمون د ملاتړ شوي کاري بهیر له لارې د بنډل عملیات دي۔ که نیمګړتیا ستا په خپله پروژه کې د نسخو شخړه وي، سمون چاپیریال دی۔ د دغو دواړو ترمنځ غوره کول ټوله پرېکړه ده، او هغه د دې له مخې ټاکل کیږي چې کوم پروګرام Traceback چاپ کړ۔

اړوندې مقالې