Summary: | apt-* should test current working directory for existence and abort instantly when the check fails | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Peter V. Saveliev <peet> |
Component: | apt | Assignee: | Gleb F-Malinovskiy <glebfm> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P2 | CC: | at, boyarsh, cas, evg, glebfm, imz, ldv |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
Peter V. Saveliev
2007-05-01 11:30:20 MSD
Не надо запускать программы типа apt-cache из несуществующих каталогов, тем более что диагностика apt-cache оказалась более-менее понятной. Мне кажется неразумным добавлять chdir("/") во все программы. Некоторые, в т.ч. и apt-cache, принимают в качестве параметров пути к файлам, поэтому chdir("/") для них неприемлем. Дим, а он может просто выйти после "no absolute path for the current directory: Нет такого файла или каталога"? Даже не так. Можно ли в apt-get, apt-cache в _самое_ начало вкрутить проверку условий (несуществующая директория, неверная операция, и т.п.)? И в случае ошибки выходить? А не считать всю базу, а потом говорить "неверная операция serach" или, как тут, отдавать rpmdb на откуп проверку текущей директории? Это раз, и два -- oldpwd=pwd(); chdir("/") -- и работай сколько хочешь с путями файлов в параметрах, но при этом находясь в гарантированном месте. Нету места более гарантированного. Я вот чего не понимаю: почему возникло желание добавлять проверку именно в apt-get, а не в каждую программу, прямо или косвенно использующую текущий каталог? Почему, в конечном итоге, это лучше чем заблаговременно выполненный "cd /", или, как заведено у демонов, chdir("/")? Потому что пользовательские программы пишут для пользователей, а не для андроидов. Вразумительный репорт не должен (пусть косвенно) дезынформировать -- первая мысль, которая приходит в голову, глядя на репорт о том, что apt не может найти/открыть rpmdb -- это то, что rpmdb грохнулась нафик. Потому что apt -- одна из ключевых программ проектов ALT. И с её поведением встречается каждый, кто использует наши проекты. Чорт возьми, потому что у нас каждая первая ключевая программа возвращает ошибки в таком виде, что их только андроиды понять способны (hsh тому пример -- на очереди...). И это не в последнюю очередь влияет на мнение пользователей. И если кто-то оценивает в первую очередь по функционалу, а не по дружелюбности интерфейса -- хорошо, но для кого-то вразумительная диагностика такой же функционал. Пользователи, которые не в состоянии понять диагностику "no absolute path for the current directory: Нет такого файла или каталога", обычно не умеют запускать программы из удалённых каталогов. Ну и, наконец, рабочий каталог может быть удалён прямо во время работы процесса. Ошибка не в том что диагностика недостаточна. Ошибка в том, что после этой ошибки он не вываливается немедленно, а продолжает пытаться работать и выводит ещё 3 _неправильных_ сообщения об ошибке. apt-* should test current working directory for existence and abort instantly when the check fails, to avoid subsequent errors. Ошибка не воспроизводится. [cas@cas rem]$ ll `pwd` ls: невозможно получить доступ к /home/cas/tmp/rem: Нет такого файла или каталога [cas@cas rem]$ apt-cache search dddd [cas@cas rem]$ |