Как прервать установку deb-пакета, если на диске недостаточно места

Я разрабатываю программу взлома для iPhone. Когда места на диске не хватает, установка все равно продолжится, при этом часть файлов скопировалась, а остальные нет, из-за этого диск загрязняется.

Я написал код проверки дискового пространства в сценариях preinst и prerm, которые являются управляющими файлами пакета deb. Когда места на диске недостаточно, управляющие сценарии завершатся с ненулевым кодом. Но проблема в том, что когда мы обновляем пакет, если места на диске недостаточно, dpkg все равно удалит старые файлы, даже если сценарий prerm выйдет с ненулевым статусом, поэтому обновление становится удалением, что не является ожидаемым результатом.


person moligaloo    schedule 12.04.2012    source источник


Ответы (1)


Я мало что знаю о Cydia, но если она работает точно так же, как dpkg, то это должно быть решаемо. См. диаграмму активности обновлений пакетов по адресу http://people.debian.org/~srivasta/MaintainerScripts.html#sec-3.4.3 .

Это показывает несколько различных путей, по которым можно было бы пойти в ходе запуска prerms и preinsts, которые вернут систему в чистое состояние, в котором все еще установлена ​​старая версия. Например, если new-preinst завершится ошибкой, то new-postrm будет запущен с параметром «abort-upgrade». Если это удастся, то старый-постинст также запустится с «abort-upgrade». И если это удастся, вы вернетесь в чистое установленное состояние.

person the paul    schedule 08.05.2012