এক্সডিজি_আরটিআইএমআইডিআর কী?


14

আমি কমান্ড লাইন থেকে এভিনিস খোলার চেষ্টা করার সময় এটি আমাকে একটি ত্রুটি দিচ্ছে

neo@Muhammad:~$ sudo evince

No protocol specified

** (evince:4164): WARNING **: Could not open X display
No protocol specified
error: XDG_RUNTIME_DIR not set in the environment.
Cannot parse arguments: Cannot open display:

এই সমস্যাটির কীভাবে সমস্যা সমাধান করবেন?


1
আপনার অপারেটিং সিস্টেম সম্পর্কে আরও বলুন।
ডি কে বোস

উত্তর:


30

প্রথম জিনিসগুলি: এক্সডিজি_আরটিআইএমআইডিআইআর

আপনার প্রথম প্রশ্নের উত্তর দেওয়ার জন্য, "এক্সডিজি_আরটিআইএমআইডিআর কী?" , এটি এমন একটি পরিবেশের পরিবর্তনশীল যা আপনি লগ ইন করার সময় স্বয়ংক্রিয়ভাবে সেট হয়ে যায় any (8)XDG_RUNTIME_DIR দ্বারা সেট করা নোট , সুতরাং এটি আসলে X এর সাথে সম্পর্কিত নয় (প্রোগ্রামগুলি গ্রাফিকভাবে চলমান), যা আপনার মনে হচ্ছে যে সমস্যা।pam_systemd

কীভাবে সমস্যা সমাধান করবেন

আপনার দ্বিতীয় প্রশ্ন, "এই সমস্যাটি কীভাবে সমাধান করবেন?" একটি খুব ভাল এক। এর অর্থ আপনি ঠিক কী কী তা নয় , তবে কীভাবে এটি আপনার নিজের থেকে বের করতে হয় সে সম্পর্কেও আপনি আগ্রহী। শুরু করতে, প্রথমে প্রথম ত্রুটি বার্তাগুলি দেখুন। বিশেষত, অনুসন্ধান করতে No protocol specifiedবা WARNING **: Could not open X display, আপনাকে দেখাতে হবে যে সমস্যাটি এক্স ( দ্য এক্স উইন্ডোয়িং সিস্টেম নামেও পরিচিত ) এর সাথে রয়েছে যা আপনার স্ক্রিনে গ্রাফিকাল প্রোগ্রামগুলি কীভাবে প্রদর্শিত হয়। যা জেনে আপনার মনে সমস্যার সমাধানের অনেক প্রশ্ন উত্থাপন করা উচিত।

এক্স প্রদর্শন

আপনার পরের প্রশ্নটি হতে পারে, এটি "এক্স ডিসপ্লে" কী যা খোলা যায় না? একটি "প্রদর্শন" হ'ল আপনার স্ক্রিনের ঠিকানা। [*] যে কোনও প্রোগ্রাম আপনার স্ক্রিনে লিখতে চায় তার ঠিকানাটি জানতে হবে। আপনি আপনার এক্স ডিসপ্লেটি কী তা DISPLAY পরিবেশের ভেরিয়েবলটি পরীক্ষা করে দেখতে পারেন:

echo $DISPLAY

এবং sudoটাইপ করে আপনি যা দেখতে পাচ্ছেন তা আপনার ডিআইডিএল তা যাচাই করতে পারেন :

sudo -s
echo $DISPLAY
exit

যদি এটি কিছু না দেখায় তবে সমস্যাটি। (নীচে ঠিক দেখুন)।

XAUTHORITY

তবে, যদি সমস্যা না হয় এবং DISPLAYসঠিকভাবে সেট করা থাকে তবে sudo? তাহলে আপনি ভাবতে পারেন, এক্স এর কি এমন কিছু অনুমতি আছে যা অন্য ব্যবহারকারীদের আমার প্রদর্শনীতে লেখা থেকে বাধা দেয়? আপনি যদি ভাবেন যে, আপনি ঠিক বলেছেন, এক্স এর দুটি প্রধান অনুমোদন পদ্ধতি রয়েছে: xauthএবং xhost। বর্তমানে সবচেয়ে বেশি ব্যবহৃত একটি হ'ল xauth(1) যা XAUTHORITYপরিবেশ পরিবর্তনশীল ব্যবহার করে । আবার, আসুন এটি সঠিকভাবে সেট করা আছে কিনা তা পরীক্ষা করে দেখুন sudo:

echo $XAUTHORITY
sudo -s
echo $XAUTHORITY
exit

যদি XAUTHORITYআপনার জন্য আপনার হোম ডিরেক্টরি ডিরেক্টরিতে কোনও ফাইলের দিকে ইঙ্গিত করা হয় তবে আপনি চালানোর সময় এটি ফাঁকা থাকে sudo, তবে সমস্যাটি।

ফিক্স: পরিবেশের পরিবর্তনশীলগুলি সংরক্ষণ করুন ables

তো, ঠিক কী? যদি হয় DISPLAYবা XAUTHORITYপরিবেশের ভেরিয়েবলগুলি সংরক্ষণ করে না পাওয়া যায় তবে sudoআপনি বিকল্পটি ব্যবহার করে পরিবেশ সংরক্ষণ করতে sudo(8) বলতে পারবেন -E:

sudo -E evince

একটি ভাল উপায়: env_keep

আপনি ভালভাবে জিজ্ঞাসা করতে পারেন, অপেক্ষা করুন, যদি -Eসবকিছু যাদুতে কাজ করে, তবে এটি কেন ডিফল্ট নয় sudo? উত্তরটি হ'ল এটি একটি সম্ভাব্য সুরক্ষা বিপত্তি। পরিবেশের ভেরিয়েবলগুলি প্রোগ্রামগুলির কাজ করার পদ্ধতিগুলিকে প্রভাবিত করে এবং আপনি চান না যে সেগুলি সমস্ত ব্যবহারকারীর অ্যাকাউন্ট থেকে রুটে রফতানি করা উচিত। এটি করার "সঠিক" উপায়টি হ'ল (8) ব্যবহার Defaults env_keep += "DISPLAY XAUTHORITY"করে sudoers(5) ফাইলটিতে লাইন যুক্ত করা । আপনি চলমান দ্বারা পরিবেশের ভেরিয়েবল সুডো সংরক্ষণ করে তা পরীক্ষা করতে পারেন:visudo

sudo sudo -V

(হ্যাঁ, আপনি sudoদু'বার টাইপ করুন ) আমি লাইনটি ডিফল্ট sudoers ফাইল ( /etc/sudoers) এ না রাখার পরামর্শ দিচ্ছি , তবে একটি স্থানীয় ফাইলে যা আপনার সিস্টেম আপগ্রেড করার সময় ওভাররাইট হবে না। আপনি এটি যেমন করতে পারেন:

sudo visudo -f /etc/sudoers.d/local 

তবে অপেক্ষা করুন, উপরের কেউ যদি কাজ না করে?

আমি মনে করি এটি মোটামুটি উত্তম উত্তর, তবে আপনি যদি এখনও সমস্যা বোধ করেন তবে আমি অন্য একটি বিষয় প্রস্তাব করব। স্থানীয় হোস্টে (আপনার মেশিনে) নির্দিষ্ট ব্যবহারকারীর অ্যাক্সেস দেওয়ার জন্য আপনি xhost(1) ব্যবহার করতে পারেন ,

xhost si:localuser:root

এই ক্ষেত্রে, আমরা rootব্যবহারকারীর নাম হিসাবে নির্দিষ্ট করছি , যেহেতু এই অ্যাকাউন্টটি যা sudoপ্রোগ্রামগুলি চালায়।


[*] : প্রশ্ন: আমি কেবল একটি পর্দা পেয়েছি, তাই কোনও এক্স ডিসপ্লেতে "ঠিকানা" কেন প্রয়োজন? উত্তর: এক্স কারণ কেবল আপনার মেশিনেই নয়, ইন্টারনেটেও কাজ করতে পারে। সঙ্গে এক্স , এটি আপনার মেশিন যা অন্য ইন্টারনেট হোস্ট এবং অন্যান্য হোস্ট যে আপনার পর্দায় প্রদর্শিত প্রোগ্রাম এ প্রদর্শিত প্রোগ্রাম চালানোর জন্য সহজ (অভিমানী তুমি তাদের অনুমতি দিতে)।


বিস্তৃত উত্তরের জন্য আপনাকে ধন্যবাদ। আমি নিশ্চিত যে প্রতিটি ব্যবহারকারীর জন্য আপনার উত্তরে কমপক্ষে নতুন কিছু আছে। (আমার জন্য: কোনও নির্দিষ্ট ব্যবহারকারীর কাছে এক্সকে কীভাবে অ্যাক্সেস দিতে হবে, যা xhost +সর্বজনীন অ্যাক্সেসের অনুমতি দেওয়ার চেয়ে উত্তম ))
ড্রামফায়ার

3

XDG_RUNTIME_DIRআপনার এক্স উইন্ডোজ প্রসঙ্গে একটি পরিবেশ পরিবর্তনশীল সেট, যাতে প্রোগ্রামগুলি জিনিসগুলি খুঁজে পেতে পারে। আপনি ( neo) গ্রাফিক্স প্রসঙ্গ সেট আপ করেছেন।

evinceহিসাবে চালানোর চেষ্টা করে rootআপনি এমন একটি শর্ত প্রবেশ করেছেন যেখানে কোনও ব্যবহারকারী ( root) অন্য ব্যবহারকারীর ( neo) প্রদর্শনে অ্যাক্সেস করার চেষ্টা করছে । এটি একটি খারাপ জিনিস হিসাবে বিবেচিত হয়।

আপনি যদি স্থির করেন যে কোনও গ্রাফিকাল সম্পাদক হিসাবে চালনা করা উচিত root, পড়ুন man gksudo এবং এর ব্যবহার করুন gksudo


আকর্ষণীয় মন্তব্য। আপনি কি জানবেন তবে আমি কীভাবে এরকম কিছু করতে পারি? journalctl -b -p err | wl-copyএটি রিপোর্ট করে Failed to connect to a Wayland serverযা সংবেদনশীল করে, তবে ব্যবহারকারী পিওভি থেকে বোবা শোনায়।
এমএইচ-সিঙ্কন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.