루트로 실행될 것으로 예상되는 makeself
스크립트가 있습니다. 데스크톱 설치 프로그램입니다.그놈 세션 감지 스크립트가 있습니다.
스크립트가 끝나면 최근에 파일 시스템에 설치된 소프트웨어가 사용자 공간에서 실행을 시도합니다.
이
잘 (교대 또는sudo -u $SUDO_USER ...
in Ubuntu 16.04)
sudo -u $(logname) /path/to/application
사용자로부터 그러나 중요한 환경 변수를 사용하여 작동이 누락되었습니다 : 자식 프로세스가 자바에 속하고 자바는 검출이 환경 변수를 사용하기 때문에
GNOME_DESKTOP_SESSION_ID
내가 GNOME_DESKTOP_SESSION_ID
필요 GtkLookAndFeel.
그러나 sudo -i
을 사용하려는 시도가 실패했습니다. 몇 가지 기본적인 테스트에서
GNOME_DESKTOP_SESSION_ID
내가
CTRL+ALT+F1
터미널에있는 경우이 사용자 로그. 예를 들어,
env |grep GNOME
모두가
GNOME_DESKTOP_SESSION_ID
를 얻을
XTerm
및
gnome-terminal
반면 아무 것도 얻을 수 없을 때 자연 환경 변수로 표시되지 않습니다.
sudo
명령에 -E
매개 변수와 같은 값을 전달하지 않아도 설치 스크립트에서이 GNOME_DESKTOP_SESSION_ID
변수를 보유하려면 어떻게해야합니까?
GtkLookAndFeel
이 Linux의 기본 모양과 느낌이지만 export JAVA_OPTS
을 하드 코딩하지 않는 것이 좋습니다. 지원, 수명 및 확장 성의 이유로 오라클의 탐지 기술로 대체하는 것을 선호합니다.
업데이트 : 우분투에서, 그것을 검색하는 initctl get-env
를 사용하여 리드 /usr/share/upstart/sessions/xsession-init.conf
initctl set-env --global GNOME_DESKTOP_SESSION_ID=this-is-deprecated
에서 GNOME_DESKTOP_SESSION_ID
살고있다. 불행하게도 이것은 새로운 sudo
쉘에서 도움이되지 않으며 dbus-launch
에서 (낙관적 인) 시도도하지 않습니다.
Defaults env_keep+=GNOME_DESKTOP_SESSION_ID
을하지만 당신은 이미 내부 sudo는이 경우, 문제는 다시 읽지 않을 것이다,이 :
@ dyorgio의 도움에 대해 구체적으로 언급하고 싶습니다. 그는 위의 솔루션의 50 % 인 또 다른 도움말 포럼에서'/ proc/$ pid/environ' 논리를 나에게 제공했습니다. 감사! – tresf