В настоящее время я разрабатываю на 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 из командной строки ...
У вас есть представление о том, что может вызвать эту проблему?
Заранее спасибо!