- Удаление программ, установленных через make install
- Re: Удаление программ, установленных через make install
- Re: Удаление программ, установленных через make install
- Re: Удаление программ, установленных через make install
- Re: Удаление программ, установленных через make install
- Re: Удаление программ, установленных через make install
- Re: Удаление программ, установленных через make install
- Просто о make
- Make- основные сведения
- Простейший Makefile
- Компиляция из множества исходников
- Инкрементная компиляция
- Фиктивные цели
- Переменные
- Автоматические переменные
- Как удалить пакет Ubuntu
- Как удалить пакет Ubuntu
- Как удалить пакет Ubuntu в терминале
- Выводы
Удаление программ, установленных через make install
Собственно сабж. Поставил себе через make install Mplayer, по компилил первый раз в жизни — что-то пошло не так и плеер просит перекомпилить его с несколькими ключами.
Скажите, как можно удалить Мплеер, установленный таким образом? (в мане по Mplayer про это не слово) =(
Re: Удаление программ, установленных через make install
make uninstall разве там нет?
Re: Удаление программ, установленных через make install
А make uninstall выполняется в исходном архиве, или в уже прошедшем ./configure и make? Или оно без разницы?
Re: Удаление программ, установленных через make install
после ./configure можно
Re: Удаление программ, установленных через make install
Плюс совет на будущее: НИКОГДА не делай make install, если только не делал ./configure —prefix=/usr/local/myprogram. По возможности используй checkinstall.
Re: Удаление программ, установленных через make install
make uninstall делай там же, где делал make, make install — в корне каталога с исходниками. Если удалил этот каталог уже — можешь распаковать опять исходники, сделать configure как раньше, а потом сразу make uninstall.
Вообще лично я у себя для таких программ, которые нужно компилить из исходников, или которые не устанавливаются через пакеты, сделал в домашнем каталоге каталог apps, и всегда делаю configure —prefix=$HOME/apps — не рутом, а обычным пользователем.
/.bashrc нужно выставить следующие переменные: export PATH=$PATH:$HOME/apps/bin LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/apps/lib
2 последние переменные нужны, если устанавливать таким образом какие-нибудь библиотеки для разработки.
Как уже посоветовали, можно тоже самое делать в /usr/local, но лично мне дальше своего домашнего каталога вылезать не хочется, тем более некоторые пакеты ставят тоже в этот каталог, так что все равно пакеты будут мешаться с кашей из программ make install.
А еще лучше собирать свой пакет для своего дистрибутива и ставить его по-человечески — rpm’ки как оказалось делать вообще очень просто (правда лично у меня за 6 лет только месяц назад дошли руки узнать, как это делается http://www.linux.org.ru/view-message.jsp?msgid=2141724).
Re: Удаление программ, установленных через make install
> в /usr/local, но лично мне дальше своего домашнего каталога вылезать не хочется, тем более некоторые пакеты ставят тоже в этот каталог
Выбрось этот дистрибутив. В /usr/local никогда и ничего не должно ставиться из дистрибутивных пакетов. /usr/local — это специальная помойка для админа машины.
Источник
Просто о make
Меня всегда привлекал минимализм. Идея о том, что одна вещь должна выполнять одну функцию, но при этом выполнять ее как можно лучше, вылилась в создание UNIX. И хотя UNIX давно уже нельзя назвать простой системой, да и минимализм в ней узреть не так то просто, ее можно считать наглядным примером количество- качественной трансформации множества простых и понятных вещей в одну весьма непростую и не прозрачную. В своем развитии make прошел примерно такой же путь: простота и ясность, с ростом масштабов, превратилась в жуткого монстра (вспомните свои ощущения, когда впервые открыли мэйкфайл).
Мое упорное игнорирование make в течении долгого времени, было обусловлено удобством используемых IDE, и нежеланием разбираться в этом ‘пережитке прошлого’ (по сути — ленью). Однако, все эти надоедливые кнопочки, менюшки ит.п. атрибуты всевозможных студий, заставили меня искать альтернативу тому методу работы, который я практиковал до сих пор. Нет, я не стал гуру make, но полученных мною знаний вполне достаточно для моих небольших проектов. Данная статья предназначена для тех, кто так же как и я еще совсем недавно, желают вырваться из уютного оконного рабства в аскетичный, но свободный мир шелла.
Make- основные сведения
make — утилита предназначенная для автоматизации преобразования файлов из одной формы в другую. Правила преобразования задаются в скрипте с именем Makefile, который должен находиться в корне рабочей директории проекта. Сам скрипт состоит из набора правил, которые в свою очередь описываются:
1) целями (то, что данное правило делает);
2) реквизитами (то, что необходимо для выполнения правила и получения целей);
3) командами (выполняющими данные преобразования).
В общем виде синтаксис makefile можно представить так:
То есть, правило make это ответы на три вопроса:
Несложно заметить что процессы трансляции и компиляции очень красиво ложатся на эту схему:
Простейший Makefile
Предположим, у нас имеется программа, состоящая всего из одного файла:
Для его компиляции достаточно очень простого мэйкфайла:
Данный Makefile состоит из одного правила, которое в свою очередь состоит из цели — «hello», реквизита — «main.c», и команды — «gcc -o hello main.c». Теперь, для компиляции достаточно дать команду make в рабочем каталоге. По умолчанию make станет выполнять самое первое правило, если цель выполнения не была явно указана при вызове:
Компиляция из множества исходников
Предположим, что у нас имеется программа, состоящая из 2 файлов:
main.c
Makefile, выполняющий компиляцию этой программы может выглядеть так:
Он вполне работоспособен, однако имеет один значительный недостаток: какой — раскроем далее.
Инкрементная компиляция
Представим, что наша программа состоит из десятка- другого исходных файлов. Мы вносим изменения в один из них, и хотим ее пересобрать. Использование подхода описанного в предыдущем примере приведет к тому, что все без исключения исходные файлы будут снова скомпилированы, что негативно скажется на времени перекомпиляции. Решение — разделить компиляцию на два этапа: этап трансляции и этап линковки.
Теперь, после изменения одного из исходных файлов, достаточно произвести его трансляцию и линковку всех объектных файлов. При этом мы пропускаем этап трансляции не затронутых изменениями реквизитов, что сокращает время компиляции в целом. Такой подход называется инкрементной компиляцией. Для ее поддержки make сопоставляет время изменения целей и их реквизитов (используя данные файловой системы), благодаря чему самостоятельно решает какие правила следует выполнить, а какие можно просто проигнорировать:
Попробуйте собрать этот проект. Для его сборки необходимо явно указать цель, т.е. дать команду make hello.
После- измените любой из исходных файлов и соберите его снова. Обратите внимание на то, что во время второй компиляции, транслироваться будет только измененный файл.
После запуска make попытается сразу получить цель hello, но для ее создания необходимы файлы main.o и hello.o, которых пока еще нет. Поэтому выполнение правила будет отложено и make станет искать правила, описывающие получение недостающих реквизитов. Как только все реквизиты будут получены, make вернется к выполнению отложенной цели. Отсюда следует, что make выполняет правила рекурсивно.
Фиктивные цели
На самом деле, в качестве make целей могут выступать не только реальные файлы. Все, кому приходилось собирать программы из исходных кодов должны быть знакомы с двумя стандартными в мире UNIX командами:
Командой make производят компиляцию программы, командой make install — установку. Такой подход весьма удобен, поскольку все необходимое для сборки и развертывания приложения в целевой системе включено в один файл (забудем на время о скрипте configure). Обратите внимание на то, что в первом случае мы не указываем цель, а во втором целью является вовсе не создание файла install, а процесс установки приложения в систему. Проделывать такие фокусы нам позволяют так называемые фиктивные (phony) цели. Вот краткий список стандартных целей:
- all — является стандартной целью по умолчанию. При вызове make ее можно явно не указывать.
- clean — очистить каталог от всех файлов полученных в результате компиляции.
- install — произвести инсталляцию
- uninstall — и деинсталляцию соответственно.
Для того чтобы make не искал файлы с такими именами, их следует определить в Makefile, при помощи директивы .PHONY. Далее показан пример Makefile с целями all, clean, install и uninstall:
Теперь мы можем собрать нашу программу, произвести ее инсталлцию/деинсталляцию, а так же очистить рабочий каталог, используя для этого стандартные make цели.
Обратите внимание на то, что в цели all не указаны команды; все что ей нужно — получить реквизит hello. Зная о рекурсивной природе make, не сложно предположить как будет работать этот скрипт. Так же следует обратить особое внимание на то, что если файл hello уже имеется (остался после предыдущей компиляции) и его реквизиты не были изменены, то команда make ничего не станет пересобирать. Это классические грабли make. Так например, изменив заголовочный файл, случайно не включенный в список реквизитов, можно получить долгие часы головной боли. Поэтому, чтобы гарантированно полностью пересобрать проект, нужно предварительно очистить рабочий каталог:
Для выполнения целей install/uninstall вам потребуются использовать sudo.
Переменные
Все те, кто знакомы с правилом DRY (Don’t repeat yourself), наверняка уже заметили неладное, а именно — наш Makefile содержит большое число повторяющихся фрагментов, что может привести к путанице при последующих попытках его расширить или изменить. В императивных языках для этих целей у нас имеются переменные и константы; make тоже располагает подобными средствами. Переменные в make представляют собой именованные строки и определяются очень просто:
Существует негласное правило, согласно которому следует именовать переменные в верхнем регистре, например:
Так мы определили список исходных файлов. Для использования значения переменной ее следует разименовать при помощи конструкции $( ); например так:
Ниже представлен мэйкфайл, использующий две переменные: TARGET — для определения имени целевой программы и PREFIX — для определения пути установки программы в систему.
Это уже посимпатичней. Думаю, теперь вышеприведенный пример для вас в особых комментариях не нуждается.
Автоматические переменные
Автоматические переменные предназначены для упрощения мейкфайлов, но на мой взгляд негативно сказываются на их читабельности. Как бы то ни было, я приведу здесь несколько наиболее часто используемых переменных, а что с ними делать (и делать ли вообще) решать вам:
Источник
Как удалить пакет Ubuntu
Установка и удаление программ одна из самых важных вещей для пользователя компьютера. Поскольку нам нужно как нибудь получать новые, нужные программы, а также удалять лишние. Но удаление пакетов в Ubuntu имеет некоторые тонкости. После удаления могут остаться зависимости, пакеты установленные, как рекомендованные, а также конфигурационные файлы.
В этой статье мы разберем как удалить deb пакет Ubuntu, при чем удалить чисто, так, чтобы после него не осталось следов в системе. Также поговорим о полном удалении PPA, поскольку много пакетов, которых нет в официальных репозиториях мы устанавливаем из PPA.
Как удалить пакет Ubuntu
Самый простой способ удалить пакет Ubuntu, это воспользоватся одной из графических утилит, поставляемых специально для этого, например Synaptic или Центр приложений Ubuntu. По сути это делается в пару кликов. Сначала рассмотрим порядок действий в Центре приложений Ubuntu.
Запустить центр приложений вы можете из панели значков Unity:
Список всех установленных пакетов находится на вкладке Установлено, здесь приложения рассортированы по категориям:
Чтобы удалить пакет Ubuntu, достаточно кликнуть по нему левой кнопкой мыши, и когда появляться доступные действия нажать кнопку Удалить:
Для завершения нужно будет подтвердить удаление и ввести пароль.
Пакет удален, но не совсем так, как нам хотелось бы. Но об этом позже.
Дальше рассмотрим пакетный менеджер Synaptic. Это как ни как стороннее программное обеспечение, но многие его используют из-за большого функционала и удобного интерфейса. Если программа еще не установлена, ее нужно установить с помощью центра приложений или выполнив в терминале:
sudo apt install synaptic
Запустить программу можно через терминал, выполнив команду:
Посмотреть установленные пакеты вы можете выбрав вкладку состояние, а затем выбрав Установленные:
Удалить deb ubuntu вы можете просто нажав правой кнопкой мыши и в контекстном меню на нужном пакете и выбрав отметить для удаления или отметить для полного удаления:
Программа покажет, какие еще пакеты будут удалены, это те пакеты, которые зависят от нашего пакета:
Теперь, чтобы завершить удаление, осталось нажать кнопку Применить:
Теперь программа покажет какие пакеты будут удалены. И пойдет процесс удаления:
Просто удаление и полное удаление отличается только тем, что при полном удалении удаляются конфигурационные файлы. Но проблема этих инструментов в том, что пакеты установленные как зависимости и рекомендованные к программе не удаляются и остаются в системе. Такое поведение наблюдается как в Synaptic, так и в Центре приложений Ubuntu. Поэтому мы переходим к описанию самого гибкого способа — удаление пакетов Ubuntu в терминале.
Как удалить пакет Ubuntu в терминале
В новых версиях Ubuntu для управления пакетами, а в том числе и удаления можно использовать новый менеджер пакетов — apt. Команда удаления выглядит таким образом:
sudo apt remove имя_пакета
Будет выполнено полное удаление пакета, включая конфигурационные файлы и зависимости, только рекомендованные программы останутся. Если вы хотите использовать apt-get чтобы удалить deb ubuntu, то порядок действий немного другой. Для обычного удаления пакета выполните:
sudo apt-get remove имя_пакета
Для удаления пакета вместе с его конфигурационными файлами, выполните:
sudo apt-get purge имя_пакета
А чтобы, также удалить зависимости, установленные вместе с пакетом, нужно после одной из предыдущих команд выполнить:
sudo apt autoremove
Будут удаленны не только явно указанные зависимости, но и программы установленные как рекомендованные.
Ну с основами разобрались, теперь перейдем к более сложным ситуациям. Что если вы устанавливали программу из deb файла и теперь не знаете точно, как называется ее пакет, чтобы удалить?
Это очень просто узнать, например по исполняемому файлу, допустим исполняемый файл программы TimeShift находится по адресу /usr/bin/timeshift, теперь узнаем ее пакет:
sudo dpkg -S /usr/bin/timeshift
Как видите, пакет так и называется — timeshift. Теперь можно удалить программу Ubuntu, одним из выше описанных способов.
Очень часто мы устанавливаем недостающее нам программное обеспечение из PPA, но не все эти пакеты нужны нам на протяжении долгого времени, а при обновлении системы, могут даже вызвать ошибки. Так как же удалить все пакеты установленные из PPA? Для этого есть специальная утилита: ppa-purge.
Если она еще не установлена, устанавливаем командой:
sudo apt install ppa-purge
Теперь, чтобы удалить все пакеты установленные из определенного ppa используйте:
sudo ppa-purge -i ppa:владелец_ppa/имя_ppa
Обратите внимание на ppa:владелец_ppa/имя_ppa — обычно в таком формате записываются все PPA: протокол:владелец/имя.
Узнать список репозиториев можно в программе источники приложений:
Такой командой можно одним махом удалить пакеты ubuntu, установленные из ppa:
find /etc/apt/sources.list.d -type f -name «*.list» -print0 | \
while read -d $’\0′ file; do awk -F/ ‘/deb / && /ppa\.launchpad\.net/
Если вы устанавливали приложение из исходных кодов, то удалить его намного сложнее, потому что оно не контролируется менеджером пакетов, и соответственно система не знает какие файлы ему принадлежат.
Но все же способ есть, обычно, разработчики в файле сценариев makefile, кроме цели install реализуют цель uninstall, которая дозволяет выполнить обратное действие.
Поэтому если у вас осталась папка с исходным кодом той программы можно просто перейти в нее и выполнить make uninstall чтобы удалить приложение Ubuntu:
cd /папка/с/исходниками
$ sudo make uninstall
Выводы
В этой статье мы рассмотрели все, что поможет вам удалить приложение Ubuntu. При чем удалить полностью, а не только файлы программы. Если у вас остались вопросы, пишите в комментариях.
Источник