Вопрос или проблема
После установки пакета ros, когда я выполнил rosdep check, он отобразил некоторые отсутствующие системные зависимости, которые не были учтены при apt-get install. Поэтому я установил их с помощью rosdep install. Однако когда я хочу удалить пакет ros,
sudo apt-get purge ros-*
sudo apt-get purge python-ros*
sudo apt-get autoremove
выполнение вышеуказанных трех команд, похоже, удаляет только зависимости ros, а не системные зависимости. Как мне также удалить системные зависимости в этом случае? Спасибо.
PS: Я пытаюсь установить только один пакет ros на Ubuntu 16.04 ARM.
Краткий ответ: сделать это легко не получится.
Apt отслеживает, какие пакеты вы указали для установки (вручную), а какие пакеты были просто включены (авто).
Пример:
$ sudo apt install foo bar // Вручную
Будут установлены следующие дополнительные пакеты:
baz, libfoo1, libfoo2, libbar // Авто
Администратор приказал системе установить ‘foo’ и ‘bar’. Они останутся установленными, пока администратор не прикажет системе удалить их. Они никогда не будут автоматически удалены.
Неважно, является ли ‘bar’ на самом деле зависимостью ‘foo’. Человек высказал мнение, и оба установлены вручную.
Администратор обязан отслеживать вручную выбранные зависимости.
Если ваши логи /var/log/apt назад достаточно далеко, эти логи подскажут вам, какие пакеты были добавлены. Это может быть отличной помощью.
Ответ или решение
Удаление системных зависимостей для пакета ROS может быть сложной задачей, особенно если они были установлены как зависимости для других пакетов, и управление их удалением не всегда интуитивно ясно. Давайте рассмотрим, какие шаги необходимо предпринять и какие факторы стоит учитывать для эффективного удаления системных зависимостей в вашей системе Ubuntu 16.04 ARM.
1. Понимание зависимостей
Первое, что нужно понимать — это различие между ручными (manual
) и автоматическими (auto
) зависимостями. Когда вы устанавливаете пакет через apt
, все его зависимости помечаются как автоматические, но если вы явно установили эти зависимости в качестве отдельных пакетов (например, выполнив команду sudo apt install
), они остаются помеченными как ручные. Это вызывает проблемы при удалении, так как apt
не удалит пакеты, отмеченные как ручные, даже если они больше не нужны.
2. Проверка установленных пакетов
Используйте следующую команду, чтобы получить список всех установленных пакетов, которые могут быть связаны с вашим пакетом ROS:
dpkg --get-selections | grep ros-
Кроме того, проверьте, какие пакеты были установлены в процессе установки вашего пакета:
cat /var/log/apt/history.log
Это даст вам представление о том, какие зависимости были добавлены.
3. Удаление пакетов ROS
Для удаления вашего пакета ROS достаточно использовать команду:
sudo apt-get purge ros-*
4. Удаление системных зависимостей
Теперь к самой проблеме — удалению системных зависимостей. Выполнение команды sudo apt-get autoremove
после удаления пакета ROS теоретически должно удалить неиспользуемые зависимости, однако это работает только для пакетов, которые были отмечены как автоматические.
Принудительное удаление зависимостей
Если у вас есть пакеты, которые вы хотите удалить явно, вам придется сделать это вручную, указав их имена в команде apt-get purge
:
sudo apt-get purge <имя_зависимости_1> <имя_зависимости_2> ...
Также можно воспользоваться инструментами, такими как deborphan
, который поможет вам найти и удалить неиспользуемые пакеты и их зависимости:
sudo apt install deborphan
sudo deborphan | xargs sudo apt-get -y remove --purge
5. Дополнительные советы
-
Запись зависимостей: В будущем ведите учет установленных вами пакетов и их зависимостей для упрощения процесса очистки.
-
Использование
apt-mark
: Вы можете изменить статус пакетов сmanual
наauto
с помощью командыapt-mark
:
sudo apt-mark auto <имя_пакета>
Это может помочь сделать apt-get autoremove
более эффективным.
Заключение
Удаление системных зависимостей для пакетов ROS не является тривиальной задачей из-за сложности управления зависимостями в системе Ubuntu. Вам потребуется время и необходимость отслеживать установленные пакеты, но с помощью предложенных выше инструментов и стратегий вы сможете упростить процесс очистки вашей системы. Не забудьте периодически проверять, какие пакеты можно удалить, чтобы поддерживать вашу систему в чистоте и актуальности.