<Trước | Nội dung | Tiếp theo>
6.9.1. Cài đặt Glibc
Lưu ý
Hệ thống xây dựng Glibc là độc lập và sẽ cài đặt hoàn hảo, mặc dù tệp thông số kỹ thuật của trình biên dịch và trình liên kết vẫn đang trỏ tới /công cụ. Không thể điều chỉnh các thông số kỹ thuật và trình liên kết trước khi cài đặt Glibc vì các thử nghiệm autoconf của Glibc sẽ cho kết quả sai và không đạt được mục tiêu đạt được một bản dựng sạch sẽ.
Lưu ý
Hệ thống xây dựng Glibc là độc lập và sẽ cài đặt hoàn hảo, mặc dù tệp thông số kỹ thuật của trình biên dịch và trình liên kết vẫn đang trỏ tới /công cụ. Không thể điều chỉnh các thông số kỹ thuật và trình liên kết trước khi cài đặt Glibc vì các thử nghiệm autoconf của Glibc sẽ cho kết quả sai và không đạt được mục tiêu đạt được một bản dựng sạch sẽ.
Một số chương trình Glibc sử dụng quy định không phải của FHS / var / db thư mục để lưu trữ dữ liệu thời gian chạy của chúng. Áp dụng bản vá sau để làm cho các chương trình như vậy lưu trữ dữ liệu thời gian chạy của chúng ở các vị trí tuân thủ FHS:
bản vá -Np1 -i ../glibc-2.30-fhs-1.patch
bản vá -Np1 -i ../glibc-2.30-fhs-1.patch
Khắc phục sự cố được giới thiệu với nhân linux-5.2:
sed -i '/asm.socket.h/a# bao gồm '\ sysdeps / unix / sysv / linux / bits / socket.h
sed -i '/asm.socket.h/a# bao gồm '\ sysdeps / unix / sysv / linux / bits / socket.h
-sfv
-sfv
-sfv
-sfv
../lib/ld-linux-x86-64.so.2 / lib64
../lib/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3
../lib/ld-linux-x86-64.so.2 / lib64
../lib/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3
Tạo liên kết biểu tượng để tuân thủ LSB. Ngoài ra, đối với x86_64, hãy tạo một liên kết tượng trưng tương thích cần thiết để trình tải động hoạt động chính xác:
trường hợp $ (uname -m) trong
trường hợp $ (uname -m) trong
tôi? 86) ln
;;
x86_64) trong
ln
;;
nó C
-sfv
ld-linux.so.2 /lib/ld-lsb.so.3
tôi? 86) ln
;;
x86_64) trong
ln
;;
nó C
Tài liệu Glibc khuyên bạn nên xây dựng Glibc trong một thư mục xây dựng chuyên dụng:
mkdir -v xây dựng cd xây dựng
mkdir -v xây dựng cd xây dựng
Chuẩn bị Glibc để biên dịch:
CC = "gcc -ffile-prefix-map = / tools = / usr" \
../configure --prefix = / usr
--disable-werror
--enable-kernel = 3.2
--enable-stack-protectionor = strong
--with-headers = / usr / include libc_cv_slibdir = / lib
\
\
\
\
\
CC = "gcc -ffile-prefix-map = / tools = / usr" \
../configure --prefix = / usr
--disable-werror
--enable-kernel = 3.2
--enable-stack-protectionor = strong
--with-headers = / usr / include libc_cv_slibdir = / lib
Ý nghĩa của các tùy chọn và thông số cấu hình mới:
CC = "gcc -ffile-prefix-map = / tools = / usr"
Làm cho GCC ghi lại bất kỳ tham chiếu nào đến các tệp trong / công cụ do kết quả của quá trình biên dịch như thể các tệp nằm trong / usr. Điều này tránh đưa vào các đường dẫn không hợp lệ trong các ký hiệu gỡ lỗi.
--disable-werror
Tùy chọn này vô hiệu hóa tùy chọn -Werror được chuyển đến GCC. Điều này là cần thiết để chạy bộ thử nghiệm.
--enable-stack-protectionor = strong
Tùy chọn này tăng tính bảo mật của hệ thống bằng cách thêm mã bổ sung để kiểm tra lỗi tràn bộ đệm, chẳng hạn như các cuộc tấn công đập ngăn xếp.
--with-headers = / usr / include
Tùy chọn này cho hệ thống xây dựng biết nơi tìm các tiêu đề API hạt nhân. Theo mặc định, những tiêu đề đó được tìm kiếm trong
/ công cụ / bao gồm.
libc_cv_slibdir = / lib
Biến này đặt thư viện chính xác cho tất cả các hệ thống. Chúng tôi không muốn lib64 được sử dụng.
Biên dịch gói:
làm cho
làm cho
Quan trọng
Trong phần này, bộ thử nghiệm cho Glibc được coi là rất quan trọng. Đừng bỏ qua nó trong bất kỳ hoàn cảnh nào.
Quan trọng
Trong phần này, bộ thử nghiệm cho Glibc được coi là rất quan trọng. Đừng bỏ qua nó trong bất kỳ hoàn cảnh nào.
/ lib ;;
/ lib ;;
-sfnv $ PWD / elf / ld-linux-x86-64.so.2 / lib ;;
-sfnv $ PWD / elf / ld-linux-x86-64.so.2 / lib ;;
Nói chung một số bài kiểm tra không vượt qua. Các lỗi thử nghiệm được liệt kê dưới đây thường an toàn để bỏ qua.
case $ (uname i? 86) ln x86_64) ln
nó C
-m) trong
-sfnv $ PWD / elf / ld-linux.so.2
case $ (uname i? 86) ln x86_64) ln
nó C
Lưu ý
Liên kết tượng trưng ở trên là cần thiết để chạy các bài kiểm tra ở giai đoạn xây dựng này trong môi trường chroot. Nó sẽ được ghi đè trong giai đoạn cài đặt bên dưới.
Lưu ý
Liên kết tượng trưng ở trên là cần thiết để chạy các bài kiểm tra ở giai đoạn xây dựng này trong môi trường chroot. Nó sẽ được ghi đè trong giai đoạn cài đặt bên dưới.
kiểm tra
kiểm tra
Bạn có thể thấy một số lỗi thử nghiệm. Bộ thử nghiệm Glibc hơi phụ thuộc vào hệ thống máy chủ. Đây là danh sách các sự cố thường gặp nhất đối với một số phiên bản của LFS:
• misc / tst-ttyname được biết là không thành công trong môi trường chroot LFS.
• inet / tst-idna_name_classify được biết là không thành công trong môi trường chroot LFS.
• posix / tst-getaddrinfo4 và posix / tst-getaddrinfo5 có thể bị lỗi trên một số kiến trúc.
• Các nss / tst-nss-files-hosts-multi thử nghiệm có thể thất bại vì những lý do chưa được xác định.
• Các rt / tst-cputimer {1,2,3} kiểm tra phụ thuộc vào nhân hệ thống máy chủ. Các nhân 4.14.91–4.14.96, 4.19.13–4.19.18 và 4.20.0–4.20.5 được biết là nguyên nhân khiến các thử nghiệm này không thành công.
• Các bài kiểm tra toán học đôi khi không thành công khi chạy trên các hệ thống mà CPU không phải là bộ xử lý Intel hoặc AMD tương đối mới.
Mặc dù đó là một thông báo vô hại, giai đoạn cài đặt của Glibc sẽ phàn nàn về việc không có /etc/ld.so.conf. Ngăn chặn cảnh báo này bằng:
chạm vào /etc/ld.so.conf
chạm vào /etc/ld.so.conf
Khắc phục Makefile đã tạo để bỏ qua kiểm tra sự tỉnh táo không cần thiết bị lỗi trong môi trường một phần LFS:
sed '/ test-install / s @ $ (PERL) @echo không chạy @' -i ../Makefile
sed '/ test-install / s @ $ (PERL) @echo không chạy @' -i ../Makefile
Cài đặt gói:
thực hiện cài đặt
thực hiện cài đặt
Cài đặt tệp cấu hình và thư mục thời gian chạy cho nscd:
cp -v ../nscd/nscd.conf /etc/nscd.conf mkdir -pv / var / cache / nscd
cp -v ../nscd/nscd.conf /etc/nscd.conf mkdir -pv / var / cache / nscd
Tiếp theo, cài đặt các ngôn ngữ có thể làm cho hệ thống phản hồi bằng một ngôn ngữ khác. Không có ngôn ngữ nào được yêu cầu, nhưng nếu thiếu một số ngôn ngữ trong số chúng, các bộ thử nghiệm của các gói trong tương lai sẽ bỏ qua các tủ thử nghiệm quan trọng.
Các ngôn ngữ riêng lẻ có thể được cài đặt bằng cách sử dụng localdef chương trình. Vd: cái đầu tiên localdef lệnh dưới đây kết hợp / usr / share / i18n / locales / cs_CZ định nghĩa ngôn ngữ không phụ thuộc vào bộ ký tự với / usr / share / i18n / charmaps / UTF-8.gz định nghĩa charmap và gắn kết quả vào / usr / lib / locale / locale- archive tập tin. Các hướng dẫn sau sẽ cài đặt bộ ngôn ngữ tối thiểu cần thiết cho phạm vi kiểm tra tối ưu:
mkdir -pv / usr / lib / locale
localedef -i POSIX -f UTF-8 C.UTF-8 2> / dev / null || true localedef -i cs_CZ -f UTF-8 cs_CZ.UTF-8
localedef -i de_DE -f ISO-8859-1 de_DE
localedef -i de_DE @ euro -f ISO-8859-15 de_DE @ euro localedef -i de_DE -f UTF-8 de_DE.UTF-8
localedef -i el_GR -f ISO-8859-7 el_GR localedef -i en_GB -f UTF-8 en_GB.UTF-8 localedef -i en_HK -f ISO-8859-1 en_HK localedef -i en_PH -f ISO-8859-1 en_PH localedef -i en_US -f ISO-8859-1 en_US localedef -i en_US -f UTF-8 en_US.UTF-8 localedef -i es_MX -f ISO-8859-1 es_MX localedef -i fa_IR -f UTF-8 fa_IR localedef - i fr_FR -f ISO-8859-1 fr_FR
localedef -i fr_FR @ euro -f ISO-8859-15 fr_FR @ euro localedef -i fr_FR -f UTF-8 fr_FR.UTF-8
localedef -i it_IT -f ISO-8859-1 it_IT localedef -i it_IT -f UTF-8 it_IT.UTF-8 localedef -i ja_JP -f EUC-JP ja_JP
localedef -i ja_JP -f SHIFT_JIS ja_JP.SIJS 2> / dev / null || true localedef -i ja_JP -f UTF-8 ja_JP.UTF-8
localedef -i ru_RU -f KOI8-R ru_RU.KOI8-R localedef -i ru_RU -f UTF-8 ru_RU.UTF-8 localedef -i tr_TR -f UTF-8 tr_TR.UTF-8 localedef -i zh_CN -f GB18030 zh_CN .GB18030
localedef -i zh_HK -f BIG5-HKSCS zh_HK.BIG5-HKSCS
Ngoài ra, hãy cài đặt ngôn ngữ cho quốc gia, ngôn ngữ và bộ ký tự của riêng bạn.
Ngoài ra, hãy cài đặt tất cả các ngôn ngữ được liệt kê trong glibc-2.30 / localedata / ĐƯỢC HỖ TRỢ tệp (nó bao gồm mọi ngôn ngữ được liệt kê ở trên và nhiều ngôn ngữ khác) cùng một lúc bằng lệnh tốn thời gian sau:
tạo dữ liệu cục bộ / cài đặt-ngôn ngữ
tạo dữ liệu cục bộ / cài đặt-ngôn ngữ
Sau đó sử dụng localdef lệnh để tạo và cài đặt các ngôn ngữ không được liệt kê trong glibc-2.30 / localedata / ĐƯỢC HỖ TRỢ trong trường hợp không chắc bạn cần chúng.
Lưu ý
Glibc hiện sử dụng libidn2 khi phân giải các tên miền quốc tế hóa. Đây là một sự phụ thuộc vào thời gian chạy. Nếu khả năng này là cần thiết, hướng dẫn cài đặt libidn2 có trong trang BLFS libidn2.
Lưu ý
Glibc hiện sử dụng libidn2 khi phân giải các tên miền quốc tế hóa. Đây là một sự phụ thuộc vào thời gian chạy. Nếu khả năng này là cần thiết, hướng dẫn cài đặt libidn2 có trong trang BLFS libidn2.
<Trước | Nội dung | Tiếp theo>