現在、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 ファイルですべてがうまく機能します...
この問題の原因について何か考えはありますか?
前もって感謝します !