it-swarm-ko.tech

라이브러리 패키지 작성시 문제점

공유 라이브러리 용 패키지를 만드는 데 문제가 있습니다.

나는 dh_make하고 파일을 편집했습니다. 그러나 패키지를 만들 때 다음을 얻습니다.

 ****** @ ******-노트북 : ~/Documents/temp/jsoncpp/jsoncpp-0.5.0 $ debuild 
 dpkg-buildpackage -rfakeroot -D -us -uc 
 dpkg-buildpackage : CFLAGS를 기본값으로 설정 : -g -O2 
 dpkg-buildpackage : CPPFLAGS를 기본값으로 설정 : 
 dpkg-buildpackage : LDFLAGS를 기본값으로 설정 : -Wl, -Bsymbolic-functions 
 dpkg-buildpackage : FFLAGS를 기본값으로 설정하십시오 : -g -O2 
 dpkg-buildpackage : CXXFLAGS를 기본값으로 설정하십시오 : -g -O2 
 dpkg-buildpackage : 소스 패키지 jsoncpp 
 dpkg-buildpackage : 소스 버전 0.5.0-1 
 dpkg-buildpackage : ****** 
 dpkg-buildpackage에 의해 소스가 변경됨 : 호스트 아키텍처 AMD64 
 fakeroot debian/rules clean 
 dh clean 
 dh_testdir 
 dh_auto_clean 
 dh_clean 
 dpkg-source -b jsoncpp -0.5.0 
 dpkg-source : info : 소스 형식`1.0 '
 dpkg-source : info : 기존 jsoncpp_0.5.0.orig.tar.gz 
를 사용하여 jsoncpp 빌드 dpkg-source : 정보 : jsoncpp_0.5에 jsoncpp 빌드 0-1.diff.gz 
 dpkg-source : info : jsoncpp_0.5.0-1.dsc 
에 jsoncpp 빌드 debian/rules build 
 dh build 
 dh_testdir 
 dh_auto_configure 
 dh_auto_build 
 make [1] :`/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 : libjsoncpp.a 
 make [1] 작성 :`/ home/******/Documents/temp/jsoncpp/jsoncpp 디렉토리 떠나기 -0.5.0 '
 dh_auto_test 
 fakeroot 데비안/규칙 바이너리 
 dh 바이너리 
 dh_testroot 
 dh_prep 
 dh_installdirs 
 dh_auto_install 
 make [1] : 디렉토리`/home/******/Documents/temp/jsoncpp/jsoncpp-0.5.0'
Sudo cp -r include/json- -target-directory =/usr/include 
 오류 : ld.so : LD_PRELOAD의 'libfakeroot-sysv.so'개체를 미리로드 할 수 없습니다. 무시됩니다. 
 cp libjsoncpp.a/usr/lib/libjsoncpp.a 
 cp : 일반 파일`/usr/lib/libjsoncpp.a '를 생성 할 수 없습니다 : 권한 거부 
 make [1] : *** [i nstall] 오류 1 
 make [1] :`/home/******/Documents/temp/jsoncpp/jsoncpp-0.5.0'
dh_auto_install 디렉토리 만들기 : -j1 설치 DESTDIR =/home/******/Documents/temp/jsoncpp/jsoncpp-0.5.0/debian/tmp가 종료 코드 2 
 make를 리턴했습니다. *** [binary] 오류 29 
 dpkg-buildpackage : 오류 : fakeroot debian/rules 바이너리에서 오류 종료 상태 2 
를 제공함 debuild : 1340 행의 치명적 오류 : 
 dpkg-buildpackage -rfakeroot -D -us -uc failed 

문제는 여기에있는 것 같습니다 :

오류 : ld.so : LD_PRELOAD의 'libfakeroot-sysv.so'개체를 미리로드 할 수 없습니다. 무시됩니다.
cp libjsoncpp.a /usr/lib/libjsoncpp.a
cp : 일반 파일`/usr/lib/libjsoncpp.a '를 만들 수 없습니다 : 권한이 거부되었습니다

...하지만 문제가 무엇인지에 대한 가장 확실한 아이디어는 아닙니다.

필요한 경우 makefile은 here 입니다.

7
Nathan Osman

사용중인 Makefile은 DESTDIR 변수를 고려하지 않습니다. 패키지는 빌드 타임에/usr에 직접 설치하지 말고 대신 임시 트리에 파일을 넣어야합니다. 앞서 Makefile을 직접 추가했다고 언급했다. 일반적인 경우는 DESTDIR 변수를 모든 설치 경로의 접두사로 사용해야한다는 것이다. 패키지 빌드 지시 사항을 살펴보면, 패키지는 scons를 빌드 시스템으로 사용하는데, 이는 일종의 대체품입니다. dh_make는 이것으로 패키지를 빌드하기위한 템플릿을 가지고 있지 않을 가능성이 높으므로 yafray와 같이 빌드에 사용하는 패키지를 찾고 데비안/규칙을 살펴보십시오

패키지 빌드는 루트로 수행되지 않으므로 패키지가 의심되지 않는 개발자 시스템에서 빌드되므로 패키지가 중요한 파일을 덮어 쓰는 대신이 오류를 표시하고 수정하는 것이 좋습니다.

4
ajmitch

당신이 문제를 알았을 때 여기에 있습니다 :

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

해당 디렉토리에 쓸 권한이없는 일반 사용자로 debbuild을 (를) 호출하고 있습니다. Sudo debbuild를 시도하면 작동합니다.

0
qbi