dpkg在由C ++启动时失败,但在从命令行调用时则失败

时间:2011-11-10 10:53:38

标签: c++ linux command-line dpkg

我目前正在用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文件...

您对可能导致此问题的原因有所了解吗?

提前致谢!

0 个答案:

没有答案