เมื่อสัปดาห์ก่อน (วันที่ 15 มกราคม 2015) ผู้ใช้ลินุกซ์รายหนึ่งที่ใช้ชื่อว่า keyvin ได้รายงานใน Github ว่าโปรแกรม Steam มีปัญหาร้ายแรงที่ลบข้อมูลใน Home folder ทั้งหมดเมื่อย้ายโฟลเดอร์เก็บการตั้งค่าของ Steam
ตั้งแต่เริ่มต้นติดตั้ง Steam บนลินุกซ์จะเก็บข้อมูลการตั้งค่าโปรแกรมไว้ที่ ~/.local/share/steam โดยที่ไม่มีตัวเลือกขึ้นมาให้ผู้ใช้เลือก คุณ keyvin เลยย้ายเอาเองหลังจากการติดตั้งและทำ symbolic link ชี้ไปยังโฟลเดอร์ใหม่ พอทำเสร็จ เขาก็ทดลองเปิดโปรแกรม Steam ผลปรากฏว่า Steam ไม่ยอมอ่านค่าโฟลเดอร์ตามที่ทำ symbolic link ไว้ และขึ้นหน้าต่างเตือนให้เลือกหาโฟลเดอร์ ซึ่งพอเลือกแล้วก็ยังหาไม่เจออีก ในที่สุดโปรแกรมก็ล่มไป คุณ keyvin จึงทำในสิ่งที่ทุกคนทำเวลาอับจนหนทาง นั่นคือการรีสตาร์ตเครื่อง
พอเปิดเครื่องขึ้นมาใหม่ Steam ก็สร้างโฟลเดอร์ของตัวเองขึ้นมาใหม่อีกครั้งใน Home folder ตามเรื่องตามราวของมัน แต่หลังจากโล่งอกได้ไม่กี่พริบตา คุณ keyvin ก็พบว่าไฟล์อื่นๆ ใน Home folder หายเกลี้ยง แม้แต่ไฟล์ใน external harddisk ก็หายไปด้วย
ผู้ใช้อีกคนที่ชื่อ d00fy ได้ทดลองกับตัวเองด้วยการรันโปรแกรม Steam ด้วยค่าคอนฟิก STEAM_DEBUG=1 ผลก็ปรากฏว่าทุกอย่างใน Home folder หายหมดเหมือนกัน เขาและผู้ใช้อีกหลายคนใน Github สันนิษฐานว่าปัญหาน่าจะมาจากคำสั่งในไฟล์ steam.sh บรรทัดที่สั่งว่า
rm -rf "$STEAMROOT/"*
พอมันหาโฟลเดอร์ $STEAMROOT ไม่เจอ มันก็อ่านคำสั่งเป็น
rm -rf /
ซึ่งคำสั่งนี้หมายความว่าให้ลบทุกอย่างในทุก "/" ซึ่งเป็น root directory ของลินุกซ์ (การลบทั้งไดรฟ์ C:, D:, E:,... รวมถึงไดรฟ์ซีดีรอมในวินโดวส์ยังเทียบเคียงไม่ได้กับการลบ / ในลินุกซ์ มันคือทุกอย่างจริงๆ) เผอิญว่า Steam รันด้วยสิทธิ์ของผู้ใช้ มันจึงลบเฉพาะไฟล์ที่ผู้ใช้มีสิทธิ์ลบได้ซึ่งนั่นหมายความถึง Home folder ของผู้ใช้คนนั้นและสื่อบันทึกข้อมูลทุกชิ้นที่ต่อใน login session ของผู้ใช้คนนั้น
rm -rf /
ด้วยสิทธิ์ root จะเพิ่มความบรรลัยมากกว่านี้อีกหลายสิบเท่า ผู้ใช้ลินุกซ์ควรระมัดระวัง (ยกเว้นว่าคุณจะรันบนเครื่องคนอื่นและไม่กลัวการเป็นที่รังเกียจของสังคม)แม้ว่าปัญหานี้จะถูกรายงานจากฝั่งผู้ใช้ลินุกซ์ แต่มีคนตั้งข้อสังเกตว่า Steam บนวินโดวส์ก็น่าจะสามารถสร้างปัญหาลักษณะเดียวกันได้ เนื่องจากในหน้า support ของ Steam เองก็เตือนไว้ว่ากรณีที่ผู้ใช้เลือกลง Steam ในโฟลเดอร์อื่นนอกจาก C:\Program Files\Steam\ ผู้ใช้ไม่ควรถอนการติดตั้ง (uninstall) โปรแกรม Steam ด้วยวิธี Add or Remove Programs แบบโปรแกรมธรรมดา แต่ควรถอนการติดตั้งด้วยวิธีแบบ manual
ที่มา - Neowin
Comments
และขั้นหน้าต่างเตือน > และขึ้น
แก้แล้วครับ ขอบคุณครับ
โห เงิบเลยนะครับนั่น
ทำไมผมนึกถึง bitchchecker - -"
ชี้เป้าได้ดีมากครับ :P
ตายละ ดีนะที่ตอนนั้นผมลงในโฟลเดอร์ตั้งต้น กดลง รับเกมฟรี แล้วก็ถอนไปเลย
ผมไม่เคยลงบน default เลย
แต่โชคดี ผมไม่เคย uninstall เลย
ใน Windows อาจจะบรรลัยกว่าตรงที่มันจะถาม permission ของเราตอนที่จะทำอะไรบางอย่างแบบ elevated permission ซึ่งด้วยชื่อของโปรแกรมแล้ว ผู้ใช้ก็คงเชื่อใจและไม่คิดว่ามันอันตราย ก็กด Yes เลยสิครับ
ในวินย้ายไปมาแสนสบาย แบคอัพโปรไฟล์ สำหรับพวกแลนดิสก็ได้ไม่มีปัญหาฮะ วินไม่มี .sh
Ton-Or
Steam บน Windows ก็อาจจะอันตรายนะครับ เพราะมันก็อาจจะใช้ชุดคำสั่งแบบอื่นบนแพลตฟอร์ม Windows ที่อาจจะมีผลเดียวกันก็ได้ครับ
อ้างคำเตือนตามท้ายบทความด้วยอีกส่วนนึงครับ
ไม่ครับ เพราะย้ายกันมานักต่อนักแล้ว
ถ้าพูดถึงเล่นเกม ผมก็ยังเชียร์ Windows มากกว่า Linux นะ ถึงแม้ตัวเองจะชอบ Linux มากก็เถอะ
+1
แถมไดรเวอร์พวกการ์ดจอก็มักจะดึงประสิทธิภาพออกมาได้ไม่สุดซะด้วย
ยังไงก็หนีไม่พ้น ลงไว้ทั้งสองอัน แยกกันใช้ระหว่างงานกับเกมส์
รู้สึกว่าการรีสตาร์ทเครื่อง สำหรับลีนิกส์ไม่เคยช่วยแก้ปัญหาได้เลย ลงท้ายต้องมากูเกิลหาวิธีเอาเองตลอด
อ่านในหน้า support ของ Steam บน Windows เตือนว่าจะลบทุกอย่างใน Path ที่ลง Steam โดยที่ไม่สนว่าเป็นไฟล์อะไร
ถ้าไม่ได้เอาไปบนกับไฟล์อื่นไม่น่าเป็นปัญหา
บน Windows ไม่น่ามีปัญหานะครับ มันเปน common sense ของ user อยู่แล้ว
เช่นคุณเอา Steam ไปลงไว้ใน C:\Program Files\Steam\
แล้วทีนี้ถ้าคุณจะเอาโปรแกรม Microsoft word จะเอาการบ้านหรือจะเอาโปรเจคจบ ไปไว้ใน C:\Program Files\Steam\ เหมือนกัน
ถ้าคุณ uninstall Steam ออก มันก็เป็นไปได้มากว่าไฟล์พวกนั้นจะหายไปด้วยอยู่แล้วอะ
หรือถึงคุณจะเอาไปลงที่อื่นที่ไม่ใช่ C:\Program Files\Steam\
คุณคงไม่เอาไฟล์อื่นๆไปเก็บไว้ใน folder เดียวกันทั้งหมดหรอกมั้ง ?
Linux เกิดปัญหาตอนเลือกโฟลเดอร์ติดตั้งที่ไปรันคำสั่ง remove (เข้าใจว่าน่าจะเป็นการ clear หลังติดตั้งเสร็จ)
แต่บน Windows การเลือกโฟลเดอร์ติดตั้งมัน simple มากๆเลยแค่ระบุ path ก็จบ ไม่ต้อง remove อะไร มันมีโฟลเดอร์ temp ของ system ให้อยู่แล้ว พวกนั้นลบไปก็ไฟล์ขยะทั้งนั้น
ถ้าเทียบ กับระบบ windows เป็นแบบนี้ครับ
คุณลงเกมส์ใน C:\Program Files\Steam\
แล้ว ย้าย folder ไปที่ใหนก็ได้
ตอนที่ ใช้ add-removed program uninstall app ตัวนี้ มันไปมองว่า
C:\Program Files\Steam\ ไม่มี
มันเลย ไปลบ
" \ "
ก็คือ root ของ system
หรือ ทุก drive ของระบบ
คุณมี drive
C,D,E,F,G,H,I,J,K ... Z.. ZZ
ทุก drive ทีมันลบ ได้ มันจะลบออกจนเหี้ยน เหมือน format HDD ทุก drive
ยังไง อย่างงั้ยเลยทีเดียว
ผมไม่ได้จะเอาสถานการณ์ใน Linux ไปเปรียบเทียบให้เห็นว่ามันเหมือนกับอะไรใน Windows ครับ
แต่ในข่าวระบุไว้ว่า สถานการณ์ดังกล่าวมันอาจจะเกิดขึ้นบน Windows ได้เพราะอะไร
ซึ่งสิ่งที่ผมได้อธิบายไปก็คือ สิ่งที่เขาอ้างว่ามันอาจจะทำให้เกิดขึ้นบน Windows ได้ มันไม่ได้เหมือนกับที่เกิดบน Linux น่ะสิครับ เพราะอะไร
ในหน้าเว็บ support ของ steam กล่าวไว้ว่า การ uninstall steam คือการลบ folder ที่ติดตั้งออกทั้งหมด (รวมไปถึง file ต่างๆ และ subfolder)
เช่นผมเปลี่ยน path จาก C:\Program Files\Steam ไปเป็น D:\Games\Steam
คุณเอาไฟล์อะไรอื่นๆไปใส่ D:\Games\Steam มันก็จะถูกลบออกด้วย
ถ้าคุณเผลอเอางาน การบ้าน โปรเจค ฯลฯ ไปใส่ไว้ใน D:\Games\Steam
ก็เตรียมคาดหวังว่ามันจะถูกลบเมื่อ uninstall steam ออกได้ (คุณเลือกเองว่าจะเก็บงานไว้ folder ไหน)
กรณีแบบนี้ไม่ได้เกิดขึ้นกับ Steam โปรแกรมเดียวครับ เวลาคุณ uninstall โปรแกรมทั่วๆไปออก บางทีมันแค่ลบ file ที่เกี่ยวข้องเฉยๆ บางทีมันก็ลบ folder ทิ้งไปดื้อๆเลย
การเก็บงาน การติดตั้งโปรแกรม เขาก็เลยต้องแยก Folder ไว้ ซึ่งผมก็บอกว่า มันไม่น่าเกิดกับคนใช้ Windows ได้ เพราะเรื่องแบบนี้คนใช้ก็รู้ๆกันอยู่แล้ว
ในขณะที่บน Linux นี่เราไม่ได้พูดถึงการ uninstall เลยนะ หากคุณไปเปลี่ยน Path จาก C:\Program Files\Steam ไปเป็น Path "ใดๆ" มันก็จะกลายเป็น \ ไปทันที
และการ move จริงๆมันคือ copy + remove พอมัน remove \ ออกไป ความซวยก็บังเกิด
ผมก็เลยไม่เห็นว่ามันจะเหมือนกันได้ยังไง การ uninstall จาก path แบบไม่ระมัดระวังจนทำให้ทั้งโฟลเดอร์หายไป กับ การเปลี่ยน path เฉยๆแล้วไฟล์ผู้ใช้หายหมดไม่ว่าจะโฟลเดอร์ใดๆ
Linux แค่เปลี่ยน Path คุณก็ซวยแล้ว แต่ Windows นี่การเปลี่ยน Path มันไม่มีผลอะไรเลย ส่วนการ uninstall คุณต้องไม่ระมัดระวังตั้งหลายต่อ
กรณีซวยสุดๆเลยคือคุณอาจจะเอา Steam ไปลงใน C:\, D:\ แล้วไป uninstall steam ออก
(ผมก็ไม่กล้าลองนะว่าเกิดอะไรขึ้น) แต่ถึงจะเกิดกรณีที่เลวร้ายที่สุด แต่ Root Directory ของ Windows มันก็หมายถึง Drive นั้นๆแค่ Drive เดียว
แต่กรณีเลวร้ายที่สุดของ Linux มันคือ อุปกรณ์เก็บข้อมูลที่เชื่อมต่ออยู่ทุกชนิด
ขยายความคำเตือนไว้นิดนึงครับ เผื่อใครไม่ได้อ่านต้นทาง
ติดตั้งโปรแกรมบน Windows ในชื่อโฟลเดอร์ที่ไม่ตรงกับโปรแกรมจริงแล้วข้อมูลจะหายหมด?
หืม? What?
ผมก็ว่าพิมพ์เกิน 7 บรรทัดมานิดเดียวเองนะ ทำไมมีคนอ่านไม่เคลียร์ได้ หรืออ่านข่าวไม่เคลียร์เองแล้วมาตอบเม้นผม ลองย้อนกลับไปอ่านที่ผมตอบเม้นที่แล้วดูครับ เผื่อจะเข้าใจ
ถ้าไม่อ่านต้นทาง ผมก็อ่านความเห็นแรกของท่านไม่เข้าใจนะครับ จนไปอ่านตัวอย่างจากในต้นทางถึงเข้าใจ
โปรแกรม Uninstall จะมีรายการของไฟล์ที่ส่วน Install ได้ทำการติดตั้งลงไปอยู่ครับ เวลาทำ Uninstall มันก็จะไปเอารายการของไฟล์นั้นๆ มาดู แล้วก็ไล่ลบตามรายการจากล่างขึ้นบน (ถอยหลัง) แล้วก็จะระบุรายละเอียดด้วยว่ามีการเอาไฟล์ไปลงที่ folder ของระบบที่อื่นๆ ด้วยหรือไม่ เช่น ใน %windir% ฯลฯ ไฟล์ดังกล่าวมีการ register ไว้หรือไม่ ฯลฯ
ส่วนกรณีนี้ปัญหาเกิดจาก bug ของการ parse command line variable ครับ
ตูมเดียวหายสินะ /ไม่เป็นไรเพราะผมใช้ Mac :P
คุ้นๆ ว่า OS X ใช้คำสั่งคล้าย Linux นะครับ ;) น่าลองนะครับ :D
คำสั่งแบบเดียวกันแต่ไม่แน่ใจ permission mac จะลงสิทไหน ถ้าเป็นผู้ควบคุมหรือรูท คงเจออาการเดียวกันเพรามันเป็นปัญหาที่ scripts
Ton-Or
ไม่เคย uninstall เลย
format เครื่องก่อนตลอด
^
^
that's just my two cents.
ทำไมไม่เช็ค $STEAMROOT ก่อนว่ามี Value ไหม แล้วค่อย rm -rf มันก็ไม่ได้ยากเย็นอะไรนีนา
เด็กฝึกงานทำครับ
มุขหรือเรื่องจริงครับ 555
เขียน Shell แบบนี้ เอามันไปทำอย่างอื่นเหอะครับ ไม่งั้นพังหมด
อันนี้เล่นมุกครับ พอดีมีเว็บดังแห่งนึงในไทยเคยทำพลาดแล้วโทษเด็กฝึกงานครับ แล้วจากนั้นก็เล่นกันเป็นมุกตลอดมาครับ
manual แบบไหนฮะ... shift+delete folder ทิ้ง?
แล้ว registry ล่ะ...
หรือวัดดวงตอน uninstall
สงสัยมันจะผลกระทบกับ OS X ด้วยไหม เพราะเป็นพี่น้อง unix เหมือนกัน =*=
โชคดีที่ไม่รู้วิธีย้าย อุ...
ขอโทดคับ พอดีผมพึ่งลบ สตรีมไปอะคับแต่ผมกด uninstall ไปแล้วอะคับ ขอมูลหลักๆที่มากับเครื่องไดท์ C หายหมดเลยคับโปรแกรมต่างๆหายหมดเลย วิธีแก้ต้องลงวินโดวใหม่ใช่มั้ยคับ รึมีวิธิอื่น ***รบกวนบอกทีคับรึ ทักมาในเฟส Supasit Duangchai ทีคับ ****