Как удалить пакет.deb?
Предположим, я загружаю пакет.deb с веб-сайта и устанавливаю его. (Я предполагаю, что когда я дважды щелкаю по файлу.deb, пакет устанавливается через графический интерфейс, который взаимодействует с dpkg, верно?)
Как я могу удалить его?
12 ответов
Установленные вручную пакеты появляются в Центре программного обеспечения вместе со всеми остальными. Просто найдите в программном центре свой пакет и удалите его там.
Возможно, вам придется нажать "Показать N технических элементов"
Наряду с этим, есть несколько других методов:
Synaptic:
- Перейдите в Система → Администрирование → Менеджер пакетов Synaptic
- Нажмите кнопку " Состояние" и выберите "Установлено (локально или устарело)"
- Щелкните правой кнопкой мыши по пакету и выберите "пометить для удаления".
Нажмите кнопку Применить.
Это даст преимущество перечисления всех установленных вами пакетов вручную:
Командная строка
Вы можете использовать
sudo apt-get remove packagename
если вы знаете название пакета, или если вы не знаете, найдите его с помощьюapt-cache search crazy-app
а затем удалите его с помощью apt getВы также можете использовать
dpkg --remove packagename
,
Это также позволит вам узнать, остались ли в вашей системе ненужные пакеты, которые, возможно, были установлены как зависимости вашего пакета.deb. использование sudo apt-get autoremove
избавиться от них.
Каждое решение здесь предполагает, что вы знаете или можете найти имя пакета, но ни одно из них не предлагает, как удалить пакет, если все, что у вас есть, это deb. С этой целью приведенная ниже команда извлечет имя пакета из deb и удалит это имя пакета.
dpkg -r $(dpkg -f your-file-here.deb Package)
NB: это не подтверждает, что удаляемый пакет является точной версией, описанной deb - будьте осторожны.
Откройте Ubuntu Software Center (Приложения -> Ubuntu Software Center), найдите пакет, который хотите удалить, и нажмите кнопку " Удалить":
Или из командной строки:
sudo apt-get remove <package-name>
Использование -r
с dpkg
,
Смотрите этот пост для получения дополнительной информации.
Хотя это правда - без графического интерфейса - наши варианты:
- apt-get remove (или " очистить ") packageName
- dpkg -r имя_пакета
куда
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
более желательно для исполнения по сценарию.
Если вы хотите удалить пакет и все файлы конфигурации, связанные с ним:
sudo aptitude purge packagename
Вот удобный подход, если у вас все еще есть .deb:
- Дважды щелкните .deb
- Откроется окно программного обеспечения Ubuntu.
- Нажмите кнопку «Удалить»
Вы можете использовать флаги удаления и форсирования:
$ sudo dpkg -r --force-all pkg_name
В качестве альтернативы, если вы установили его через Ubuntu Package Manager, вы можете удалить его с помощью apt:
$ sudo apt remove --purge pgk_name
Установленный пакет будет виден как в Synaptics, так и в программном центре. В первом он будет отображаться под локальными пакетами, а во втором - под другим.
Очевидно , вы можете использовать флаги 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.
Сначала проверьте приложение, которое вы хотите удалить, с помощью команды ниже.
find /usr/share/applications -maxdepth 1 -type f -exec basename {} .desktop \; | sort
Как только вы найдете имя приложения в приведенном выше списке, выполните приведенную ниже команду.
sudo apt remove your_application_name