remove
удаляет пакеты, названные в его честь. autoremove
удаляет все автоматически установленные пакеты, которые больше не нужны. Неправильно перечислять имена пакетов после autoremove
; они будут проигнорированы (и все подходящие пакеты будут удалены), что, вероятно, не то, что вы намеревались. --purge
также приводит к удалению общесистемных файлов конфигурации, связанных с удаляемыми пакетами. Он должен сопровождаться командой, такой как remove
или autoremove
. Флаг --purge
изменяет действие команды; оно не действует само по себе. purge
означает то же самое, что и --purge remove
(что совпадает с remove --purge
). Неверно говорить purge
дважды; второе purge
интерпретируется как имя пакета, которое будет purge
d, что, вероятно, не то, что вы намереваетесь. Чтобы понять, что эти команды делают и чем они отличаются, полезно (и, вероятно, даже важно) понять две концепции:
Установленный пакет либо устанавливается вручную , либо устанавливается автоматически .
Когда вы указываете пакет для установки, и он устанавливается, он устанавливается вручную .
Но могут быть установлены и другие пакеты. Большинство пакетов имеют зависимости - другие пакеты, которые должны быть установлены, чтобы эти пакеты работали, как предполагалось. Когда вы устанавливаете пакет, устанавливаются его зависимости (то есть другие пакеты, от которых он зависит), за исключением тех, которые были установлены ранее.
Если пакет не указан вами для установки, а вместо этого устанавливается как зависимость пакета, который вы указали для установки, он автоматически устанавливается .
Обратите внимание, что если у вас установлено два пакета, и один из них является зависимостью от другого, это не означает, что эта зависимость устанавливается автоматически. Также возможно, что зависимость была установлена вручную (то есть указана вами, например, установлена до или одновременно с пакетом, который от нее зависит).
Наконец:
apt-mark
), независимо от того, как или при каких обстоятельствах они были фактически установлены. Как правило, для каждого автоматически установленного пакета у вас будет как минимум один установленный вручную пакет, который зависит от него (и который стал причиной его автоматической установки). Однако если вы затем удалите все установленные вручную пакеты, которые зависят от автоматически установленного пакета, автоматически установленный пакет больше не потребуется, но все равно будет установлен.
apt-get autoremove
удаляет автоматически установленные пакеты, в которых больше нет пакетов, установленных вручную, в зависимости от них.
Пакет предоставляет файлы, которые должны быть и должны быть одинаковыми в каждой системе, где установлена эта версия этого пакета. Такие файлы предоставляют исполняемые файлы, ресурсы, документация и другие «активы» для установленных программ. Обычно мы просто называем эти «файлы», которые предоставляет пакет.
Но пакет предоставляет и другие файлы, которые предназначены (возможно) для изменения. Они называются глобальными (или общесистемными) файлами конфигурации. Они почти всегда устанавливаются в каталог /etc
, и их можно автоматически и вручную изменять для изменения поведения установленных программ. Например, sudo
имеет файл конфигурации /etc/sudoers
и каталог для дополнительных файлов конфигурации /etc/sudoers.d
. Этот файл и любые файлы, добавленные в этот каталог, указывают, кому разрешено использовать sudo
и каким образом.
Как правило, желательно, чтобы удаление пакета и последующая его установка не изменили его поведение (если только файлы пакета не были повреждены, и поэтому вы, конечно, переустановили его). Поэтому, как правило, когда пакет удаляется, его файлы пакета удаляются, но его общесистемные файлы конфигурации остаются нетронутыми.
Когда вы удаляете пакет, не указывая, что его общесистемные файлы конфигурации также должны быть удалены, это называется «удалением» пакета.
Если вы также хотите удалить общесистемные файлы конфигурации пакета при удалении пакета, это называется «очисткой» пакета.
apt-get remove
удалит пакет; то есть он удалит пакет, но оставит общесистемные файлы конфигурации.
apt-get purge
очистит пакет; то есть он удалит пакет, а также обязательно удалит его общесистемные файлы конфигурации.
Другим способом очистки пакетов является использование флага --purge
. Это не говорит apt-get
, что делать; вместо этого он изменяет то, что ему говорят термины (или «команды»), такие как remove
. Флаг --purge
приводит к тому, что любые деинсталляции пакетов сопровождаются удалением общесистемных файлов конфигурации для деинсталлируемых пакетов. Другими словами, флаг --purge
превращает удаления в чистки.
Почему у нас есть флаг --purge
, когда у нас есть команда purge
? В конце концов, sudo apt-get --purge remove packagename
не эквивалентно sudo apt-get purge packagename
. Они эквивалентны. Когда --purge
пригодится, вам нужно изменить поведение команд , отличное от , чем remove
.
Например, предположим, что вы хотите удалить автоматически установленные пакеты, которые больше не нужны (поскольку в зависимости от них больше нет установленных вручную пакетов), но вы не просто хотите удалить эти автоматически установленные пакеты, вы также хотите удалить их общесистемные файлы конфигурации. Тогда вы можете выполнить:
sudo apt-get --purge autoremove
Давайте рассмотрим еще одно использование --purge
. Существует флаг под названием --reinstall
, который превращает установки в переустановки. Это означает, что обычно при попытке установить пакет, который уже установлен, либо ничего не происходит, либо (если пакет помечен как автоматически установленный) пакет будет помечен как установленный вручную. Но с флагом --reinstall
установка пакета, который уже установлен, приводит к его удалению , а затем обратно :
sudo apt-get --reinstall install packagename
Но предположим, что вы хотите удалить общесистемные файлы конфигурации пакета, который вы переустанавливаете. Это несколько распространено; когда пакет не работает, и вы не знаете, почему, вы можете попробовать переустановить его, а также удалить его файлы конфигурации, чтобы его конфигурация была сброшена до значения по умолчанию. Для этого вы можете выполнить:
sudo apt-get --purge --reinstall install packagename
--reinstall
превращает установку в переустановку (т. Е. Удаление с последующей установкой), а --purge
превращает часть удаления переустановки в продувку.
Теперь должно быть ясно, что именно делает каждая из ваших примеров apt-get
команд:
sudo apt-get autoremove --purge packagenames
Это удаляет автоматически установленные пакеты, у которых больше нет установленных вручную пакетов, которые зависят от них. То есть, он удаляет эти пакеты (что влечет за собой удаление файлов их пакетов), а также удаляет их общесистемные файлы конфигурации.
Здесь packagenames
ничего не делает. В частности, если вы намеревались просто удалить пакеты, имена которых указаны там, тогда это не будет вести себя так, как вы собираетесь.
sudo apt-get remove --purge packagenames
Эта чистка packagenames
; предполагая, что packagenames
- это список имен пакетов, разделенных пробелами, он удалит их все. То есть он удалит их (что влечет за собой удаление файлов их пакетов), а также удалит их общесистемные файлы конфигурации.
Если какой-либо из пакетов, перечисленных в packagenames
, не установлен, его присутствие в списке не окажет никакого влияния (за исключением того, что вам сообщат, что он не был установлен). Если вы укажете имена пакетов, которые не являются именами каких-либо реальных пакетов, команда завершится с ошибкой unable to locate packagename
.
sudo apt-get purge purge packagenmaes
Если вы удалите одно из вхождений purge
в этой команде, оно будет эквивалентно предыдущему. В его нынешнем виде он пытается очистить пакет с именем purge
, а также очистить пакеты, перечисленные в packagenames
. Поскольку purge
не является именем какого-либо пакета, произойдет сбой с сообщением об ошибке.
sudo apt-get remove packagenames
Это удаляет пакеты, перечисленные в packagenames
, что влечет за собой удаление их файлов пакетов. Это не удаляет их общесистемные файлы конфигурации (потому что это просто удаление, а не очистка).
sudo apt-get autoremove
Удаляет автоматически установленные пакеты, у которых больше нет установленных вручную пакетов, которые зависят от них. Это влечет за собой удаление их файлов пакета, но не их общесистемных файлов конфигурации (то есть, это удаление, но не очистка).
Для получения дополнительной информации о том, как использовать apt-get
, я рекомендую его справочную страницу . Для получения более общей информации см. это руководство .
Ни одно из предыдущих предложений здесь не сработало для меня, но это имело значение:
В /etc/X11/default-display-manager
изменили lightdm
на /usr/sbin/lightdm
Я не беру за это никакого кредита; просто нашел это онлайн где-то среди пятидесяти других возможностей после нескольких дней проб и ошибок. 11.10 обновлен и пробует проприетарный драйвер ATI fglrxdrm 8.93.4
Я попробовал большинство из приведенных выше предложений, но после поиска в Google это сообщение об ошибке, найденное в .xsession-errors
mkdtemp: private socket dir: Permission denied
нашло этот ответ работающим
sudo chmod 1777 / tmp
http://mihirknows.blogspot.com/2008/06/mkdtemp-private-socket-dir-permission.html
Мне удалось исправить это самостоятельно, удалив файл ~/.Xauthority
. Для записи вы можете найти журналы запуска LightDM в /var/log/lightdm
- оттуда я смог увидеть, что LightDM застрял на чем-то в этом файле, поэтому я переименовал его и смог успешно войти в систему.
GDM все еще здесь, если вы хотите, вы можете сделать следующее:
sudo dpkg-reconfigure lightdm
И на запрос появится вопрос, хотите ли вы начать с LightDM или GDM. Поэтому, если вы снова застряли с LightDM или вам это не нравится, вы всегда можете вернуться к GDM.
Но решение Джорджа Эдисона должно работать.
Та же проблема в Lubuntu 11.10 - вход в GUI невозможен, но проблема была в DISK SPACE, когда я зашел в консоль и попытался запустить MC, я получил предупреждение о дисковом пространстве, удалил некоторые файлы и теперь все работает нормально.
У меня возникла такая же проблема (Ubuntu 12.04 LTS). Я думаю, что это потому, что я пробовал startx
-команду с sudo.
Я обнаружил, что файл ~ / .Xauthority принадлежал пользователю root, поэтому на экране входа в систему я нажал ctrl+alt+f2
и оттуда изменил владельца обратно на меня (sudo chown user:user .Xauthority
) и смог войти снова.
chmod 777 .Xauthority
– Jbadminton
05.12.2019, 01:44