it-swarm-vi.com

Sự cố khi tạo gói thư viện

Tôi gặp một số khó khăn khi tạo một gói cho một thư viện chia sẻ.

Tôi đã chạy dh_make và chỉnh sửa các tệp. Tuy nhiên, khi tôi đi xây dựng gói, tôi nhận được như sau:

[.__.] ****** @ ****** - máy tính xách tay: ~/Documents/temp/jsoncpp/jsoncpp-0.5.0 $ debuild [.__.] dpkg-buildpackage -rfakeroot -D -us -uc [.__.] dpkg-buildpackage: đặt CFLAGS thành giá trị mặc định: -g -O2 [.__.] dpkg-buildpackage: đặt CPPFLAGS thành giá trị mặc định: [.__.] dpkg-buildpackage: đặt LDFLAGS thành giá trị mặc định : -Wl, -Bsymbolic-Hàm [.__.] Dpkg-buildpackage: đặt FFLAGS thành giá trị mặc định: -g -O2 [.__.] Dpkg-buildpackage: đặt CXXFLAGS thành giá trị mặc định: -g -O2 [.__. ] dpkg-buildpackage: gói nguồn jsoncpp [.__.] dpkg-buildpackage: phiên bản nguồn 0.5.0-1 [.__.] dpkg-buildpackage: nguồn thay đổi bởi ****** [.__.] dpkg-buildpackage : Kiến trúc máy chủ AMD64 [.__.] Fakeroot debian/quy tắc sạch [.__.] Dh sạch [.__.] Dh_testdir [.__.] Dh_auto_clean [.__.] Dh_clean [.__.] Dpkg-source -b jsoncpp -0.5.0 [.__.] Dpkg-source: thông tin: sử dụng định dạng nguồn `1.0 '[.__.] Dpkg-source: thông tin: xây dựng jsoncpp bằng jsoncpp_0.5.0.orig.tar.gz [.__.] dpkg-source: thông tin: xây dựng jsoncpp trong jsoncpp_0.5. 0-1.diff.gz [.__.] Dpkg-source: thông tin: xây dựng jsoncpp trong jsoncpp_0.5.0-1.dsc [.__.] Debian/quy tắc xây dựng [.__.] Dh build [.__.] Dh_testdir [.__.] dh_auto_ thông minh [.__.] dh_auto_build [.__.] make [1]: Nhập thư mục `/home/******/Document/temp/jsoncpp/jsoncpp-0.5.0'[.__ .] kiểm tra -d obj | | mkdir obj [.__.] g ++ -I ./include -c -o obj/json_reader.o src/lib_json/json_reader.cpp [.__.] g ++ -I ./include -c -o obj/json_wr. /lib_json/json_writer.cpp[.__.[g++ -I ./include -c -o obj/json_value.o src/lib_json/json_value.cpp [.__.] ar -r libjsoncpp.a /json_writer.o obj/json_value.o [.__.] ar: tạo libjsoncpp.a [.__.] make [1]: Rời khỏi thư mục `/ home/******/Documents/temp/jsoncpp/jsoncpp -0.5.0 '[.__.] Dh_auto_test [.__.] Fakeroot debian/quy tắc nhị phân [.__.] Dh nhị phân [.__.] Dh_testroot [.__.] Dh_prep [.__.] Dh_installdirs [.__. ] dh_auto_install [.__.] make [1]: Nhập thư mục `/home/******/Document/temp/jsoncpp/jsoncpp-0.5.0'[.__.THERSudo cp -r bao gồm/json - -target-thư mục =/usr/bao gồm [.__.] ERROR: ld.so: object 'libfakeroot-sysv.so' từ LD_PRELOAD không thể tải trước: bị bỏ qua. [.__.] cp libjsoncpp.a/usr/lib/libjsoncpp.a [.__.] cp: không thể tạo tệp thông thường `/usr/lib/libjsoncpp.a ': Quyền bị từ chối [.__.] make [1]: *** [i nstall] Lỗi 1 [.__.] make [1]: Rời khỏi thư mục `/home/******/Document/temp/jsoncpp/jsoncpp-0.5.0'[.__.[dh_auto_install: make -j1 install DESTDIR =/home/******/Documents/temp/jsoncpp/jsoncpp-0.5.0/debian/tmp trả về mã thoát 2 [.__.] Make: *** [binary] Lỗi 29 [.___ ] dpkg-buildpackage: error: fakeroot debian/quy tắc nhị phân đưa ra trạng thái thoát lỗi 2 [.__.] debuild: lỗi nghiêm trọng ở dòng 1340: [.__.] dpkg-buildpackage -rfakeroot -D -us -uc fail .]

Vấn đề dường như ở đây:

LRI: ld.so: object 'libfakeroot-sysv.so' từ LD_PRELOAD không thể tải trước: bỏ qua.
[.__.] cp libjsoncpp.a /usr/lib/libjsoncpp.a
[.__.] cp: không thể tạo tệp thông thường `/usr/lib/libjsoncpp.a ': Quyền bị từ chối

... nhưng tôi không biết rõ vấn đề là gì.

Makefile là ở đây nếu cần.

7
Nathan Osman

Makefile bạn đang sử dụng không tôn trọng biến DESTDIR - các gói không bao giờ nên cài đặt trực tiếp vào/usr khi xây dựng mà thay vào đó đặt các tệp vào cây tạm thời. Bạn đã đề cập rằng bạn đã tự thêm Makefile - trường hợp thông thường là bạn cần làm cho nó sử dụng biến DESTDIR làm tiền tố cho tất cả các đường dẫn cài đặt. Đã xem các hướng dẫn xây dựng gói, gói sử dụng scons như một hệ thống xây dựng, là sự thay thế của các loại để thực hiện. dh_make rất có thể không có mẫu để xây dựng các gói với cái này, vì vậy bạn nên tìm các gói sử dụng nó để xây dựng, chẳng hạn như yafray và xem xét các quy tắc/debian của chúng

Vì các bản dựng gói không bao giờ được thực hiện dưới quyền root, tốt hơn là nên hiển thị và sửa lỗi này thay vì gói ghi đè lên các tệp quan trọng vì gói đang được xây dựng trên hệ thống của nhà phát triển không nghi ngờ.

4
ajmitch

Như bạn đã tìm ra vấn đề nằm ở đây:

cp libjsoncpp.a /usr/lib/libjsoncpp.a

Bạn đang gọi debbuild như người dùng bình thường, người không có quyền ghi vào thư mục đó. Nếu bạn thử Sudo debbuild nó sẽ hoạt động.

0
qbi