<Sebelumnya | Konten | Selanjutnya>
6.54.1. Instalasi Coreutils
POSIX mengharuskan program dari Coreutils mengenali batas karakter dengan benar bahkan di lokal multibyte. Patch berikut memperbaiki ketidakpatuhan ini dan bug terkait internasionalisasi lainnya.
tambalan -Np1 -i ../coreutils-8.31-i18n-1.patch
tambalan -Np1 -i ../coreutils-8.31-i18n-1.patch
Note
Di masa lalu, banyak bug ditemukan di patch ini. Saat melaporkan bug baru ke pengelola Coreutils, harap periksa terlebih dahulu apakah bug tersebut dapat direproduksi tanpa tambalan ini.
Note
Di masa lalu, banyak bug ditemukan di patch ini. Saat melaporkan bug baru ke pengelola Coreutils, harap periksa terlebih dahulu apakah bug tersebut dapat direproduksi tanpa tambalan ini.
Menekan tes yang pada beberapa mesin dapat berulang selamanya:
sed -i '/test.lock/s/^/#/' gnulib-tests/gnulib.mk
sed -i '/test.lock/s/^/#/' gnulib-tests/gnulib.mk
Sekarang siapkan Coreutils untuk kompilasi:
autoreconf -fiv FORCE_UNSAFE_CONFIGURE=1 ./configure \
--awalan=/usr \
--enable-no-install-program=bunuh, waktu aktif
autoreconf -fiv FORCE_UNSAFE_CONFIGURE=1 ./configure \
--awalan=/usr \
--enable-no-install-program=bunuh, waktu aktif
Arti dari opsi konfigurasi:
autoreconf
Perintah ini memperbarui file konfigurasi yang dihasilkan yang konsisten dengan automake versi terbaru.
FORCE_UNSAFE_CONFIGURE=1
Variabel lingkungan ini memungkinkan paket dibangun sebagai pengguna root.
--enable-no-install-program=bunuh, waktu aktif
Tujuan dari switch ini adalah untuk mencegah Coreutils menginstal binari yang nantinya akan diinstal oleh paket lain.
Kompilasi paket:
membuat
membuat
Lewati ke "Install the package" jika tidak menjalankan test suite.
Sekarang test suite siap dijalankan. Pertama, jalankan tes yang dimaksudkan untuk dijalankan sebagai pengguna akar:
buat NON_ROOT_USERNAME=tidak ada yang memeriksa root
buat NON_ROOT_USERNAME=tidak ada yang memeriksa root
Kami akan menjalankan sisa tes sebagai tak seorangpun pengguna. Namun, tes tertentu mengharuskan pengguna menjadi anggota lebih dari satu grup. Agar tes ini tidak dilewati, kami akan menambahkan grup sementara dan membuat pengguna tak seorangpun sebagian darinya:
echo "dummy:x:1000:nobody" >> /etc/group
echo "dummy:x:1000:nobody" >> /etc/group
Perbaiki beberapa izin sehingga pengguna non-root dapat mengompilasi dan menjalankan pengujian:
chown -Rv tidak ada.
chown -Rv tidak ada.
Sekarang jalankan tes. Pastikan PATH di su lingkungan termasuk /tools/bin.
su tidak ada -s /bin/bash \
-c "PATH=$PATH buat RUN_EXPENSIVE_TETS=ya periksa"
su tidak ada -s /bin/bash \
-c "PATH=$PATH buat RUN_EXPENSIVE_TETS=ya periksa"
Program pengujian test-getlogin diketahui gagal di lingkungan sistem yang dibangun sebagian seperti lingkungan chroot di sini, tetapi lolos jika dijalankan di akhir bab ini. Program pengujian tty.sh juga diketahui gagal.
Hapus grup sementara:
sed -i '/dummy/d' /etc/group
sed -i '/dummy/d' /etc/group
Instal paket:
make install
make install
Pindahkan program ke lokasi yang ditentukan oleh FHS:
mv -v /usr/bin/{cat,chgrp,chmod,chown,cp,date,dd,df,echo} /bin mv -v /usr/bin/{false,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/{false,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
Beberapa skrip dalam paket LFS-Bootscripts bergantung pada kepala, bagus, tidur, dan menyentuh. Sebagai / usr mungkin tidak tersedia selama tahap awal dan akhir boot, binari tersebut harus berada di partisi root untuk menjaga kepatuhan FHS:
mv -v /usr/bin/{kepala,bagus,tidur,sentuh} /bin
mv -v /usr/bin/{kepala,bagus,tidur,sentuh} /bin