共有ライブラリのパッケージを作成するのに問題があります。
dh_make
を実行し、ファイルを編集しました。ただし、パッケージをビルドすると、次の結果が得られます。
****** @ ******-laptop:〜/ 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:info:jsoncpp_0.5でjsoncppを構築しています。 0-1.diff.gz dpkg-source:情報: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 debian/rules binary dh binary 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を終了:make -j1 install DESTDIR =/home/******/Documents/temp/jsoncpp/jsoncpp-0.5.0/debian/tmpが終了コード2 makeを返しました:*** [バイナリ]エラー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 'を作成できません:許可が拒否されました
...しかし、私は問題が何であるか微妙な考えを持っていません。
必要に応じて、メイクファイルは here です。
使用しているMakefileはDESTDIR変数を考慮していません-ビルド時にパッケージを/ usrに直接インストールするのではなく、一時ツリーにファイルを配置する必要があります。 Makefileを自分で追加したことは既に述べましたが、通常は、すべてのインストールパスのプレフィックスとしてDESTDIR変数を使用する必要があります。パッケージのビルド手順を確認すると、パッケージはビルドシステムとしてsconsを使用します。これは、makeのソートの代わりになります。 dh_makeにはおそらくこれでパッケージをビルドするためのテンプレートがないので、yafrayなどのビルドに使用するパッケージを探し、debian/rulesを見てください
パッケージのビルドは決してrootとして行われないため、疑いを持たない開発者のシステムでパッケージをビルドする際に、パッケージで重要なファイルを上書きするよりも、このエラーを表示して修正する方が適切です。
問題を理解したように、ここにあります:
cp libjsoncpp.a /usr/lib/libjsoncpp.a
debbuild
を通常のユーザーとして呼び出していますが、そのユーザーはそのディレクトリに書き込む権限がありません。 Sudo debbuild
を試せばうまくいくはずです。