it-swarm-id.com

Kesulitan membuat paket perpustakaan

Saya mengalami masalah saat membuat paket untuk perpustakaan bersama.

Saya menjalankan dh_make dan mengedit file. Namun, ketika saya pergi untuk membangun paket, saya mendapatkan yang berikut:

 ****** @ ****** - laptop: ~/Documents/temp/jsoncpp/jsoncpp-0.5.0 $ debuild 
 dpkg-buildpackage -rfakeroot -D -us -uc 
 dpkg-buildpackage: atur CFLAGS ke nilai default: -g -O2 
 dpkg-buildpackage: atur CPPFLAGS ke nilai default: 
 dpkg-buildpackage: atur LDFLAGS ke nilai default : -Wl, -Bsymbolic-functions 
 Dpkg-buildpackage: set FFLAGS ke nilai default: -g -O2 
 Dpkg-buildpackage: set CXXFLAGS ke nilai default: -g -O2 
 dpkg-buildpackage: paket sumber jsoncpp 
 dpkg-buildpackage: sumber versi 0.5.0-1 
 dpkg-buildpackage: sumber diubah oleh ****** 
 dpkg-buildpackage : Arsitektur host AMD64 
 Fakeroot debian/aturan clean 
 Dh clean 
 Dh_testdir 
 Dh_auto_clean 
 Dh_clean 
 Dpkg-source -b jsoncpp -0.5.0 
 Dpkg-source: info: using format sumber `1.0 '
 Dpkg-source: info: membangun jsoncpp dengan menggunakan jsoncpp_0.5.0.orig.tar.gz 
 dpkg-source: info: building jsoncpp di jsoncpp_0.5. 0-1.diff.gz 
 Dpkg-source: info: building jsoncpp di jsoncpp_0.5.0-1.dsc 
 Debian/aturan build 
 Dh build 
 Dh_testdir 
 dh_auto_configure 
 dh_auto_build 
 make [1]: Memasuki direktori `/home/******/Documents/temp/jsoncpp/jsoncpp-0.5.0'
 test -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_writer.o src /lib_json/json_writer.cpp[.____.[g++ -I ./include -c -o obj/json_value.o src/lib_json/json_value.cpp 
 ar -r libjsoncpp.a obj/json_reader.o obj /json_writer.o obj/json_value.o 
 ar: membuat libjsoncpp.a 
 make [1]: Meninggalkan direktori `/ home/******/Documents/temp/jsoncpp/jsoncpp -0.5.0 '
 Dh_auto_test 
 Fakeroot debian/rules binary 
 Dh binary 
 Dh_testroot 
 Dh_prep 
 Dh_installdirs 
 dh_auto_install 
 make [1]: Memasuki direktori `/home/******/Documents/temp/jsoncpp/jsoncpp-0.5.0'[.____.[Sudo cp -r termasuk/json - -target-directory =/usr/include 
 ERROR: ld.so: object 'libfakeroot-sysv.so' dari LD_PRELOAD tidak dapat dimuat sebelumnya: diabaikan. 
 cp libjsoncpp.a/usr/lib/libjsoncpp.a 
 cp: tidak dapat membuat file biasa `/usr/lib/libjsoncpp.a ': Izin ditolak 
 buat [1]: *** [i nstall] Kesalahan 1 
 make [1]: Meninggalkan direktori `/home/******/Documents/temp/jsoncpp/jsoncpp-0.5.0'[.____.[dh_auto_install: make -j1 install DESTDIR =/home/******/Dokumen/temp/jsoncpp/jsoncpp-0.5.0/debian/tmp mengembalikan kode keluar 2 
 Membuat: *** [biner] Kesalahan 29 
 dpkg-buildpackage: error: fakeroot debian/rules binary memberikan status keluar kesalahan 2 
 debuild: fatal fatal pada baris 1340: 
 dpkg-buildpackage -rfakeroot -D -us -us -uc gagal 

Masalahnya tampaknya ada di sini:

GALAT: ld.so: objek 'libfakeroot-sysv.so' dari LD_PRELOAD tidak dapat dimuat sebelumnya: diabaikan.
cp libjsoncpp.a /usr/lib/libjsoncpp.a
cp: tidak dapat membuat file biasa `/usr/lib/libjsoncpp.a ': Izin ditolak

... tapi saya tidak tahu apa masalahnya.

Makefile adalah di sini jika diperlukan.

7
Nathan Osman

Makefile yang Anda gunakan tidak menghormati variabel DESTDIR - paket tidak boleh diinstal secara langsung ke/usr pada waktu build, tetapi sebaliknya meletakkan file ke dalam pohon sementara. Anda telah menyebutkan bahwa Anda menambahkan Makefile sendiri - kasus yang biasa adalah Anda harus membuatnya menggunakan variabel DESTDIR sebagai awalan untuk semua jalur instal. Setelah melihat instruksi pembuatan paket, paket menggunakan scon sebagai sistem pembuatan, yang merupakan pengganti barang. dh_make kemungkinan besar tidak memiliki templat untuk membuat paket dengan ini, jadi Anda harus mencari paket yang menggunakannya untuk membangun, seperti yafray, dan lihat debian/aturan mereka

Karena paket build tidak pernah dilakukan sebagai root, lebih baik kesalahan ini ditampilkan & dikoreksi daripada memiliki paket yang menimpa file-file penting karena paket sedang dibangun di atas sistem pengembang yang tidak curiga.

4
ajmitch

Seperti yang Anda pikirkan, masalahnya ada di sini:

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

Anda memanggil debbuild sebagai pengguna normal, yang tidak memiliki hak untuk menulis ke direktori itu. Jika Anda mencoba Sudo debbuild itu akan berfungsi.

0
qbi