Удаление программ в Linux

30

Я использую Windows и Mac OS в течение последних 5 лет, и теперь я планирую использовать Linux ежедневно. Я установил Ubuntu на виртуальную машину и пытаюсь понять, как я могу использовать Linux для своей повседневной работы (в качестве js-программиста / веб-дизайнера).

Извините за вопрос новичка, но мне приходит в голову, что иногда, когда я устанавливаю программу через make config&, make installона меняет мою систему способами, которые необратимы легко. В Windows, когда вы устанавливаете программу, вы можете удалить ее и, надеюсь, если она будет воспроизводиться по книге, в файловой системе или в реестре не останется следов программы и т. Д. В Mac OS вы просто удаляете приложение как файл.

Но в Linux есть apt-getи есть make. Я не совсем понял, как я могу сохранить мою установку Linux в чистоте и порядке. Такое ощущение, что любая новая установка приложения может сломать мою систему. Но потом Linux имеет репутацию очень надежной, поэтому должно быть что-то, чего я не понимаю о том, как установка и удаление приложений влияет на систему. Кто-нибудь может пролить свет на это?


Обновление: при установке приложения его файлы могут распространяться куда угодно (менеджеры пакетов решают часть проблемы), но есть крутой способ: использовать Docker для установки приложений и хранить их в «песочнице», особенно если вы не собираетесь используйте их слишком часто. Также возможно запускать приложения с графическим интерфейсом, такие как Firefox, целиком в «песочнице» Docker.

AlexStack
источник
11
Как простой пользователь вы должны использовать, apt-getа не makeустанавливать программное обеспечение. make installиспользуется, когда вам нужно собрать последнюю (возможно, нестабильную) версию программного обеспечения из источников, которые еще не доступны в виде пакета.
Дмитрий Григорьев
@DmitryGrigoryev Использование aptпроще и обеспечивает лучшее обучение, чем использование apt-get.
Бакуриу
3
Когда я использовал OS X, я часто находил удаление *.appфайла недостаточным, поскольку установки приложений часто засоряли другие места (например, каталог библиотеки, из памяти). Кроме того, если вы собираете вручную из исходного кода в Ubuntu с помощью make install, используйте checkinstallвместо этого, чтобы позволить легкое удаление.
Sparhawk
1
Не используйте ./configure ; make ; make installпуть. Все, что вам нужно, это изучить потрясающий инструмент fpm .
Охотник на оленей
что такое инструмент fpm?
AlexStack

Ответы:

28

Новая установка редко ломает вашу систему (если вы не делаете странные вещи, такие как смешивание исходного кода и двоичного кода).

Если вы используете предварительно скомпилированные двоичные файлы в Ubuntu, то вы можете удалить их, и вам не нужно беспокоиться о том, чтобы сломать вашу систему, потому что двоичный файл должен содержать список того, что ему нужно для запуска, а менеджер пакетов перечислит, какие программы полагаются на эту программу для просмотра.

Когда вы используете исходный код, вам нужно быть более осторожным, чтобы не удалить что-то критическое (например, glib). При удалении из источника никаких предупреждений или чего-либо еще нет. Это означает, что вы можете полностью сломать свою машину.

Если вы хотите удалить с помощью, apt-getто вы будете использовать, apt-get remove packageкак указано ранее. Любые программы, использующие этот пакет, также будут удалены, и у вас будет возможность просмотреть их.

Если вы хотите удалить, то, как правило, процесс make uninstall. Там нет предупреждения (как я уже говорил выше).

make configне изменит вашу систему, но make installбудет.

Как новичок, я рекомендую использовать apt-getили любой другой дистрибутив, который вы используете для бинарных пакетов. Это делает вещи красивыми и организованными, и если вы действительно этого не хотите, это не сломает вашу систему.

Надеюсь, это все прояснит.

SailorCire
источник
3
Для бесследного удаления вы, конечно, будете использовать --purgeопцию сapt-get
Hagen von Eitzen
16

Теоретически, make uninstallследует удалить то, что make installдобавлено, и ваша система не накапливает бесполезность. Проблема, конечно, в том, что не все make-файлы созданы одинаковыми.

Некоторые могут опустить uninstallправило, предоставив вам возможность выяснить, что это installправило сделало. Хуже того, если правило установки перезаписало связанную библиотеку, немая uninstallподпрограмма может нарушить зависимости для какой-либо другой программы.

Лучшее решение для исходных установок - использовать префикс, отличный от пакетов, установленных системным менеджером пакетов. Apt устанавливает файлы, /usr/чтобы использовать /usr/local/иерархию для ваших исходных установок. Это значительно облегчает отслеживание того, какие файлы принадлежат, какие пакеты и деинсталляции не повредят систему.

./configure --prefix=/usr/localработает для многих скриптов настройки. Если нет, вы можете редактировать Makefile вручную. Или просто скопируйте файлы вручную.

Apt и другие менеджеры пакетов отслеживают, какие файлы они установили, и их обратные зависимости, поэтому их функции удаления безопасны.

WhimsicalWombat
источник
15

Я бы порекомендовал вам использовать apt-get installдля установки любого пакета в linux и apt-get remove(имя пакета) или apt-get purge(имя пакета), который удалит не только основной пакет, который вы хотите удалить, но и все связанные пакеты или зависимости, которые были установлены во время установки.

Теперь, чтобы сохранить вашу систему в чистоте, я бы рекомендовал вам использовать apt-get clean /ubuntu/144222/how-do-apt-get-clean-and-apt-get-clean-all-differ#144224 ( этот пост интересен тем, что удалит все файлы, которые были загружены во время установки, но больше не нужны.

Еще одна команда, которая будет полезна, если вы хотите удалить все зависимости, которые установлены в вашей системе, но они не были удалены при удалении apt-get autoremove.

Если вы устанавливаете пакет с помощью make и make install, вы несете ответственность за его удаление (возможно, в скачанный пакет включен файл README, в котором рассказывается, как это сделать), а также за попытку удаления всех зависимостей, связанных с ним. , Вот почему всегда рекомендуется устанавливать пакеты в Linux, предлагаемые менеджером пакетов дистрибутива, если вы делаете это таким образом, вы можете быть уверены, что ваш пакет достаточно протестирован для работы с дистрибутивом (разновидность Linux), который вы используете. и вряд ли сломает вашу систему. Кроме того, вы можете быть уверены, что ваш пакет будет обновляться по мере необходимости, тогда как если вы устанавливаете его самостоятельно, вы несете ответственность за все это.

Надеюсь, это поможет :)

Vato
источник
11

Обычный способ управления установленными приложениями в Linux - с помощью менеджера пакетов. Выбор менеджеров пакетов - одна из главных вещей, которые отличают дистрибутивы. Ubuntu, как и Debian (на котором он основан), использует dpkg и APT ; В большинстве случаев вам нужно взаимодействовать только с одним из интерфейсов APT, таким как apt-get(командная строка), aptitude (командная строка или текстовый режим) или Synaptic (GUI).

Диспетчер пакетов отслеживает, какие файлы принадлежат какой установленной программе. Как и в Windows, программы могут выполнять произвольный код как часть процедуры установки или удаления, но обычно ведут себя хорошо и не нарушают работу других программ. Кроме того, (не) установочный код написан сопровождающим пакета, а не автором основной ветки разработки (для пакетов в основном выпуске). В отличие от Windows, существует единый интерфейс для установки, обновления и удаления: менеджер пакетов. Вам не нужно искать деинсталлятор (если он есть), вы просто щелкаете значок «удалить» в графическом менеджере пакетов или запускаете apt-get remove PACKAGENAME.

Если вам нужно «экзотическое» программное обеспечение, вам может потребоваться установить его вручную, распаковав архив или скомпилировав его из исходного кода. Установщики в виде исполняемой программы редко встречаются в мире Linux. Бег make installимеет тенденцию распространяться каждую программу в течение нескольких каталогов ( /usr/local/bin, /usr/local/man, /usr/local/libи т.д.). Чтобы все было отсортировано, я рекомендую использовать «менеджер пакетов для бедняков», например, stow . С помощью stow каждый пакет устанавливается в своем собственном каталоге, а stowутилита заботится о создании символических ссылок, чтобы установленные в пакете команды находились в пути поиска команд и так далее. См. Отслеживание программ для более подробной информации.

Жиль "ТАК - прекрати быть злым"
источник
это "экзотическое ПО" может быть написано кем угодно, верно? Как это «экзотическое программное обеспечение» становится официально доступным в дистрибутивах? Кто-нибудь просматривает их исходный код построчно? Как, например, Ubuntu решает включить программное обеспечение в свою команду APT-GET и игнорировать другое?
AlexStack
1
@AlexStack Большинство дистрибутивов сделаны добровольцами. Ubuntu спонсируется компанией Canonical, которая платит нескольким людям, но основная часть обслуживания пакета выполняется добровольцами. Поэтому наиболее точный ответ заключается в том, что Ubuntu включает в себя все программное обеспечение, которое волонтер решил включить. Точнее, большая часть программного обеспечения в Ubuntu исходит от Debian, поэтому разработчик Debian должен был решить, над каким пакетом стоит поработать, и программное обеспечение должно соответствовать политике (приемлемая лицензия, не слишком глючная).
Жиль "ТАК - перестань быть злым"
@AlexStack, нет никакой гарантии, что кто-либо построчно рассмотрел определенную часть программного обеспечения, даже если это программное обеспечение доступно в репозиториях Ubuntu (то есть через установку по умолчанию apt-getили подобное). Но они помещают только достаточно популярные программы в репозитории, те, у которых достаточно пользователей, чтобы быть уверенными, что они в основном делают то, что должны.
Дэвид З
8

Почти в каждом дистрибутиве есть свой выбор менеджера пакетов, есть несколько популярных. pacman, apt, rpm, emerge, ... дистрибутивы на основе Debian используют apt.

Документ выглядит устрашающе, но на самом деле не так уж сложно создать .debs для локального использования , просто оставайтесь на задании.

jthill
источник
8

Вы должны попытаться использовать менеджер пакетов (apt-get, aptitude, synaptic или aptdcon, software-center, mintinstall, ..), если это возможно. Использование задачи make для установки очень простое, не гарантирует наличия uninstallаналога и не гарантирует, что оно будет хорошо играть с остальной системой (это всего лишь скрипт, связанный с системой сборки make - и в отличие от проверенного пакета, задачи make могут содержать любой исполняемый код, потенциально вредоносный).

Если вы не найдете нужную вам упакованную версию программного обеспечения, вы можете найти checkinstall( checkinstall make install) полезной.

PSkocik
источник
3

Я не эксперт, и не знаю много об установке программного обеспечения из источника, но с помощью apt-getвы можете удалить установленное программное обеспечение с apt-get remove package-name. Чтобы удалить все файлы конфигурации, используйте apt-get purge package-name. Самый безопасный способ сохранить порядок установки Linux - это использовать только пакеты в официальных репозиториях. Когда нужен пакет, которого нет в официальных репозиториях, его часто можно найти (поскольку вы используете Ubuntu) в PPA .

Гейб
источник
apt-getбесполезно для ОП, который использовал configureиmake install
roaima
3

Как говорят другие ответы, в настоящее время типичное большинство программного обеспечения обычно устанавливается с использованием выбранного вами менеджера пакетов вашего дистрибутива. Это так удобно, что вы, вероятно, пропустите это, когда вернетесь в Windows! В некотором смысле различные «рынки» и «магазины» идут в этом направлении и для коммерческих ОС.

Сказав это, я помню, что когда я впервые начал изучать Linux, я был озадачен тем, как обычно устанавливается программное обеспечение. В то время как в Windows все файлы c:\Programsнаходятся в одном каталоге , традиционным «способом unix» является разбрасывать их по «стандартным местам» (детали не настолько стандартизированы, [посмотрите LSB для получения дополнительной информации] [1] ), например, /usr/local/binдля исполняемых файлов, /usr/local/docдля документации и так далее.

В некотором смысле, Windows «не знает», где находятся ваши исполняемые файлы. Он знает, что они «где-то под c:\Program Files», но не намного. Сканирование всех этих каталогов, чтобы найти их, или было слишком дорого. Таким образом, ссылка на исполняемый файл будет явно размещена в известном месте (меню «Пуск»), и это то, что вы использовали бы для ее запуска.

В Unix / Linux ваша оболочка и большинство других программ в этом отношении будут автоматически искать исполняемые файлы или другие ресурсы в известном наборе мест. Вот почему, просто скопировав свои файлы в соответствующие каталоги, вы автоматически «увидите их», без необходимости «регистрировать» их где-либо, чтобы пользователи знали о них.

Оба механизма имеют свои плюсы и минусы, но вы обнаружите, что подход Unix обычно более гибкий.

Пожалуйста, имейте в виду, что существует множество исключений и деталей, которые делают картину не такой четкой, как я ее описал, но я думаю, что такого рода введение может быть полезно для новичков, чтобы хотя бы понять основную логику, стоящую за ним.

UncleZeiv
источник
спасибо @unclezeif. Эта проблема с «файлами, разбросанными повсюду» действительно беспокоит меня, потому что я этого не понимаю. Вы сказали, что подход Unix обычно более гибкий. Можете ли вы уточнить, пожалуйста?
AlexStack
Например, документация находится в одном месте, значки находятся в одном месте и т. Д., Что в некоторых случаях действительно приятно! Под более гибким пониманием я подразумеваю, что, основываясь на всех путях, вы можете делать такие вещи, как: создание новой оболочки, в которой переменные среды изменяются так, что вы видите только исполняемые файлы в определенном каталоге, ограничивая (или расширяя) свой выбор. Это все очень «просто», так как вы используете только файлы и переменные среды для достижения большой степени настройки.
UncleZeiv
Другой пример: в принципе, вы можете установить программу в своем домашнем каталоге, например, / home / foo / bin, и просто добавить / home / foo / bin в свои пути, не затрагивая общую систему.
UncleZeiv
3

Я думаю, что лучший совет только в этом сообщении на форуме . Вот ваши варианты (2 и 3 более или менее одинаковы с точки зрения эффекта, на самом деле):

  1. Используйте менеджер пакетов и репозиторий. Это означает, что вы получаете обновления, вы получаете официальные выпуски, подписанные выпуски и т. Д. И т. Д. И т. Д.
  2. Если вы не можете или не хотите использовать пакет из репозитория, соберите пакет для программного обеспечения и установите его с помощью диспетчера пакетов. Подробные инструкции для этого в системах на основе Debian приведены в посте, указанном выше. Поначалу это выглядит страшно, но на самом деле все довольно просто, и особенно в случае с Debian существует множество сценариев, которые сделают всю тяжелую работу за вас.
  3. Если вы не можете заставить этот метод работать, используйте его, checkinstallкак рекомендовали другие. Это очень простая замена для установки:

    $ ./configure
    $ make
    $ sudo checkinstall
    

    Это должно собрать программное обеспечение как обычно, а затем запустить make installв ограниченной среде, которая отслеживает, что оно делает, и создает пакет, который будет выполнять именно эти вещи. Затем он устанавливает этот пакет с вашим менеджером пакетов. Удаление затем аналогично удалению любого другого пакета, как в (2).

  4. Если вы не можете или не хотите использовать менеджер пакетов, тогда make install, я думаю, используйте. И надеюсь, что сопровождающий программного обеспечения поддерживает процедуру удаления.
Эсме
источник