Weird XDG User Dir กำลังรีเซ็ตข้อผิดพลาด


10

ฉันมีปัญหาแปลก ๆ กับ 12.04 LTS

ไม่ว่าฉันจะทำอะไรกับ~/.config/user-dirs.dirsไฟล์เมื่อใดก็ตามที่ฉันลงชื่อเข้าใช้อีกครั้งในครั้งถัดไปไฟล์นั้นจะถูกตั้งค่าเป็น $ HOME เท่านั้น มีบางอย่างเกิดขึ้นระหว่างการเข้าสู่ระบบโดยใช้ lightdm ที่แทนที่เนื้อหาของไฟล์นั้น

ถ้าฉันเข้าสู่ระบบและทำxdg-user-dirs-update --forceเนื้อหาของไฟล์ก็โอเค หลังจากฉันออกจากระบบไฟล์ยังคงโอเค เมื่อฉันลงชื่อเข้าใช้อีกครั้งโดยใช้ lightdm มีบางอย่างผิดปกติ

มันค่อนข้างน่ารำคาญ


คุณใช้สภาพแวดล้อมของเดสก์ท็อปใด มีข้อผิดพลาดเกิดขึ้นที่นี่เมื่อเร็ว ๆ นี้: bugs.launchpad.net/pcmanfm/+bug/1031463

ฉันใช้ค่าเริ่มต้น Unity2D
sybreon

คำตอบ:


2

มีสคริปต์เริ่มอัตโนมัติอยู่

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

ซึ่งเรียกโปรแกรมxdg-user-dirs-gtk-updateซึ่งดูเหมือนจะไม่มีmanหน้าหรือ--helpคำอธิบาย แต่ฉันเดาว่าอาจเป็นสาเหตุ

คุณสามารถลบสคริปต์นี้ (ซึ่งดูเหมือนจะเป็นของแพ็คเกจxdg-user-dirs-gtkและอาจถูกสร้างขึ้นใหม่หากมีการอัปเดต) หรือเพิ่มบรรทัดHidden=trueลงในไฟล์ autostart ซึ่งควรป้องกันไม่ให้ทำงาน (และคุณควรถามว่าต้องการเก็บไว้หรือไม่ สำเนาที่คุณแก้ไขระหว่างการอัพเดทในอนาคต)


ฉันทำสิ่งที่คล้ายกัน แต่สร้างสคริปต์ใน /etc/X11/Xsession.d/ เพื่อเขียนทับการรีเซ็ต XDG
sybreon

Commentในสนามของฉัน.desktopแฟ้มกล่าวว่าชื่อโฟลเดอร์ปรับปรุงร่วมกันเพื่อให้ตรงกับสถานที่ปัจจุบัน แต่นั่นก็ไม่มีเหตุผลว่าทำไมฉันจึงต้องการเปลี่ยนเส้นทางที่แท้จริงของฉันขึ้นอยู่กับสถานที่เกิดเหตุ ฉันเห็นการสลับสตริงการแสดงผลสำหรับโฟลเดอร์เหล่านั้น แต่ไม่ใช่เส้นทางของระบบไฟล์
palswim

0

Googling ปัญหาของคุณได้นำฉันไปxdg-user-dirsซึ่งอาจจะติดตั้งจากศูนย์ซอฟท์แวอูบุนตู มันอ้างคุณสมบัติดังต่อไปนี้:

โปรแกรมนี้อ่านไฟล์กำหนดค่าและชุดของไดเรกทอรีเริ่มต้น จากนั้นจะสร้างเวอร์ชันที่แปลเป็นภาษาท้องถิ่นของไดเรกทอรีเหล่านี้ในโฮมไดเร็กตอรี่ของผู้ใช้และตั้งค่าไฟล์ใน $ (XDG_CONFIG_HOME) /user-dirs.dirs (XDG_CONFIG_HOME) ค่าเริ่มต้นที่แอปพลิเคชันสามารถอ่านเพื่อค้นหาไดเรกทอรีเหล่านี้

เอกสารฉบับเต็มสามารถพบได้ที่นี่


นั่นไม่ใช่วิธีแก้ปัญหาเนื่องจากปัญหาคือไฟล์เหล่านี้จะ 'รีเซ็ต' หลังจากลงชื่อเข้าใช้แต่ละครั้ง
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

รายการจะถูกรีเซ็ตหากไม่มี dirs ที่กำหนดเองเมื่อการอัพเดตรัน เป็นไปได้หรือไม่ว่า dir ที่บ้านของคุณจะไม่ถูกเมาท์จนกว่าจะถึงขั้นตอนการล็อกอิน? บางทีคุณสามารถตั้งค่าเริ่มต้น/etc/xdg/user-dirs.defaultsเพื่อให้มันถูกเขียนใหม่ในเส้นทางเดียวกันหรือไม่?


dir ของผู้ใช้ที่บ้านคือการติดตั้ง glusterfs ที่ติดตั้งระหว่างการบูต .. ดังนั้นจึงสามารถใช้ได้เมื่อผู้ใช้ลงชื่อเข้าใช้
sybreon

0

หลังจากทำการเปลี่ยนแปลงและบันทึกไฟล์ แต่ก่อนที่คุณจะกลับเข้าสู่ระบบให้ดำเนินการ

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

นี้จะสร้างใช้ dirs confที่ควรป้องกันการรีเซ็ตใด ๆ เพิ่มเติม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.