Я искал в сети подобную информацию и нашел различные командные строки, например, эти:
sudo apt-get remove application
sudo apt-get remove application*
sudo apt-get remove --purge application
sudo apt-get remove --purge application*
sudo apt-get purge application
sudo apt-get purge application*
Так какой же способ правильный? Нужно ли использовать этот "*"?
После этого я также нашел эти команды:
sudo updatedb
sudo locate application
sudo rm -rf (file/folder name)
apt-get remove packagename
удалит двоичные файлы, но не файлы конфигурации или данных пакета packagename
. Он также оставит нетронутыми зависимости, установленные вместе с ним во время установки.
apt-get purge packagename
или apt-get remove --purge packagename
.удалит примерно все, что касается пакета packagename
, но не зависимости, установленные вместе с ним во время установки. Обе команды эквивалентны.
Особенно полезно, когда вы хотите 'начать все сначала' с приложением, потому что вы испортили конфигурацию. Однако эта команда не удаляет файлы конфигурации или данные, находящиеся в домашних каталогах пользователей, обычно в скрытых папках. Не существует простого способа удалить и их.
apt-get autoremove
удаляет осиротевшие пакеты, т.е. установленные пакеты, которые раньше были установлены как зависимость, но теперь не установлены. Используйте это после удаления пакета, в котором были установлены зависимости, которые вас больше не интересуют.
aptitude remove packagename
или aptitude purge packagename
(аналогично)также попытаются удалить другие пакеты, которые были необходимы для packagename
, но не требуются для оставшихся пакетов. Обратите внимание, что aptitude
запоминает информацию о зависимостях только для тех пакетов, которые были установлены.
А их существует гораздо больше. Можно использовать dpkg
-команды более низкого уровня (продвинутые), или GUI инструменты, такие как Muon, Synaptic, Software Center и т.д. Нет единого 'правильного способа' удаления приложений или выполнения других задач, взаимодействующих с управлением пакетами.
Список, который вы нашли, - это просто примеры. Убедитесь, что вы понимаете их значение и попробуйте выполнить то, что он хочет сделать, прежде чем принять действие (вам нужно нажать Y
, прежде чем он действительно выполнит предложенные действия).
Версия со звездочкой в вопросе вероятно, неверна; apt-get
принимает регулярное выражение, а не шаблон glob, как оболочка. Таким образом, что происходит с
sudo apt-get remove application*
это следующее:
Оболочка пытается расширить application*
, просматривая файлы в текущем каталоге. Если (как это обычно бывает) он ничего не находит, он возвращает шаблон glob без изменений (предполагается, что bash
ведет себя здесь по умолчанию --- zsh
выдаст ошибку).
apt-get
удалит пакеты, имя которых содержит строку, удовлетворяющую регулярному выражению application*
, то есть applicatio
, за которым следует произвольное число n
: applicatio
, application
, applicationn
, libapplicatio
и т.д.
Чтобы увидеть, как это может быть опасно, попробуйте (без root для двойной безопасности) apt-get -s remove "wine*"
(-s
будет имитировать действие, а не делать его) --- он скажет, что собирается удалить все пакеты, имеющие "win" в своем имени и зависимые, почти всю систему...
Вероятно, команда, которая имелась в виду, на самом деле
sudo apt-get remove "^application.*"
(обратите внимание на кавычки и точку), которая удалит все пакеты, имя которых начинается с application
.
Эти команды,
sudo updatedb # <-- updates the locate database (index). harmless
sudo locate application # <-- locates the file 'application'. harmless
sudo rm -rf (file/folder name) # <-- removes files/dirs recursively. dangerous.
полностью выходят за рамки управления пакетами. Не удаляйте файлы, принадлежащие пакетам, без использования менеджера пакетов! Это приведет к путанице и является неправильным способом делать вещи.
Если вы не знаете, к какому пакету относится файл, попробуйте следующее:
dpkg -S /path/to/file
Для Ubuntu 12.04 и может быть выше, правильный метод:
sudo apt-get --purge autoremove packagename
Как подробно здесь.
Не используйте имя_пакета*
так что можете удалить нежелательных пакетов и вызвать больше проблем, чем решает. Или если вы должны, по крайней мере, запустить его с -с
, --моделирование
, `-- "сухой ход" флаг первым увидел именно то, что он будет делать без этого.
Вы можете использовать эту команду:
sudo apt-get purge --auto-remove packagename
Он будет очищать необходимые пакеты вместе с зависимостями, которые устанавливаются вместе с этими пакетами. В --авто-удалить
выбор (быть псевдоним autoremove
) работает аналогично судо apt-получить autoremove
. С помощью этой команды мы можем выполнить одну команду:
sudo apt-get purge --auto-remove packagename
Вместо:
sudo apt-get purge packagename
sudo apt-get autoremove
Вы можете безопасно использовать sudo apt-get remove --purge application
или sudo apt-get remove applications
в 99% случаев. Когда вы используете флаг purge
, он просто удаляет все файлы конфигурации. Что может быть или не быть тем, что вам нужно, в зависимости от того, хотите ли вы переустановить приложение. Флаг application*
будет соответствовать всем приложениям, начинающимся с application
, которые обычно являются плагинами, дополнительными функциями и т.д. основного приложения, которое вы удаляете. т.е.
sudo apt-get remove gedit*
удалит gedit
, gedit-plugins
и gedit-common
. Обычно этого делать не нужно, поскольку большинство плагинов/сопутствующих программ зависят от основного приложения и автоматически удаляются (или помечаются для удаления), когда вы удаляете основное приложение.
Последняя команда предназначена для удаления остатков приложений, которые, как известно, имеют беспорядочные деинсталляторы, и она просто удаляет все остатки приложения.
У меня есть некоторые сообщения об ошибках удаление пакета, единственный способ я нашел, что работал был такой:
mv /var/lib/dpkg/info/package.* /tmp/
dpkg --remove --force-remove-reinstreq package
Я обнаружил, что, используя только
dpkg --remove --force-remove-reinstreq package
не удалить пакет, он показывает мне правильный путь к файлу для перемещения с:
mv /var/lib/dpkg/info/package.* /tmp/
Заменить пакет с именем приложения. Использовать sudo в Ubuntu под root в Debian.
Я нашел эту команду в интернете.
dpkg --purge --force-depends application
http://www.debian-administration.org/article/Reinstalling_packages_to_fix_problems.
Это зависит от приложения, которое вы хотите удалить. Всегда проверяйте его зависимости перед выполнением команды yes. Когда вы удаляете что-то с помощью командной строки, иногда появляется горстка библиотек, которые больше не нужны. Их можно удалить с помощью команды apt-get autoremove.
Помните, что при использовании таких команд, как sudo apt-get remove --purge applicationname, могут быть удалены некоторые зависимости, необходимые другим приложениям, что может привести к поломке системы.
Если вы хотите сделать это более безопасным способом, вы всегда можете удалить его, используя только программный центр или apt-get remove applicationname. Если зависимости больше не нужны, позже выполните apt-get autoremove.
Я просто хотел уточнить одну вещь, которая, кажется, быть источником путаницы здесь.
Обновить утилита не знать или отслеживать зависимости пакетов по отношению друг к другу, который был большой причиной того, что АПТ
разработан считаю. Вы можете прочитать об этом в разделе 8.6 на этой странице в Дебиан ГНУ/FAQ по ОС Linux - дистрибутива Debian пакет инструментов управления
С APT: если бы я хотел, чтобы очистить пакет, и у него есть зависимость называется пакет B, пакет б не было других зависимых пакетов, то пакет A и B будут удалены. Если пакет б не было других зависимых пакеты, потом только пакет будет продуваться.
С помощью dpkg: что такое зависимость? Ты просто сказал мне, чтобы очистить этот чертов пакет, так что's то, что я сделал! Плохое планирование с вашей стороны не представлять собой чрезвычайную ситуацию с моей стороны.
С учетом сказанного, вот несколько два-вкладыши, которые могут быть использованы для каждого метода очистки:
dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --dry-run --purge
apt-get autoremove -y; apt-get --dry-run purge -y $(dpkg --list |grep '^rc' |awk '{print $2}')
Удалить --сух-бежать
, чтобы выполнить фактическую работу продувки вместо того, чтобы сообщить, какие меры он принял бы.