Lỗi của máy: XDG_RUNTIME_DIR không được đặt trong môi trường. Hãy cố gắng chạy nautilus với quyền root


14

Tôi đang cố chạy nautilus với quyền root nhưng khi tôi chạy "sudo nautilus" từ thiết bị đầu cuối, tôi gặp lỗi sau:

lỗi: XDG_RUNTIME_DIR không được đặt trong môi trường.

(nautilus: 9341): Gtk-CẢNH BÁO **: không thể mở màn hình:

Vấn đề không xảy ra khi tôi cố chạy nautilus dưới dạng không root. Tôi đang sử dụng Ubuntu 14.04. Có ai biết làm thế nào tôi có thể sửa lỗi này?


Chỉ để ghi lại, tôi đã kết thúc ở đây sau khi tôi gặp lỗi tương tự khi cố gắng thực hiện X11Forwarding qua ssh. Giải pháp: Tôi đã quên sử dụng -Xtùy chọn khi bắt đầu phiên ssh của mình.
JW.

Câu trả lời:


13

Khi bạn chạy phần mềm với tư cách là một người dùng khác, thực tế bạn đang bắt đầu môi trường tối thiểu và biệt lập mới không mang theo một số biến "quá mức" (trong số các biến khác chịu trách nhiệm tiêm thư viện hoặc đặt một số đặc quyền nhất định). Thay thế sudo nautiluscuộc gọi của bạn bằng cách sau - nó sẽ thực hiện cài đặt máy chủ x dành riêng cho người dùng từ phiên hiện tại:

pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY nautilus

Đây là giải pháp cấp thấp một lần nhưng nó sẽ hoạt động trên máy bị cấu hình sai. Nếu bạn muốn "khắc phục" vĩnh viễn, sudobạn cần tìm ra sự cố với cấu hình môi trường của mình và sửa nó như được mô tả trong các câu trả lời khác.


1
@Cyprian Guerra - Điều này không được thiết lập trong môi trường, điều này chỉ cho phép bạn chạy một lần. Điều này hầu như không hữu ích. Chạy sudo nautilusnên hoạt động như bình thường từ thiết bị đầu cuối khi chạy. Thông thường bất cứ khi nào tôi làm điều đó từ thiết bị đầu cuối trên một bản cài đặt mới, nó sẽ mở ra như bình thường với sudo.

@ user94959 Bạn không hiểu nguyên tắc cơ bản - môi trường mới đang được thiết lập, các biến được thực hiện, tác vụ chạy, khi tác vụ thoát khỏi môi trường riêng biệt này đang bị phá hủy. Do đó, có, bạn cần đặt các biến cho mọi môi trường mới. Nếu bạn muốn đọc thêm tài liệu hãy thử pkexecsudotrang man cũng như google cho các tranh chấp liên quan.
cprn

@CyprianGuerra thì sao khi tôi cố mở ứng dụng từ menu máy tính để bàn đòi hỏi đặc quyền nâng cao có thể chạy sau khi nhập mật khẩu? rõ ràng có gì đó thiếu trong cấu hình nếu nó không khởi chạy chính xác vì nó không được đặt trong môi trường XDG như bình thường? vấn đề là khi câu nói của nó Cannot open displaycó nghĩa là thiếu một cái gì đó từ tệp cấu hình của nó bởi vì một cái gì đó đã sửa đổi nó và loại bỏ nó khỏi môi trường khi không nên. Vì vậy, làm thế nào nó có thể được thiết lập trở lại môi trường vĩnh viễn sau đó để tôi không phải đối phó với điều này?

1
@sherrellbc Tôi đang nói rõ ràng bộ công cụ chính sách phải chạy envtrước khi chạy nautilusvà trước đây tôi rất quan tâm đến việc đặt các biến cho tôi. Bạn có thể kiểm tra man env.
cprn

1
@cprn. Tôi nên đã kiểm tra trang người đàn ông đầu tiên. env COMMAND ARG ...
sherrellbc

1

Tôi cũng gặp vấn đề tương tự trên Ubuntu 14.04. Mở terminal bằng cách nhấn,

Ctrl+ Alt+T

sau đó sudo visudo

thay đổi dòng

Mặc định env_keep = "https_proxy"

đến

Mặc định env_keep + = "https_proxy"

Nó làm việc như quyến rũ.


Nó hoạt động nhưng thiết lập tương tự cho $XAUTHORITYbất chấp mục đích.
cprn

1

Để làm cho nó dễ dàng - giải thích thêm về việc khởi động mới hệ thống của tôi.

Sau tất cả các giải thích ở đây, tôi đã đi đến kết quả - và "env" trong thiết bị đầu cuối đã nói rằng điều đó phù hợp với các phiên này:

Hai hàng này để sử dụng biến môi trường:

cho hành vi tmp tôi đã chọn:

mkdir -pv ~ / .cache / xdgr

Để đặt biến môi trường:

xuất XDG_RUNTIME_DIR = $ PATH: ~ / .cache / xdgr

Sau khi đóng thiết bị đầu cuối và mở mới cho việc thu hồi env, họ nói:

XDG_RUNTIME_DIR = / run / người dùng / 1001

lưu ý: mọi người dùng trong ubfox đều ổn, root cần nhiều hơn (thông tin cuối cùng theo thời hạn - với 0700 quyền)


0

Nếu bạn gặp lỗi này trong Docker; đây là những gì tôi làm

# sudo xhost +
access control disabled, clients can connect from any host
# export DISPLAY=:0.0
# docker run -it --env DISPLAY=unix$DISPLAY --privileged  --volume /tmp/.X11-unix:/tmp/.X11-unix .. rest of your Docker arugments
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.