Сбой dpkg при запуске C ++, но не при вызове из командной строки - PullRequest
0 голосов
/ 10 ноября 2011

В настоящее время я разрабатываю на 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

Но все работает хорошо с тем же файлом .deb, если я делаю dpkg -i /tmp/sqlite3_0.8-1_arm.deb из командной строки ...

У вас есть представление о том, что может вызвать эту проблему?

Заранее спасибо!

...