이상한 XDG 사용자 디렉터리 재설정 버그


10

12.04 LTS에 이상한 문제가 있습니다.

~/.config/user-dirs.dirs파일에 수행 한 작업에 관계없이 다음에 다시 로그인 할 때마다 해당 파일이 모두 $ HOME으로 설정됩니다. 로그인 중에 해당 파일의 내용을 대체하는 lightdm을 사용하여 문제가 발생했습니다.

로그인하고 xdg-user-dirs-update --force다음을 수행 하면 파일의 내용이 정상입니다. 로그 아웃 한 후에도 파일은 여전히 ​​정상입니다. lightdm을 사용하여 다시 로그인하면 문제가 발생합니다.

꽤 성가신 일입니다.


어떤 데스크탑 환경을 사용하고 있습니까? 최근에 여기에 버그가 채워 졌습니다

나는 기본 Unity2D를 사용하고 있습니다
sybreon

답변:


2

자동 시작 스크립트가 있습니다

/etc/xdg/autostart/user-dirs-update-gtk.desktop

어느 페이지 나 설명 xdg-user-dirs-gtk-update이없는 것처럼 프로그램을 호출 하지만 원인 일 수 있습니다.man--help

이 스크립트를 삭제하거나 (패키지에 속하는 것으로 보이며 xdg-user-dirs-gtk업데이트되면 다시 작성 될 수 있음) Hidden=true자동 시작 파일에 행 을 추가하여 실행을 방해 할 수 있습니다 (그리고 유지할 것인지 묻습니다) 향후 업데이트 중에 수정 된 사본).


비슷한 작업을 수행했지만 /etc/X11/Xsession.d/에 스크립트를 생성하여 XDG 재설정을 덮어 썼습니다.
sybreon

Comment.desktop파일 의 필드에 현재 로캘과 일치하도록 공통 폴더 이름 업데이트가 표시됩니다 . 그러나 로케일에 따라 실제 경로를 바꾸고 싶은 이유는 없습니다. 파일 시스템 경로 자체가 아닌 해당 폴더의 표시 문자열을 전환하는 것을 볼 수 있습니다.
palswim

0

귀하의 문제를 인터넷 xdg-user-dirs으로 연결하면 Ubuntu Software Center 에서 설치할 수 있습니다 . 다음과 같은 기능을 주장합니다.

이 프로그램은 구성 파일과 기본 디렉토리 세트를 읽습니다. 그런 다음 사용자 홈 디렉토리에 이러한 디렉토리의 현지화 된 버전을 작성하고 $ (XDG_CONFIG_HOME) /user-dirs.dirs (XDG_CONFIG_HOME의 기본값은 ~ / .config)에 애플리케이션이이 디렉토리를 찾기 위해 읽을 수있는 구성 파일을 설정합니다.

전체 문서는 여기 에서 찾을 수 있습니다 .


문제는 이러한 파일이 각 로그인 후 어떻게 든 '재설정'된다는 것이므로 해결책은 아닙니다.
sybreon

0

다음 사항을 확인하십시오.

  • XDG_CONFIG_HOME'~ / .config'와 다른 위치로 설정 되어 있는지 확인하십시오 .
    • 쉘 레벨에서
    • 통하다 grep XDG_CONFIG_HOME /etc/*profile /etc/*rc ~/.*rc ~/.*profile /etc/X11/Xsession /etc/X11/Xsession.d/*

임시 해결책으로 표준 디렉토리 와 사용자 정의 디렉토리 이름 사이에 기호 링크를 사용 하십시오 .

예 :

 cd ${HOME}
 function link() {
 local dir=$1
 shift 1
 [ -e ${dir} ] || mkdir -p ${dir}
 for name in $*
 do
 if [ -L ${name} ]
 then
 if [ "$(readlink ${name})" = "${dir}" ]
 then
 [ -e  "${dir}" ] || mkdir -p "${dir}"
 echo "${name} allready converted to ${dir}"
 else
 echo "${name} (link) converted to ${dir}"
 [ -e  "${dir}" ] || mkdir -p "${dir}"
 mv -av ${name}/* ${dir}/ 2>/dev/null    || true # can be emtpy
 mv -av ${name}/.??* ${dir}/ 2>/dev/null || true # can be emtpy
 rm -f ${name}
 ln -svf ${dir} ${name}
 fi
 else
 if [ -d ${name} ]
 then
 mv -av ${name}/* ${dir}/ 2>/dev/null    || true # can be emtpy
 mv -av ${name}/.??* ${dir}/ 2>/dev/null || true # can be emtpy
 rmdir ${name}
 ln -sv ${dir} ${name};
 echo "${name} (dir) converted to ${dir}"
 else
 ln -sv ${dir} ${name};
 echo "${name} linked to ${dir}"
 fi
 fi
 done

 }


 #     real                DE          EN
 link  ~/data/templates    Vorlagen    Templates
 link  ~/data/public       Öffentlich  Public
 link  ~/data/documents    Dokumente   Documents
 link  ~/data/music        Musik       Music
 link  ~/data/photo        Bilder      Pictures
 link  ~/data/video        Videos
 link  ~/data/privat       Privat

현재로서는 /etc/X11/Xsession.d/ 스크립트를 사용하여 디렉토리를 강제 실행하는 해결 방법이 있습니다.
sybreon

0

업데이트가 실행될 때 사용자 정의 디렉토리가 없으면 항목이 재설정됩니다. 로그인 과정이 늦을 때까지 홈 디렉토리가 마운트되지 않을 수 있습니까? /etc/xdg/user-dirs.defaults어쨌든 같은 경로로 다시 쓰도록 기본값을 설정할 수 있습니까?


사용자 홈 디렉토리는 부팅 중에 마운트되는 glusterfs 마운트입니다. 따라서 사용자가 로그인 할 때 사용할 수 있습니다.
sybreon

0

변경 후 파일을 저장 한 후 다시 로그인하기 전에 다음을 실행하십시오.

echo "enabled=false" > ~/.config/user-dirs.conf

이것은 user-dirs를 만듭니다 . conf 가 더 이상 재설정되지 않도록해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.