X11
로컬 컴퓨터의 출력을 서버로 전달하기 위해 다음 설정을 사용하고 있습니다 . 설정을 간략하게 설명하겠습니다.
X11
서버와 클라이언트가 동일한 로컬 컴퓨터에 있습니다.- 서버가
X11
내 로컬 컴퓨터에서 실행 중입니다A
. - 클라이언트는 내 로컬 컴퓨터에서 이라는 도커 컨테이너로 실행됩니다
B
. R
클라이언트에 있는 프로그램()의 그래픽 출력을B
호스트에 있는 서버로 전달 하려고 합니다A
.
액세스 작동 방식은 다음과 같습니다.
- 내 클라이언트 에는 .so
B
쌍이 있어/tmp/.X11-unix
unix 도메인 소켓에 액세스할 수 있습니다unix:0
. B
xhost +si:localuser:$(USER)
호스트에서 명령을 실행하여 클라이언트가 이 소켓에 액세스하도록 허용 합니다A
. (이것은 단일 로컬 사용자에게 액세스 권한을 부여하는 서버 해석 주소입니다.)
이 모든 것이 예상대로 작동하지만 소켓에 액세스하려고 할 때마다 첫 번째 시도에서는 작동하지 않고 오류가 발생합니다 X11 protocol error: BadAccess (attempt to access private resource denied)
. 그래픽 장치를 다시 닫았다 X11
가 다시 열면 모든 것이 잘 작동합니다. 종속성에 따라 완전히 다른 설정을 사용하더라도 ssh
문제는 여전히 존재합니다 X11-forwarding
. 장치 액세스를 사용한 첫 번째 시도가 성공 cairo
하면 Xlib
장치에 대한 문제를 다시 추적할 수 있습니다. X11
서버의 Unix 도메인 소켓에 액세스하기 위해 장치를 사용하는 프로그램에 대한 경험이 있거나 cairo
이런 일이 발생하는 이유를 아는 사람이 있습니까?