我目前正在用C ++开发一个软件,它可以更新Linux发行版上的一些软件包(使用由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文件...
您对可能导致此问题的原因有所了解吗?
提前致谢!