Если я удалил приложение с помощью synaptic (приложение, которое я установил с помощью терминала, используя команду dpkg -i
), то почему оно удаляется из меню (значок приложения исчезает), но все равно есть полная папка со всеми файлами на жестком диске?
Я не уверен, почему я не могу просто удалить всю папку, как вы сделали бы в OSX. Что происходит после использования команды dpkg -r
/ -P
с терминалом или какой синаптик также делает?
Есть ли какая-то причина, по которой мне не следует просто удалять папки (и) вручную?
Может кто-нибудь объяснить, что происходит за кулисами, чтобы новички, такие как я, могли понять, что они делают (неправильно)?
Я пытался удалить ethereum с помощью команды dpkg -r
и это не сработало (неправильное имя) ??
Так что я предполагаю, что удаление приложения ethereum с Synaptic прошло хорошо. Синаптик нашел его, а затем удалил. Я также считаю, что все соответствующие данные были также удалены.
Скрытая папка ethereum, которая все еще находится на моем жестком диске, я думаю, это только загруженные данные, поэтому приложение можно обновлять отдельно, не теряя блокчейн и данные кошелька, верно? Я думаю, что теперь я могу удалить эти файлы вручную, потому что они мне больше не нужны!
Вот некоторая информация от man dpkg
, который объясняет что dpkg -r
и dpkg -P
сделать. Удаление пакета с командами APT или синаптический включает те же процедуры; насколько я знаю, что высокоуровневые утилиты управления пакетом как APT и синаптический просто называют DPKG как подпроцесс, чтобы удалить или установить файлы. Их функция состоит в том, чтобы вычислить и разрешить зависимости и обеспечить улучшенный UI.
-r, --remove package...|-a|--pending
Remove an installed package. This removes everything except conffiles,
which may avoid having to reconfigure the package if it is reinstalled
later (conffiles are configuration files that are listed in the
DEBIAN/conffiles control file)[...]
Removing of a package consists of the following steps:
1. Run prerm script
2. Remove the installed files
3. Run postrm script
-P, --purge package...|-a|--pending
Purge an installed or already removed package. This removes everything,
including conffiles. [...]
Note: some configuration files might be unknown to dpkg because
they are created and handled separately through the configuration
scripts. In that case, dpkg won't remove them by itself, but the
package's postrm script (which is called by dpkg), has to take care
of their removal during purge. Of course, this only applies to files
in system directories, not configuration files written to individual
users' home directories.
Purging of a package consists of the following steps:
1. Remove the package, if not already removed.
2. Run postrm script.
Как Вы видите, эти команды удаляют все файлы приложения за исключением конфигурационных файлов. Даже -P / --purge
может не всегда удалять локальные конфигурационные файлы из корневых каталогов пользователей в некоторых случаях, таким образом, эти файлы, возможно, должны быть удалены вручную, если они больше не необходимы. Когда Вы упоминаете каталоги приложения, остающиеся после удаления, Вы, скорее всего, говорите о локальном каталоге конфигурации.*
В моем ответе на несколько связанный вопрос я обсудил, как APT, DPKG и другие диспетчеры пакетов, установленные в системе Ubuntu, хранят информацию о файлах, обеспеченных пакетом в человекочитаемой форме.
Тот ответ также пытается объяснить, почему использование диспетчера пакетов для обработки управления пакетом существенно легче, чем попытка сделать так вручную; в типичной файловой системе Linux файлы, обеспеченные приложениями, рассеиваются повсеместно. В то время как это могло бы казаться сбивающим с толку, существует большое преимущество безопасности для файлов приложения, находящихся в системных каталогах, принадлежавших корню, в который не могут записать пользователи. Кроме того, если мы действительно должны узнать, где файлы, связанные с пакетом, мы можем использовать различные утилиты командной строки для нахождения их.
Вы хотели знать, является ли удаление всех файлов приложения для удаления его плохой идеей и раз так почему. Мой ответ на этот вопрос ДА, в целом это - очень плохая идея, потому что удаление установленных файлов является только частью работы, сделанной управлением пакетом при вызове его для выполнения удаления. База данных DPKG хранит информацию, на которой пакеты установлены и устанавливаемые, и все отношения зависимости между ними. Если файлы пакета будут удалены без обновляемой базы данных, то разрешение зависимости не будет сделано, программное обеспечение, которое зависит от тихо недостающего программного обеспечения, не будет работать, пакеты будут повреждены, очистка, сделанная prerm и postrm сценариями dpkg
призывы к каждому пакету, который это удаляет, не будут сделаны, потенциально оставляя поврежденные символьные ссылки и неправильные файлы конфигурации, лежащие вокруг, и все будет ужасно.
TL; DR
Диспетчеры пакетов существуют на серьезных основаниях. Используйте их где возможный вместо того, чтобы пробовать к самостоятельному.
*Однако иногда программное обеспечение может быть установлено (и иметь единственный каталог) без DPKG знание чего-либо об этом. Например, можно загрузить приложение сторонних производителей, извлечь архив и выполнить исполняемый файл. Для "удаления" этого программного обеспечения можно просто удалить извлеченные файлы. Другим примером является использование установки sudo make install
после компиляции из источника, который оставляет исходный каталог. Удаление такого программного обеспечения может быть головной болью, если разработчики не настроили вещи, чтобы включить sudo make uninstall
или не включенный декларация файла! Путь вокруг этого состоит в том, чтобы создать deb пакет после make
, который может быть, покончили checkinstall
.