उबंटू का एक अलग पीएटीएच है जब एक्सआरडीपी सत्र में प्रवेश किया जाता है


9

Noob यहाँ: मैं एक समस्या है, जब मैं SSH के माध्यम से अपने सर्वर का उपयोग, $ PATH सही है

root@ks391320:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

लेकिन जब मैं एक्सआरडीपी सत्र के माध्यम से अपना सर्वर खोलता हूं और टर्मिनल पर जाता हूं तो यह गलत पैटर्न दिखाता है :

root@ks391320:~# echo $PATH
/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin

दोनों का स्क्रीनशॉट: स्क्रीनशॉट

और यह एक समस्या पैदा करता है क्योंकि जब मैं "पैकेज इंस्टॉलर" का उपयोग करके कुछ स्थापित करने की कोशिश करता हूं तो यह इस त्रुटि को दिखाता है (दूसरों के बीच)

dpkg: warning: 'ldconfig' not found in PATH

जवाबों:


7

Ubuntu-18.04 के लिए, /etc/pam.d/xrdp-sesman शुरुआत में निम्नलिखित पंक्तियों को संपादित और दर्ज करें :

session       required   pam_env.so readenv=1 envfile=/etc/environment
session       required   pam_env.so readenv=1 envfile=/etc/default/locale

हां, इसके बिना, xrdp सत्र मेरे में परिभाषित सभी चर गायब थे /etc/environment!
वारबैंक

5

1

सिस्टम-वाइड डिफ़ॉल्ट PATH में परिभाषित किया गया है /etc/environment। पहले, यह सत्यापित करें कि यह एक मान मूल्य पर सेट है। संदर्भ के लिए, यहां मेरा है, जो एक डिफ़ॉल्ट इंस्टॉल के समान है:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

2

यदि /etc/environmentआप समझदार हैं और आप अभी भी समस्याएँ हैं, तो आप डिफ़ॉल्ट पथ को ओवरराइड कर सकते हैं ~/.bashrc। उदाहरण के लिए, मेरे पास मेरे .bashrc में एक निर्देशिका है जो मेरे पथ पर एक निर्देशिका को जोड़ता है यदि और केवल यदि यह मौजूद है और पहले से ही मेरे पथ में नहीं है:

if [ -d "$HOME/bin" ]; then
    if [[ $PATH =~ $HOME/bin ]]; then :
    else export PATH="$HOME/bin:$PATH"
    fi
fi

चूंकि यह आपके स्क्रीनशॉट से प्रकट होता है कि आपने रूट लॉगिन सक्षम किया है, इसलिए रूट का .bashrc, साथ ही सेट करना सुनिश्चित करें। (वैसे, चूंकि उबंटू में रूट डिफ़ॉल्ट रूप से लॉगिन नहीं कर सकता है, यह कॉन्फ़िगरेशन संभवतः कम परीक्षण किया गया है और संभवतः आपकी समस्या से संबंधित हो सकता है।)

3

यदि पहले दो तरीके विफल हो जाते हैं, तो जांचें कि आपका एक्सआरडीपी क्लाइंट कुछ विदेशी कर रहा है या नहीं। यदि हां, तो आपको इसे सामान्य रूप से काम करने के लिए कॉन्फ़िगर करना होगा या इसके चारों ओर काम करने के तरीके की पहचान करनी होगी।

अपडेट करें

मैं सिस्टम के आसपास कुछ देख रहा हूँ। आप अपने सिस्टम के सभी स्थानों को पा सकते हैं जो निम्नलिखित कमांड के साथ एक PATH को निर्दिष्ट करते हैं (यह sudoइसलिए है क्योंकि कुछ फ़ाइलें /etcसामान्य उपयोगकर्ताओं द्वारा अपठनीय हैं):

sudo egrep -nr '\bPATH' /etc | less

मुझे लगता है कि उन स्थानों में से कई को अनदेखा करना सुरक्षित है, जिसके परिणामस्वरूप निम्न आदेश हैं:

sudo egrep -nr '\bPATH' /etc | egrep -v '^/etc/(init|rc|ppp|bash_c)' | egrep -v '^Binary' | less

एक फ़ाइल जो संभव लगती है (हालाँकि मुझे वास्तव में इसके बारे में बहुत अधिक जानकारी नहीं है) /etc/login.defs। आप इसे देख सकते हैं।

इसके अलावा, आप अपने डॉटफ़ाइल्स को भी प्राप्त कर सकते हैं:

egrep -nr '\bPATH' $HOME/.* | less

"पर्यावरण" फ़ाइल सामान्य है, ~ / .bashrc में सही रास्तों को जोड़ने से कमांड टर्मिनल पर चलती है लेकिन फिर भी उबंटू "पैकेज इंस्टॉलर" पर काम नहीं कर रही है। मुझे समस्या की जड़ नहीं मिली, लेकिन मेरे पास अब एक समाधान है, मैंने आवश्यक (ldconfig, आदि) प्रत्येक कार्यक्रम के लिए / बिन / में एक प्रतीकात्मक लिंक बनाया ... यह शायद एक सुरक्षा उल्लंघन है इसलिए मैं इस प्रश्न को छोड़ दूंगा मामले में किसी को भी एक बेहतर समाधान haves खुला।
इवान कैस्टेलानोस

@IvanCastellanos: मुझे यकीन नहीं है कि आप "पैकेज इंस्टॉलर" से क्या मतलब है, क्योंकि उस सटीक नाम AFAIK के साथ कोई कार्यक्रम नहीं है। क्या आप पैकेजों को स्थापित करने के लिए कदम उठा रहे हैं? और क्या यह जीयूआई या कमांड-लाइन इंस्टॉलर है?
स्कॉट सेवेंस

क्षमा करें, मेरा मतलब है "GDebi Packpage Installer" (GUI)।
इवान कैस्टेलानोस

@IvanCastellanos: क्या आप इसे लॉन्च करते हैं gksudo gdebi-gtk /full/path/to/package.deb? मैंने पाया है कि यह थोड़ा चुस्त है। यदि ऐसा है, तो इसे उस पर्यावरण से विरासत में प्राप्त करना चाहिए जिसे इसे लॉन्च किया गया है।
स्कॉट सेवेरेंस

3

पूर्ण प्रकटीकरण: मैं उबंटू का उपयोग नहीं करता ... लेकिन डेबियन के साथ मेरे पास एक ही मुद्दा था।

xrdp ने /etc/xrdp/startwm.sh लॉन्च किया (जब तक कि उबंटू ने इस स्थान को संशोधित नहीं किया है)। मैंने यह पंक्ति जोड़ी:

. /etc/profile

/etc/xrdp/startwm.sh और PATH के शीर्ष को अब सही ढंग से सेट किया गया है।

उबंटू के लिए, जोड़ना

. /etc/environment

/etc/xrdp/startwm.sh के शीर्ष पर भी ऐसा ही हो सकता है।


2

इसने मुझे कुछ समय के लिए रोक दिया। /etc/environmentशेल स्क्रिप्ट नहीं है, इसलिए आप इसे एक नहीं कह सकते। मेरे लिए जो काम किया वह था xdp सेशन मैनेजर "sesman" स्क्रिप्ट को pam में संपादित करना। मैंने अपनी /etc/pam.d/sesmanफ़ाइल में "सत्र" पंक्ति जोड़ी :

#%PAM-1.0
session required pam_env.so readenv=1 user_readenv=0
@include common-auth
@include common-account
@include common-session
@include common-password

इससे सत्र प्रबंधक /etc/environmentफ़ाइल को लॉगिन पर लोड करता है ।


1

सिद्धांत जोड़ने में

. /etc/environment

काम करेगा, लेकिन ऐसा नहीं है। मैंने इसे समस्या को ठीक करने के लिए अपने .bashrc के शीर्ष पर रखा


1

पिछले उत्तर के लिए धन्यवाद मैं इस तरह के समाधान के लिए आया था:

cat /etc/xrdp/startwm.sh | sed "s/. \/etc\/X11\/Xsession/. \/etc\/environment/" > ./startwm.sh && echo ". /etc/X11/Xsession" >> ./startwm.sh && sudo mv ./startwm.sh /etc/xrdp/startwm.sh && sudo chmod 755 /etc/xrdp/startwm.sh

सबसे अधिक अनुकूल नहीं है, लेकिन काम कर सकते हैं (Ubuntu 12.04)।


1

@ जॉन: मेरा मानना ​​है कि आपको अपने /etc/xrdpstartwm.sh की जांच करने की आवश्यकता है - मेरी पहली पंक्तियाँ मेरे बारे में पढ़ती हैं

if [ -f /etc/X11/xinit/xinitrc ]
then
    . /etc/X11/xinit/xinitrc
    exit 0
fi**

इसका मतलब है कि अगर / etc / X11xinit / xinitrc मौजूद है, तो उस फ़ाइल को इसके बजाय निष्पादित किया जाएगा - और यह जोड़ने में बहुत मदद नहीं करेगा

. /etc/environment

से /etc/xrdpstartwm.sh :-)

/ प्रति हर्ट्ज

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.