Предположим, я загружаю пакет .deb с веб-сайта и устанавливаю его. (Я предполагаю, что когда я дважды щелкаю по файлу .deb, пакет устанавливается через графический интерфейс, который взаимодействует с dpkg, верно?)
Как я могу удалить его?
В центре программного обеспечения появляются пакеты, установленные вручную, а также все остальные. Просто найдите в центре программного обеспечения свой пакет и удалите его там.
Возможно, вам придется нажать на "Показать N технических элементов"
Помимо этого, есть еще несколько способов:
Synaptic:
Нажмите на кнопку Apply Apply.
Преимущество заключается в том, что вы можете перечислить все установленные вручную пакеты:
Командная строка
Вы можете использовать sudo apt-get delete packagename
, если вы знаете имя пакета, или, если нет, искать его, используя apt-cache search crazzy-app
, а затем удалить его, используя apt get
Вы также можете использовать dpkg --remove packagename
. Это также даст вам знать, если в вашей системе остались ненужные пакеты, которые, возможно, были установлены в качестве зависимостей вашего пакета .deb. Используйте sudo apt-get autoremove
, чтобы избавиться от них.
Если вы хотите удалить пакет и все связанные с ним конфигурационные файлы:
sudo aptitude purge packagename
Команда для упрощения:
sudo dpkg -r package_name
Также, если вам нужно удалить их принудительно
sudo dpkg -r --force-all pkg_name
Используйте -r
с помощью -pkg
.
Смотрите данный блог-пост для получения более подробной информации.
Установленный пакет будет виден как в Synaptics, так и в центре программного обеспечения. В первом он появится под локальными пакетами, во втором - под другими.
Откройте Центр программного обеспечения Ubuntu (Приложения -> Центр программного обеспечения Ubuntu). и найдите пакет, который необходимо удалить, и нажмите кнопку Удалить :
Или из командной строки:
sudo apt-get remove <package-name>
Вы можете использовать флаги удаления и принудительной установки:
$ sudo dpkg -r --force-all pkg_name
В качестве альтернативы, если вы установили его через диспетчер пакетов Ubuntu, вы можете удалить его с помощью apt:
$ sudo apt remove --purge pgk_name
Сначала проверьте приложение, которое вы хотите удалить, с помощью приведенной ниже команды.
find /usr/share/applications -maxdepth 1 -type f -exec basename {} .desktop \; | sort
Как только вы найдете имя приложения в приведенном выше списке, выполните команду ниже
sudo apt remove your_application_name
Каждое решение здесь предполагает, что вы знаете или можете найти имя пакета, но ни в одном из них не указано, как удалить пакет, если все, что у вас есть, это деб. С этой целью приведенная ниже команда извлечет имя пакета из deb и удалит это имя пакета.
dpkg -r $(dpkg -f your-file-here.deb Package)
NB: это не подтверждает, что удаляемый пакет является точной версией , описанной deb - будьте осторожны.
Очевидно, вы можете использовать флаги remove и force:
sudo dpkg -r --force-all 'some_bad_package'
, но в очень многих случаях это вообще не поможет. Также не поможет в случае поломки dpkg попробовать какие-либо инструменты с графическим интерфейсом, такие как synaptic или даже хуже, поскольку все они зависят от dpkg . Это связано с тем, что dpkg очень категорично в отношении этих часто возникающих ошибок, в результате чего многие пользователи остаются без дела. Вот пример, когда .deb был загружен неопубликованно, а Ubuntu не предлагает ни графический интерфейс, ни интерфейс командной строки для решения проблемы:
LANG = en sudo dpkg --purge 'brmfc7440nlpr: i386'
dpkg: пакет обработки ошибок brmfc7440nlpr: i386 (--purge): пакет находится в очень плохом несогласованном состоянии; вам следует переустановите его перед попыткой удаления Во время обработки были обнаружены ошибки: brmfc7440nlpr: i386
И да, предложение «переустановить его перед попыткой ...», конечно, совершенно бесполезно и излишне, поскольку оно просто приводит к той же ошибке с другим вариантом.
И да, добавление «--force-all», очевидно, так же бесполезно, как и без него.
Это уже заставит многих пользователей переустанавливать Ubuntu в надежде на улучшение, что потребует много-многих часов дополнительной работы. Пакет из приведенного выше реального примера представляет собой драйвер лазерного принтера (LPR) для модели MFC 7440N.
Хотя верно, что - без GUI - наш выбор:
Где dpkg
может быть запущен из сценария без эквивалента" -y "переключатель, apt
требует этого, чтобы избежать ввода данных пользователем. В результате apt
может автоматически разрешать зависимости пакетов и удалять пакеты , кроме цели, указанной в команде.
apt
: Обратите внимание, когда я удаляю iptables (я использую firewalld ), что lxd и ufw (интерфейс для iptables ) также удален . Но что, если я не хочу удалять lxd ? Ну, теперь его больше нет:
apt-get -y purge iptables
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
iptables* lxd* ubuntu-standard* ufw*
0 upgraded, 0 newly installed, 4 to remove and 54 not upgraded.
After this operation, 23.2 MB disk space will be freed.
(Reading database ... 90906 files and directories currently installed.)
Removing ubuntu-standard (1.417.3) ...
Removing ufw (0.36-0ubuntu0.18.04.1) ...
Skip stopping firewall: ufw (not enabled)
Removing lxd (3.0.3-0ubuntu1~18.04.1) ...
Removing lxd dnsmasq configuration
Removing iptables (1.6.1-2ubuntu2) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
Processing triggers for libc-bin (2.27-3ubuntu1) ...
(Reading database ... 90627 files and directories currently installed.)
Purging configuration files for ufw (0.36-0ubuntu0.18.04.1) ...
Purging configuration files for lxd (3.0.3-0ubuntu1~18.04.1) ...
Processing triggers for systemd (237-3ubuntu10.38) ...
Processing triggers for rsyslog (8.32.0-1ubuntu4) ...
Processing triggers for ureadahead (0.100.0-21) ...
dpkg
: Примечание dpkg
останавливает меня от потенциального изменения системы непреднамеренным образом, если бы я использовал ее в скриптовом исполнении, и отказа от удаления как ufw , так и lxd :
dpkg -r iptables
dpkg: dependency problems prevent removal of iptables:
lxd depends on iptables.
ufw depends on iptables.
dpkg: error processing package iptables (--remove):
dependency problems - not removing
Errors were encountered while processing:
iptables
Итак, хотя это правда, что мы хотим, чтобы наши сценарии завершились успешно и не завершились с ошибкой, может быть желательно, чтобы сценарий завершился с ошибкой, а не завершился путем изменения системы вне целевой команды. Такой вариант использования может сделать dpkg -r
более желательным для выполнения по сценарию.