我目前正在用 C++ 开发一个软件,它可以更新 Linux 发行版上的一些软件包(使用 dpkg,由 Busybox 提供)。
它所做的只是下载一些文件,检查它们的 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 文件......
您是否知道可能导致此问题的原因?
提前致谢 !