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
.