<ก่อนหน้านี้ | Contents | ถัดไป>
6.54.1. การติดตั้ง Coreutils
POSIX ต้องการให้โปรแกรมจาก Coreutils รู้จักขอบเขตของอักขระอย่างถูกต้องแม้ในโลแคลแบบหลายไบต์ โปรแกรมแก้ไขต่อไปนี้แก้ไขการไม่ปฏิบัติตามข้อกำหนดนี้และจุดบกพร่องอื่น ๆ ที่เกี่ยวข้องกับการทำให้เป็นสากล
แพทช์ -Np1 -i ../coreutils-8.31-i18n-1.patch
แพทช์ -Np1 -i ../coreutils-8.31-i18n-1.patch
หมายเหตุ
ในอดีต พบข้อบกพร่องมากมายในแพตช์นี้ เมื่อรายงานบั๊กใหม่ไปยังผู้ดูแล Coreutils โปรดตรวจสอบก่อนว่าสามารถทำซ้ำได้หากไม่มีแพตช์นี้
หมายเหตุ
ในอดีต พบข้อบกพร่องมากมายในแพตช์นี้ เมื่อรายงานบั๊กใหม่ไปยังผู้ดูแล Coreutils โปรดตรวจสอบก่อนว่าสามารถทำซ้ำได้หากไม่มีแพตช์นี้
ระงับการทดสอบซึ่งในเครื่องบางเครื่องสามารถวนซ้ำได้ตลอดไป:
sed -i '/test.lock/s/^/#/' gnulib-tests/gnulib.mk
sed -i '/test.lock/s/^/#/' gnulib-tests/gnulib.mk
ตอนนี้เตรียม Coreutils สำหรับการรวบรวม:
autoreconf -fiv FORCE_UNSAFE_CONFIGURE=1 ./กำหนดค่า \
--คำนำหน้า=/usr \
--enable-no-install-program=kill,uptime
autoreconf -fiv FORCE_UNSAFE_CONFIGURE=1 ./กำหนดค่า \
--คำนำหน้า=/usr \
--enable-no-install-program=kill,uptime
ความหมายของตัวเลือกการกำหนดค่า:
คอนเฟิร์มอัตโนมัติ
คำสั่งนี้อัพเดตไฟล์การกำหนดค่าที่สร้างขึ้นซึ่งสอดคล้องกับเวอร์ชันล่าสุดของ automake
FORCE_UNSAFE_CONFIGURE=1
ตัวแปรสภาพแวดล้อมนี้อนุญาตให้สร้างแพ็คเกจในฐานะผู้ใช้รูท
--enable-no-install-program=kill,uptime
จุดประสงค์ของสวิตช์นี้คือเพื่อป้องกันไม่ให้ Coreutils ติดตั้งไบนารีที่จะติดตั้งโดยแพ็คเกจอื่นในภายหลัง
รวบรวมแพ็คเกจ:
ทำ
ทำ
ข้ามไปที่ "ติดตั้งแพ็คเกจ" หากไม่ได้เรียกใช้ชุดทดสอบ
ตอนนี้ชุดทดสอบพร้อมที่จะเรียกใช้แล้ว ขั้นแรก ให้รันการทดสอบที่มีขึ้นเพื่อเรียกใช้ในฐานะผู้ใช้ ราก:
ทำให้ NON_ROOT_USERNAME=ไม่มีใครตรวจสอบรูท
ทำให้ NON_ROOT_USERNAME=ไม่มีใครตรวจสอบรูท
เราจะดำเนินการทดสอบที่เหลือในฐานะ ไม่มีใคร ผู้ใช้ อย่างไรก็ตาม การทดสอบบางอย่างกำหนดให้ผู้ใช้เป็นสมาชิกของกลุ่มมากกว่าหนึ่งกลุ่ม เพื่อไม่ให้ข้ามการทดสอบเหล่านี้ เราจะเพิ่มกลุ่มชั่วคราวและสร้างผู้ใช้ ไม่มีใคร ส่วนหนึ่งของมัน:
echo "dummy:x:1000:nobody" >> /etc/group
echo "dummy:x:1000:nobody" >> /etc/group
แก้ไขการอนุญาตบางอย่างเพื่อให้ผู้ใช้ที่ไม่ใช่รูทสามารถคอมไพล์และรันการทดสอบได้:
chown -Rv ไม่มีใคร
chown -Rv ไม่มีใคร
ตอนนี้ทำการทดสอบ ตรวจสอบให้แน่ใจ PATH ใน su สภาพแวดล้อมรวมถึง /tools/bin
su ไม่มีใคร -s /bin/bash \
-c "PATH=$PATH ทำให้ RUN_EXPENSIVE_TESTS=yes ตรวจสอบ"
su ไม่มีใคร -s /bin/bash \
-c "PATH=$PATH ทำให้ RUN_EXPENSIVE_TESTS=yes ตรวจสอบ"
เป็นที่ทราบกันว่าโปรแกรมทดสอบ test-getlogin ล้มเหลวในสภาพแวดล้อมระบบที่สร้างขึ้นบางส่วน เช่น สภาพแวดล้อม chroot ที่นี่ แต่จะผ่านหากเรียกใช้เมื่อสิ้นสุดบทนี้ โปรแกรมทดสอบ tty.sh เป็นที่รู้จักกันว่าล้มเหลว
ลบกลุ่มชั่วคราว:
sed -i '/dummy/d' /etc/group
sed -i '/dummy/d' /etc/group
ติดตั้งแพ็คเกจ:
ให้ติดตั้ง
ให้ติดตั้ง
ย้ายโปรแกรมไปยังตำแหน่งที่กำหนดโดย FHS:
mv -v /usr/bin/{cat,chgrp,chmod,chown,cp,date,dd,df,echo} /bin mv -v /usr/bin/{เท็จ,ln,ls,mkdir,mknod,mv, pwd,rm} /bin
mv -v /usr/bin/{rmdir,stty,sync,true,uname} /bin mv -v /usr/bin/chroot /usr/sbin
mv -v /usr/share/man/man1/chroot.1 /usr/share/man/man8/chroot.8 sed -is/\"1\"/\"8\"/1 /usr/share/man /man8/chroot.8
mv -v /usr/bin/{cat,chgrp,chmod,chown,cp,date,dd,df,echo} /bin mv -v /usr/bin/{เท็จ,ln,ls,mkdir,mknod,mv, pwd,rm} /bin
mv -v /usr/bin/{rmdir,stty,sync,true,uname} /bin mv -v /usr/bin/chroot /usr/sbin
mv -v /usr/share/man/man1/chroot.1 /usr/share/man/man8/chroot.8 sed -is/\"1\"/\"8\"/1 /usr/share/man /man8/chroot.8
สคริปต์บางตัวในแพ็คเกจ LFS-Bootscripts ขึ้นอยู่กับ หัว, ดี, นอนหลับและ แตะ. ในขณะที่ / usr อาจไม่พร้อมใช้งานในช่วงเริ่มต้นและช่วงท้ายของการบูท ไบนารีเหล่านั้นต้องอยู่ในพาร์ติชั่นรูทเพื่อรักษาความสอดคล้อง FHS:
mv -v /usr/bin/{หัว,ไนซ์,สลีป,ทัช} /bin
mv -v /usr/bin/{หัว,ไนซ์,สลีป,ทัช} /bin