Рейтинг:0

Как безопасно удалить пакет/программу, которая не была установлена ​​через диспетчер пакетов

флаг in

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

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

Я обнаружил следующие «лишние»/неизвестные процессы:

  • elasticsearch, "/usr/share/elasticsearch/jdk/bin/java" от пользователя сообщениебу (извините, имя кажется обрезанным)
  • "/usr/bin/mono /usr/lib/hyperfastcgi/4.0/..." от пользователя системный журнал
  • mysqld от пользователя системаd-c
  • "/usr/bin/mono /usr/lib/mono/4.5/mono-service.exe" от пользователя системный журнал

Итак, собственно, у меня три вопроса:

  1. Безопасно ли просто удалить папку с бинарниками для этого софта и всего остального?
  2. Как я могу определить, где он настроен для запуска при запуске?
  3. Что еще я должен знать/сделать, чтобы безопасно удалить его?

Спасибо!

Michael avatar
флаг sa
Я хочу поощрить голосование за этот вопрос. Это очень распространенная ситуация для людей, которые были новичками и начали изучать серьезное системное администрирование, но им нужно навести порядок в том, что они оставили. Выполнение этой очистки должно поощряться.
Рейтинг:2
флаг cn
Bob

Безопасно ли просто удалить папку с двоичным файлом для этого процесса и всего остального?

Да. Нет. Может быть.

Это действительно зависит от того, как производитель намеревался развернуть приложение и что сделал администратор при его установке.

Некоторые приложения (и все их зависимости) действительно развернуты в своем собственном подкаталоге, который может быть одиночным плоским каталогом или большим деревом подкаталогов, часто имитирующим обычную корневую файловую систему Linux, например. с и т.д подкаталог, содержащий файлы конфигурации, [s]бин для двоичных файлов, вар подкаталог, содержащий данные и т. д. и т. д.

Если вы не развернули какие-либо другие приложения в том же подкаталоге ; удаление полностью удалит приложение.

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

Как я могу определить, где он настроен для запуска при запуске?

Довольно типично видеть процессы сервисов/демонов, запускаемые systemd, как в примере ниже. В этом случае статус systemctl должен перечислить юнит-файлы и все процессы, запущенные ими и systemctl -a и другие переключатели тоже могут быть полезны.

Инструмент вроде pstree может быть весьма полезно визуализировать отношения родитель-потомок и увидеть, какой процесс что запустил. Когда используется только systemd, это даст очень похожий результат, как статус systemctl но когда используются другие механизмы, это обычно дает вам представление.

Потом есть еще какие-то "непонятные" методы, например некоторым нравится использовать метод @перезагрузка Спецификация временной метки cron для (повторного) запуска служб cron после перезагрузки.

pstree -a

systemd --switched-root --system --deserialize 22
  ââ/usr/бен/спамд
  â ââспам ребенка
  â ââспам ребенка
  ââagetty --noclear tty1 linux
  ââatd -f
  ââаудитd
  â ââ{аудит}
  ââхронид
  ââcrond -n
  ââdbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
  â ââ{dbus-демон}
  ââdhclient -1 -q -lf /var/lib/dhclient/dhclient--eth0.lease -pf /var/run/dhclient-eth0.pid -H сервер eth0
  ââголубятня
  ââнаковальня
  ââавт.
  ââconfig
  ââimap
  â ââimap-логин
  â ââжурнал
  ââfail2ban-server -s /usr/bin/fail2ban-server -xf start
  â ââ8*[{fail2ban-сервер}]
  ââfirewalld -Es /usr/sbin/firewalld --nofork --nopid
  â ââ{firewalld}
  ââhttpd -DFOREGROUND
  ✓ ✓ ✓ httpd -DFOREGROUND
  ✓ ✓ ✓ httpd -DFOREGROUND
  â âârotatelogs -l /var/log/httpd/error_log.%Y.%m 86400
  â âârotatelogs -l /var/log/httpd/access_log.%Y.%m 86400
  ââмастер -w
  â ââнаковальня -l -t unix -u
  â ââpickup -l -t unix -u
  â ââproxymap -t unix -u
  â ââqmgr -l -t unix -u
  â ââsmtpd -n smtp -t inet -u -o стресс= -s 2
  â ââtlsmgr -l -t unix -u
  ââмм
  â ââ85*[{ммс}]

Хорошим примером является процесс «главный» в этом списке pstree. Это странное имя процесса на самом деле является постфиксом, запускаемым из системного модуля postfix.service. Это было бы легче найти в статус systemctl вывод:

       ââsystem.slice
         ââpostfix.service
         â ââ 1110 /usr/libexec/postfix/master -w
         â ââ 1112 qmgr -l -t unix -u
         â ââ 1121 tlsmgr -l -t unix -u
         â ââ11508 pickup -l -t unix -u
         ââspamass-milter.service
         â ââ1032 /usr/sbin/spamass-milter -g postfix -p /run/spamass-milter/postfix/sock

Что еще я должен знать/сделать, чтобы безопасно удалить его?

Определите, как служба запускается, а затем останавливайте ее, как правило, это хороший первый подход.

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

Michael avatar
флаг sa
Боб, мне нравится ваш ответ, но не могли бы вы прокомментировать, что после удаления программного обеспечения @GeraldIstar должен просмотреть журналы и сообщения о запуске, чтобы увидеть, есть ли какие-либо ошибки, и если да, то следует их исследовать. Возможно, даже стоит переименовать каталог с программным обеспечением, а затем просмотреть журналы, чтобы выяснить, какие проблемы это вызывает, а затем удалить ссылки на программное обеспечение.
Рейтинг:2
флаг sa

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

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

Сделайте полную резервную копию системы на автономный диск, а также отдельную копию своих данных, прежде чем делать это, конечно. Таким образом, если что-то пойдет не так, вы сможете вернуться в рабочее состояние.

Рейтинг:2
флаг sa

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

судо дпкг --проверить

Который проверяет целостность установленных пакетов программного обеспечения. Скорее всего, вы обнаружите в своей системе небольшое количество файлов, которые были изменены — вероятно, файлы конфигурации, которые вы изменили, — и вы должны попытаться понять каждый из них и, возможно, исправить те, которые кажутся неправильными.

Ответить или комментировать

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