এটি লিনাক্সের জন্য উইন্ডোজ-সাবসিস্টেমের নির্দিষ্ট তথ্যের সাথে অন্যান্য উত্তরগুলির পরিপূরক হয়। দ্যগৃহীত উত্তর সঠিক হয়: আপনার DISPLAY
পরিবর্তনশীল ভুল কনফিগার করা হয়েছে। এটি ঠিক পরিষ্কার নয়, তবে কেন কেবল উত্তরটি থেকেই কেস, তাই আমি এই উত্তরটি দিয়ে প্রতিকার করছি।
আপনি যদি লিনাক্সের জন্য সাইগউইন, বা উইন্ডোজ-সাবসিস্টেম চালাচ্ছেন এবং আপনার এক্স 11 সার্ভারটি উইন্ডোজ ভিত্তিক (যেমন VcXsrv
, বাXMing
) হয় তবে আপনার এক্স 11 সার্ভারটি টিসিপি পোর্টে (যেমন 127.0.0.1
টিসিপি পোর্টগুলিতে 6000-6010
) শুনছেন এমনটি বেশি হয় likely ডিফল্ট ইউনিক্স ডোমেন সকেট ( /tmp/.X11-unix/X0
)। ইউনিক্স সকেটগুলি এই মুহুর্তে উইন্ডোজটিতে এমনকি ডাব্লুএসএল-এর মধ্যেও ভাল সমর্থনযোগ্য নয়। লিনাক্সের মতো পরিবেশে প্রোগ্রাম এবং উইন্ডো হোস্টে সরাসরি চলমান প্রোগ্রামগুলির মধ্যে যোগাযোগ করা সাধারণত আইপি সকেটের চেয়ে সহজ।
আপনি যখন স্থানীয়ভাবে গ্রাফিকাল অ্যাপ্লিকেশনগুলি চালনা করেন (যেমন আপনার হোস্টের সাইগউইন বা ডাব্লুএসএল পরিবেশ থেকে) এবং আপনার DISPLAY
ভেরিয়েবলটি ডিফল্টতে সেট করা থাকে (যেমন,DISPLAY=:0.0
) তে , অ্যাপ্লিকেশনগুলি প্রথমে ইউনিক্স সকেটের মাধ্যমে এক্স সার্ভারের সাথে সংযোগ স্থাপনের চেষ্টা করবে /tmp/.X11-unix/X0
। এটি ব্যর্থ হবে, তবে বেশিরভাগ অ্যাপ্লিকেশনগুলি তখন একটি টিসিপি সংযোগে ফ্যালব্যাক হয়ে যায় localhost
, যা আপনার এক্স সার্ভারটি ডিফল্টর সাথে কনফিগার করা আছে বলে ধরে নেওয়া যায় server
আপনি নিশ্চিত করে নিশ্চিত করতে পারেন যে এটি ঘটছে connect()
আপনার গ্রাফিকাল অ্যাপ্লিকেশনটির কোনও রান থেকে স্ট্রেস লগগুলিতে কলগুলি সন্ধান । এগুলি সাধারণত অ্যাপ্লিকেশনটির মূল উইন্ডোটি প্রদর্শিত হওয়ার আগেই ঘটবে।
Ssh দূরবর্তী দিক থেকে কোনও সংযোগ পুনর্নির্দেশের সময় সেই ফলব্যাক আচরণটি ঘটবে না, সুতরাং আপনি সেই ত্রুটিটি পেয়ে যাচ্ছেন। sshd
প্রকৃতপক্ষে সংযোগটি স্থানীয় দিকে ফরোয়ার্ড করছে, তবে ইউএস সকেটের উপর দিয়ে সার্ভারে পৌঁছাতে ব্যর্থ হওয়ায় এসএসএস ক্লায়েন্টের স্থানীয় সংযোগটি শেষ হয়ে গেছে। আপনি তখন ENOENT
ত্রুটি পেয়ে যাচ্ছেন।
এই ধরনের ক্ষেত্রে, DISPLAY
সিন্টেক্সের পরিবর্তে টিসিপি সিনট্যাক্স ব্যবহার করতে আপনার পরিবর্তনশীল পরিবর্তন করা :0.0
সমস্যার সমাধান করতে পারে:
DISPLAY=127.0.0.1:0 ssh remote some-gui-application
উল্লিখিত অন্যান্য উত্তরের মতো আপনিও নিজের শেল প্রম্পট থেকে ইন্টারেক্টিভভাবে সেই পরিবর্তনশীলটি রফতানি করতে পারেন:
$ export DISPLAY=127.0.0.1:0
...
$ ssh remote some-gui-application
আপনার লগইন শেল প্রোফাইল ইনিশিয়ালাইজেশন স্ক্রিপ্টে (যেমন ~/.bash_profile
) লাইনটি যুক্ত করে আপনি এই সেটিংটি আরও স্থায়ীভাবে সঞ্চয় করতে পারেন ।
দ্রষ্টব্য: কিছু শেলের লগইন এবং নন-লগইন সেশনের জন্য আলাদা সূচনা স্ক্রিপ্ট থাকে। উদাহরণস্বরূপ, বাশের সাহায্যে আপনি সেই লাইনটি লগইন-অন স্ক্রিপ্টে লিখতে পারেন ~/.bashrc
, পরিবর্তে ~/.bash_profile
। যদি আপনি তা করেন তবে ssh দ্বারা সেট করা কোনও কাস্টম মান ওভাররাইড না করার বিষয়ে সতর্ক হন। আপনি যদি প্রথমে ssh এর মাধ্যমে হোস্টে প্রত্যাশা করছিলেন এবং তারপরে অন্য কোনও হোস্টের কাছে প্রত্যাশী হন (তবে এটি আপনার এক্স 11 ফরোয়ার্ডকে বাসা বেঁধে দিবে) তবে এটিই ঘটবে।
strace -fo /tmp/trace ssh....
এটি ইউনিক্স ডোমেন সকেটের সাথে সংযোগ স্থাপনের চেষ্টা করে কিনা তা পরীক্ষা করে ব্যবহার করব ।