0

現在、Linux ディストリビューションの一部のパッケージを更新するソフトウェアを C++ で開発しています (Busybox が提供する dpkg を使用)。

いくつかのファイルをダウンロードし、MD5 チェックサムをチェックして、dpkg -i を使用してインストールするだけです。

dpkg を実行するコードは

stringstream packetcmdstream;
packetcmdstream << "dpkg -i " << filename;
string packetcmd = packetcmdstream.str();
int success = system(packetcmd.c_str());

問題は、次のような同じ奇妙なエラーで失敗することです。

Preparing to replace sqlite3 0.8-1 (using /tmp/sqlite3_0.8-1_arm.deb)...
dpkg: can't remove old file /usr/lib/libsqlite3.so.0: Directory not empty

しかし、コマンドラインから dpkg -i /tmp/sqlite3_0.8-1_arm.deb を実行すると、同じ .deb ファイルですべてがうまく機能します...

この問題の原因について何か考えはありますか?

前もって感謝します !

4

0 に答える 0