TL;ดร: ไม่รองรับช่องว่างและอักขระเมตาอื่นๆ สำหรับไดเร็กทอรีที่จะลงจอด /usr/ท้องถิ่น.
/usr/local/ตัวจัดการพื้นที่เก็บข้อมูล MegaRAID มีช่องว่าง เห็นได้ชัดว่าแพ็คเกจนี้ไม่เป็นไปตามแนวทางปฏิบัติที่ดีในโลก *ระวัง (ตำหนิ LSI/Broadcom)
คุณสามารถแปลงเอเลี่ยนเป็น tar หรือแยกโดยตรงโดยใช้ rpm2cpioค้นหาวิธีการใช้สคริปต์การติดตั้งและดูว่าจะนำกลับมาใช้อย่างไร เลือกดูว่าเป็นไปได้ที่จะเปลี่ยนชื่อไดเร็กทอรีด้วยการเว้นวรรคหรือไม่ หากมีการอ้างอิงใด ๆ ที่สามารถแทนที่ได้ง่ายเช่นกัน และสร้างแพ็คเกจไบนารีโดยตรงโดยใช้ dpkg-deb -b ซึ่งจะไม่ได้รับผลกระทบจากปัญหาดังกล่าว แต่จะสร้างแพ็คเกจที่ไม่เป็นไปตามนโยบายของเดเบียน
คำอธิบายด้านล่าง...
เดอะ นโยบายเดเบียน อาณัติว่าไม่ควรติดตั้งสิ่งใดในแพ็คเกจ /usr/ท้องถิ่น ยกเว้นบางไดเร็กทอรีด้วยวิธีทางอ้อม:
9.1.2. โปรแกรมเฉพาะไซต์
ตามคำสั่งของ FHS แพ็คเกจจะต้องไม่วางไฟล์ใด ๆ
/usr/ท้องถิ่นโดยใส่ไว้ในไฟล์ระบบไฟล์เก็บถาวร
แกะโดย dpkg หรือโดยการจัดการในสคริปต์ผู้ดูแล
อย่างไรก็ตาม, แพ็คเกจอาจสร้างไดเร็กทอรีว่างด้านล่าง /usr/ท้องถิ่น ดังนั้น
ที่ผู้ดูแลระบบรู้ว่าจะวางไซต์เฉพาะที่ใด
ไฟล์. สิ่งเหล่านี้ไม่ใช่ไดเร็กทอรีใน /usr/ท้องถิ่นแต่เป็นลูกของ
ไดเร็กทอรีใน /usr/ท้องถิ่น. ไดเร็กทอรีเหล่านี้ (/usr/local/*/dir/)
ควรลบออกเมื่อนำแพ็คเกจออกหากว่างเปล่า
โปรดทราบว่านี่ใช้ได้กับไดเร็กทอรีเท่านั้น ด้านล่าง /usr/ท้องถิ่น, ไม่
ใน /usr/ท้องถิ่น.
[...]
ดังนั้นแพ็คเกจนี้จึงไม่สามารถปฏิบัติตามได้เช่นไฟล์ /usr/local/MegaRAID Storage Manager/startmonitorhelp.sh ไม่เป็นไปตามข้อกำหนด: เป็น ไฟล์ บรรจุในที่ใดที่หนึ่ง /usr/ท้องถิ่น.
คนต่างด้าว ใช้ dh_usrlocal build helper เพื่อแปลงไดเร็กทอรี (ยังคงเป็นไปตามมาตรฐาน) โดยอัตโนมัติสำหรับการเพิ่มในสคริปต์ผู้ดูแล (เช่น บน Debian ก่อน, ภายหลัง สคริปต์อื่น ๆ ที่เก็บถาวรแยกต่างหากใน .deb เท่ เก็บถาวรและจะถูกเก็บไว้ใน /var/lib/dpkg/info/ ในภายหลัง) ซึ่งจะดำเนินการไม่กี่ มคเดียร์ คำสั่งในการติดตั้ง:
dh_usrlocal เป็นโปรแกรม debhelper ที่สามารถใช้ในการสร้าง
แพ็คเกจที่จะให้ไดเร็กทอรีย่อยใน /usr/ท้องถิ่น เมื่อไร
ติดตั้งแล้ว
พบไดเร็กทอรีย่อยของ usr/ท้องถิ่น ในไดเร็กทอรีการสร้างแพ็คเกจ
และลบออกโดยแทนที่ด้วยส่วนย่อยของสคริปต์ผู้ดูแล
(เว้นเสียแต่ว่า -น ถูกใช้) เพื่อสร้างไดเร็กทอรี ณ เวลาติดตั้ง และ
นำออกเมื่อนำหีบห่อออกในลักษณะที่สอดคล้องกับ
นโยบายเดเบียน ข้อมูลโค้ดเหล่านี้ถูกแทรกลงในสคริปต์ผู้ดูแล
โดย dh_installdeb.
เนื้อหาของ /usr/bin/dh_usrlocal สคริปต์ Perl ประกอบด้วย:
# สืบทราบบางกรณีที่ชัดเจนของ "สิ่งนี้จะไม่สิ้นสุด
#ดี" เราพึ่งพาอะไร "ในขณะที่อ่าน dir ... ; ทำ"
#สามารถดำเนินการเพื่อความถูกต้อง
ถ้า ($fn =~ m{[\s!'"\$()*#;<>?@\[\]\`|]}) {
ข้อผิดพลาด ("ไม่สามารถสร้างเชลล์สคริปต์ที่ถูกต้องสำหรับ $fn เนื่องจากอักขระเมตาของเชลล์");
}
\s ซึ่งหมายความว่าช่องว่างใดๆ ใน PCRE เป็นส่วนหนึ่งของอักขระเมตาที่ต้องห้าม และทำให้เกิดข้อผิดพลาดเมื่อแยกวิเคราะห์ /usr/local/ตัวจัดการพื้นที่เก็บข้อมูล MegaRAID.