Вопрос или проблема
Для развлечения я собрал и установил gcc 4.7.2 в ~/build, который содержит директории bin, doc, lib, include, man, share и другие, все из которых добавлены к соответствующим переменным окружения.
Теперь я хочу удалить его, чтобы он перестал затенять мой v4.4.7 /usr/bin/gcc со всеми его связанными библиотеками и прочим (что бы это ни было), но, конечно, в файлах сборки GCC нет цели для деинсталляции, и find ~/bin -iname "*gcc*"
находит довольно много.
Единственный вариант – установить префикс в какую-то временную директорию, снова запустить установку, а затем использовать этот новый набор файлов в качестве руководства для удаления старых? Или есть более простой способ?
Это на Springdale Linux 6.4 (Pisa), ядро 2.6.32-358.11.1.el6.x86_64, и у меня нет доступа к root.
В GCC 5.1.0 лучший способ на данный момент – установить его куда-нибудь еще с помощью DESTDIR
, а затем использовать это для определения, какие файлы были созданы, как упомянуто по адресу: https://stackoverflow.com/a/25304014/895245
Хотя нет цели uninstall
на верхнем уровне, в некоторых директориях она есть, в частности в gcc
, так что можно сделать:
cd build/gcc
sudo make uninstall
Это не удаляет всего, что было установлено, но удаляет основные исполняемые файлы, такие как gcc
, g++
, cpp
… содержащиеся в этой директории, так что этого может быть достаточно.
Ответ или решение
Удаление GCC, установленного из исходного кода, может быть непростым процессом, особенно если отсутствует встроенная функция удаления. Ниже приведены рекомендации по правильному удалению GCC 4.7.2, установленного в директорию ~/build
. Это поможет избежать конфликта с системной версией компилятора в /usr/bin/gcc
.
1. Убедитесь в понимании структуры установки
При установке GCC из исходных кодов обычно происходит создание директорий, таких как bin
, lib
, include
, и т.д. В данном случае вы указали, что ваша установка расположена в ~/build
. Прежде всего, надо определить, какие файлы были установлены, чтобы избежать дополнительных проблем и обеспечить корректное удаление.
2. Использование find
для поиска файлов
Вы уже упомянули использование команды find
. Это отличный шаг для идентификации всех файлов и каталогов, связанных с установленным GCC. Выполните следующую команду в терминале:
find ~/build -iname "*gcc*"
Эта команда поможет вам собрать список всех файлов и директорий, связанных с установкой GCC.
3. Удаление установленных файлов
Вы не имеете доступа к правам администратора, что может затруднить процесс. Однако, вы можете вручную удалить файлы, используя информацию, полученную с помощью команды find
. Вам нужно будет пройтись по всем найденным файлам и директориям и удалить их:
rm -rf ~/build/bin/gcc
rm -rf ~/build/bin/g++
rm -rf ~/build/include/*
rm -rf ~/build/lib/*
# и продолжайте для других файлов...
При этом, обратите внимание на то, какие файлы вы удаляете, чтобы не затронуть системы или другие установленные пакеты.
4. Рассмотрение использования временной директории
Ваше предложение о том, чтобы установить GCC в другую временную директорию и использовать её для определения, что именно необходимо удалить, может быть хорошей идеей. Установите GCC в директорию, например, ~/temp-build
, с помощью следующих команд:
./configure --prefix=~/temp-build
make
make install
Затем, сравните содержимое ~/build
и ~/temp-build
, чтобы тщательно определить, какие файлы необходимо удалить.
5. Использование make uninstall
Некоторые подкаталоги установки GCC могут содержать цель uninstall
. Вы можете попробовать выполнить следующую команду из директории ~/build/gcc
:
cd ~/build/gcc
make uninstall
Обратите внимание, что это не избавит от всех файлов, но поможет удалить основные исполняемые файлы, такие как gcc
, g++
, cpp
и другие.
Заключение
Удаление GCC из исходного кода требует внимательности и организации. Важно следить за тем, чтобы не удалить необходимые системные компоненты. Используйте инструменты, такие как find
, для создания списка файлов, и будьте осторожны при выполнении команд удаления. Если потребуется, запланируйте установку в временные директории для более организации процесса удаления.