Удаление папок приложения вручную для удаления пакета

Если я удалил приложение с помощью synaptic (приложение, которое я установил с помощью терминала, используя команду dpkg -i), то почему оно удаляется из меню (значок приложения исчезает), но все равно есть полная папка со всеми файлами на жестком диске?

Я не уверен, почему я не могу просто удалить всю папку, как вы сделали бы в OSX. Что происходит после использования команды dpkg -r / -P с терминалом или какой синаптик также делает?

Есть ли какая-то причина, по которой мне не следует просто удалять папки (и) вручную?

Может кто-нибудь объяснить, что происходит за кулисами, чтобы новички, такие как я, могли понять, что они делают (неправильно)?

Обновление

Я пытался удалить ethereum с помощью команды dpkg -r и это не сработало (неправильное имя) ??

Так что я предполагаю, что удаление приложения ethereum с Synaptic прошло хорошо. Синаптик нашел его, а затем удалил. Я также считаю, что все соответствующие данные были также удалены.

Скрытая папка ethereum, которая все еще находится на моем жестком диске, я думаю, это только загруженные данные, поэтому приложение можно обновлять отдельно, не теряя блокчейн и данные кошелька, верно? Я думаю, что теперь я могу удалить эти файлы вручную, потому что они мне больше не нужны!

1
задан 9 August 2017 в 15:21

1 ответ

Вот некоторая информация от 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.

0
ответ дан 10 August 2017 в 01:21

Другие вопросы по тегам:

Похожие вопросы: