Как удалить make linux

Обновлено: 05.07.2024

Какой менеджер пакетов используется в настоящее время?¶

Dnf, являющийся, в свою очередь, форком Yum.

Могу ли я использовать Yum в Fedora?¶

Начиная с Fedora 24, yum присутствует в Fedora лишь как символическая ссылка на dnf, сохранённая для обратной совместимости.

Что такое Flatpak пакеты?¶

Flatpak – это современный прогрессивный формат самодостаточных пакетов для GNU/Linux. Он поддерживает рантаймы, изоляцию внутри песочниц, установку без наличия прав суперпользователя и многое другое.

Какие преимущества и недостатки у Flatpak пакетов?¶

  • поддерживает динамическую линковку с большим количеством библиотек из рантаймов, что решает проблемы с лицензированием, их поддержкой в актуальном состоянии и исправлением в них ошибок, а также уязвимостей;

  • библиотеки, для которых нет рантаймов, могут быть упакованы непосредственно внутрь флатпака и подгружаться по мере необходимости;

  • Flatpak позволяет установить разные версии приложений одновременно;

  • для установки не требуются права суперпользователя;

  • поддерживается контейнерная изоляция приложения внутри собственной песочницы;

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

  • могут использоваться на любом дистрибутиве GNU/Linux без перекомпиляции и перекомпоновки;

  • лёгкое создание и хостинг собственных репозиториев.

  • из-за того, что Flatpak пакеты по определению должны запускаться на разных дистрибутивах, они содержат в себе все зависимости либо в виде рантаймов, либо внутри флатпака;

  • в публичных репозиториях (например Flathub) мейнтейнеры не занимаются обновлением своих пакетов до актуальных рантаймов, из-за чего уже при установке нескольких приложений в системе появится куча различных версий одних и тех же рантаймов, что тратит очень много места на диске впустую;

  • из-за использования разных рантаймов полноценно не используется разделяемая память библиотек, т.е. каждое приложение загружает все свои зависимости в собственное адресное пространство;

  • отсутствует возможность использования общесистемных настроек среды для контейнеризированных приложений;

  • отсутствует возможность использования уже установленных в системе библиотек.

Можно ли устанавливать программы посредством make install?¶

Категорически не рекомендуется, ибо:

  1. make install порождает в системе кучу никем и ничем не отслеживаемых файлов: бинарников, конфигов, прочих файлов. Это в большинстве случаев приведёт к множеству проблем при обновлении или удалении;

  2. make install не учитывает файлы других пакетов и может запросто перезаписать или удалить в системе что-то важное, т.к. действие выполняется с правами суперпользователя;

  3. make install не ведёт никакого журнала действий, поэтому всё, что оно произвело, невозможно полноценно откатить;

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

Установка пакетов штатным пакетным менеджеров имеет множество преимуществ:

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

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

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

  4. при удалении пакета производится полный откат действий, предпринятых при установке (даже если были изменены какие-то конфиги, эти действия будут откачены полностью, т.к. хранится diff внутри базы ПМ);

  5. при обновлении перезаписываются только изменённые файлы. Более того, может быть скачан и установлен только дифф. изменений;

  6. если при обновлении пакета возникает конфликт какого-то конфига, он не будет молча перезаписан, а будет применён патч на существующий, либо, если это невозможно, будет запрошено действие у пользователя.

Можно ли использовать PIP или NPM для установки программ и модулей?¶

Нет. Глобальная установка чего-либо через pip (pip2, pip3) либо npm по своей деструктивности аналогична make install .

Нужной Python библиотеки нет в репозиториях. Как можно безопасно использовать PIP?¶

В таком случае рекомендуется либо локальная установка модулей посредством pip с параметром --user , либо использование Python Virtual Environment :

Установленные таким способом модули будут размещены в домашнем каталоге пользователя и не помешают работе системы.

Как правильно применять Python Virtual Environment?¶

Установим пакеты python3-virtualenv и python3-setuptools:

Создадим виртуальное окружение:

Теперь внутри него допускается использовать любые механизмы установки пакетов Python: pip, install.py и т.д.

Здесь foo-bar – название venv контейнера. Допускается создавать неограниченное их количество.

Как удалить установленные пакеты из Python Virtual Environment?¶

Создадим и экспортируем в файл foo-bar-installed.txt список установленных пакетов из PIP:

Удалим данные пакеты:

Как правильно обновлять систему?¶

Fedora поддерживает два вида обновлений: через консоль средствами пакетного менеджера dnf , либо через графические менеджеры, основанные на PackageKit.

Обновление системы средствами dnf:

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

Как часто следует устанавливать обновления системы?¶

Чем чаще устанавливаются обновления, тем меньше проблем будет при этом за счёт плавной миграции между файлами конфигурации приложений, сервисов и т.д.

Мы рекомендуем устанавливать обновления системы ежедневно.

Можно ли автоматизировать установку критических обновлений?¶

Да. Установим специальный сервис для автоматической проверки и установки обновлений:

Все параметры могут быть тонко настроены в конфигурационном файле /etc/dnf/automatic.conf .

Как мне обновить Fedora до новой версии?¶

Процесс обновления стандартен и максимально безопасен:

Весь процесс установки будет выполнен во время следующей загрузки системы.

Если произошёл какой-то конфликт, то рекомендуется очистить все кэши dnf:

Возможно ли сделать откат к предыдущей версии Fedora?¶

Нет, это действие официально не поддерживается.

Для отката на предыдущую версию необходимо восстановить созданную ранее резервную копию.

Как мне обновить Fedora до Rawhide?¶

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

Весь процесс установки будет выполнен во время следующей загрузки системы.

Возможно ли откатиться с Rawhide назад на обычный релиз?¶

Можно ли обновляться через несколько версий?¶

Официально поддерживается лишь обновление с текущей на следующую версию. Если требуется выполнить обновление сразу через несколько релизов дистрибутива, то настоятельно рекомендуется делать это последовательно (например F27 -> F28 -> F29 -> F30 и т.д.).

Когда лучше выполнять обновление при выходе новой версии дистрибутива?¶

Рекомендуется обновлять систему до новой версии Fedora в течение месяца после её официального релиза.

При обновлении dnf ругается на дубликаты пакетов.¶

Установим утилиту package-cleanup:

Удалим дубликаты и повреждённые пакеты:

База RPM оказалась повреждена. Как восстановить?¶

Для запуска пересборки базы данных RPM следует выполнить:

Настоятельно рекомендуется сделать резервную копию каталога /var/lib/rpm перед этим действием.

Dnf сохраняет старые ядра. Это нормально?¶

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

Как можно уменьшить количество сохраняемых ядер?¶

Откроем файл /etc/dnf/dnf.conf в текстовом редакторе:

Изменим значение переменной installonly_limit :

Минимально допустимое значение – 2 (будут сохраняться два ядра: текущее и предыдущее).

Как настроить работу dnf через прокси?¶

Откроем файл /etc/dnf/dnf.conf в текстовом редакторе:

Изменим значение переменной proxy (при отсутствии добавим):

Если используемый прокси-сервер требует проверки подлинности (аутентификации), то укажем также и авторизационные данные для подключения:

Здесь LOGIN – логин пользователя на прокси-сервере, а PASSWORD – его пароль.

Здесь METHOD – название метода аутентификации, используемого прокси-сервером.

Список часто используемых методов:

Подробнее о поддерживаемых методах аутентификации см. в документации.

Как отключить установку слабых зависимостей?¶

Откроем файл /etc/dnf/dnf.conf в текстовом редакторе:

Изменим значение переменной install_weak_deps (при отсутствии добавим):

Как мне запретить установку обновлений для ряда пакетов?¶

Откроем файл /etc/dnf/dnf.conf в текстовом редакторе:

Изменим значение переменной exclude (при отсутствии добавим):

Здесь вместо примера укажем нужные пакеты, разделяя их пробелом. Допускаются стандартные символы подстановки.

Что такое Delta RPM?¶

Технология Delta RPM позволяет сократить расход трафика при регулярной установке обновлений за счёт того, что скачиваться будет не новая версия целиком, а лишь разница между ней и установленной в системе.

К сожалению, на медленных устройствах: HDD, eMMC, SD и т.д., это значительно замедляет процесс установки обновлений , поэтому функцию можно отключить .

Как отключить использование Delta RPM?¶

Откроем файл /etc/dnf/dnf.conf в текстовом редакторе:

Изменим значение переменной deltarpm (при отсутствии добавим):

Как можно вручную удалить старое ядро?¶

Для ручного удаления старого ядра можно выполнить:

Здесь 4.10.14 – это версия удаляемого ядра.

Какие сторонние репозитории лучше всего подключать?¶

Как работать с Flatpak пакетами в Fedora?¶

В системе нет кодеков мультимедиа. Как их установить?¶

Для начала следует подключить репозиторий RPM Fusion , после чего установить кодеки из группы multimedia и sound-and-video:

Как отключить автообновление кэшей dnf?¶

Что лучше: dkms или akmods?¶

Конечно akmods, т.к. он автоматически собирает и устанавливает полноценные RPM пакеты.

Каким способом можно обновить пакет из тестовых репозиториев?¶

Чтобы установить обновление из Fedora Testing, необходимо временно подключить соответствующий репозиторий:

Репозиторий updates-testing подключается однократно только для данного сеанса работы dnf.

Как получить список файлов установленного пакета?¶

Как узнать в каком пакете находится конкретный файл?¶

Для этого можно воспользоваться плагином dnf repoquery:

Для поиска бинарников и динамических библиотек можно применять альтернативный метод:

Можно ли установить несколько версий Java в систему?¶

Да, это возможно. В настоящее время поддерживаются следующие версии Java. Допускается их одновременная установка.

Собственно сабж. Поставил себе через make install Mplayer, по компилил первый раз в жизни - что-то пошло не так и плеер просит перекомпилить его с несколькими ключами.

Скажите, как можно удалить Мплеер, установленный таким образом? (в мане по Mplayer про это не слово) =(

make uninstall разве там нет?

А make uninstall выполняется в исходном архиве, или в уже прошедшем ./configure и make? Или оно без разницы?

после ./configure можно

Плюс совет на будущее: НИКОГДА не делай make install, если только не делал ./configure --prefix=/usr/local/myprogram. По возможности используй checkinstall.


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.

> в /usr/local, но лично мне дальше своего домашнего каталога вылезать не хочется, тем более некоторые пакеты ставят тоже в этот каталог

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

Я использовал исходный код для сборки одного пакета, например ниже:

Но, к сожалению, я обнаружил, что это последняя версия, и в ней много ошибок, поэтому мне нужно удалить / удалить ее. Но как я могу это сделать? Я пытался, make clean; make uninstall но все же я вижу, что это существует:

Как вы удалите это сейчас?

Обычно вы можете просто использовать:

если приложение было установлено как root.

Но это будет работать, только если разработчик пакета позаботился о создании хорошего правила удаления.

Вы также можете попытаться взглянуть на шаги, используемые для установки программного обеспечения, запустив:

А затем попробуйте отменить эти шаги вручную.

В будущем, чтобы избежать такого рода проблем, старайтесь использовать checkinstall вместо того, чтобы по make install возможности (AFAIK всегда, если вы не хотите сохранить и скомпилированную, и упакованную версию одновременно). Он создаст и установит файл deb, который затем можно удалить с помощью вашего любимого менеджера пакетов.

make clean обычно очищает каталоги сборки, пакет не удаляется. Он используется, когда вы хотите быть уверены, что все это скомпилировано, а не только измененные файлы.

Я тоже это сделал. Но все же он существует, как показано в pkg-config и ls /usr/lib/myplugin/libXYZ.so +1 за использование checkinstall - это заставляет всю эту проблему испариться. @Google: если make uninstall не работает, вам нужно отследить, что сделала make install, и отменить его вручную. Еще одна вещь, которую нужно иметь в виду, это то, что если он make install был запущен от имени пользователя root (например, sudo make install ), как это обычно бывает, то для sudo make uninstall его удаления всегда нужно запускать виртуально . Если вы уже запустили make install , вы все еще можете использовать checkinstall . Обычно checkinstall перезаписывает все, что make install создано. После этого просто используйте dpkg -r <package.deb> , и все должно быть удалено.

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

вы можете установить checkinstall из репозиториев, краткое описание пакета;

CheckInstall отслеживает все файлы, созданные или измененные вашим сценарием установки («make install», «make install_modules», «setup» и т. Д.), Создает стандартный бинарный пакет и устанавливает его в вашу систему, что дает вам возможность удалить его с помощью стандартные утилиты управления пакетами вашего дистрибутива.

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

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

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

Это не ошибка, это то, что происходит, когда разработчики прибегают к распространению через исходный код, а не через нативные методы упаковки.

Вы можете сделать ваши исходные файлы пакетами debian, используя checkinstall или dhbuild. Честно говоря, на мой взгляд, новые пользователи должны избегать установки из исходного кода, а разработчики должны избегать распространения только по исходному тексту.

Я знаю, но иногда это неизбежно . В этом случае это была просто небольшая игра, которая на самом деле не нужна, но когда-то назад я должен был установить MATLAB вычислительный инструмент, используемый в моем университете, и должен был установить его у источника, поскольку они это сделали. У меня нет файла deb для Ubuntu . Но я обязательно пойду через методы checkinstall и dhbuild . спасибо

Я знаю несколько пакетов, которые поддерживают "make uninstall", но многие другие поддерживают make install DESTDIR = xxx "для поэтапной установки.

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

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

Например, я использовал это недавно, чтобы иметь дело с protobuf-3.3.0. На RHEL7:

Предпочитаю ням рпм, если можете.

Предпочитаю подходить к dpkg, где вы можете.

Я также разместил этот ответ на stackoverflow

Мы должны договориться о том , что делать деинсталлировать бы не всегда работать, поэтому ниже более инициативного решения.

Это предполагает использование программы paco, которая доступна в программном центре Ubuntu. После того, как мы установили paco, мы можем использовать его в режиме журнала, когда мы «делаем установку» программы. Paco действует как оболочка для вашей «make install» и создает журнал в каталоге / var / log / paco со списком файлов, скопированных в различные каталоги. Кроме того, вы могли видеть файлы в интерфейсе Paco.

Например, когда я скомпилировал php из исходного кода, я сделал следующее:

Параметр l заставляет paco работать в режиме журнала. Это создало файл журнала в / var / log / paco с именем php5 (имя, которое я дал в команде). Он содержит все файлы, которые копируются в различные стандартные места во время установки. Вы можете использовать редактор командной строки или paco gui для просмотра файлов.

Ниже приведен пример получения списка файлов с помощью редактора командной строки sed
(замените php5 на ваше имя файла).

Как только вы получили список файлов, вы знаете, как их удалить, не так ли? Действительно, вы можете передать результаты вышеуказанной команды в rm, используя обратные пометки, как показано ниже:

Примечание. Из-за ограничений LD_PRELOAD paco не может отслеживать трассировку suid-программ. Смотрите справочную страницу.

Я скомпилировал php-5.6.30 из исходного кода, не настроив его с помощью openssl, поэтому мне пришлось вернуться и установить его с нуля. Использование make uninstall не работало, так как Makefile для php его не поддерживает.

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

Замените php программным обеспечением, которое необходимо удалить

Приведенная выше команда выводит список каталогов, в которых установлены двоичные файлы, например: / usr / local / bin / php, / usr / bin / php .. удалите каждый файл / каталог, указанный в ваших выходных данных.

sudo rm -f /usr/local/bin/php

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

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

В этой статье мы разберем как удалить deb пакет Ubuntu, при чем удалить чисто, так, чтобы после него не осталось следов в системе. Также поговорим о полном удалении PPA, поскольку много пакетов, которых нет в официальных репозиториях мы устанавливаем из PPA.

Как удалить пакет Ubuntu

Самый простой способ удалить пакет Ubuntu, это воспользоватся одной из графических утилит, поставляемых специально для этого, например Synaptic или Центр приложений Ubuntu. По сути это делается в пару кликов. Сначала рассмотрим порядок действий в Центре приложений Ubuntu.

Запустить центр приложений вы можете из панели значков Unity:

ubuntu

Список всех установленных пакетов находится на вкладке Установлено, здесь приложения рассортированы по категориям:

ubuntu1

Чтобы удалить пакет Ubuntu, достаточно кликнуть по нему левой кнопкой мыши, и когда появляться доступные действия нажать кнопку Удалить:

Для завершения нужно будет подтвердить удаление и ввести пароль.

Пакет удален, но не совсем так, как нам хотелось бы. Но об этом позже.

Дальше рассмотрим пакетный менеджер Synaptic. Это как ни как стороннее программное обеспечение, но многие его используют из-за большого функционала и удобного интерфейса. Если программа еще не установлена, ее нужно установить с помощью центра приложений или выполнив в терминале:

sudo apt install synaptic

ubuntu6

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

Посмотреть установленные пакеты вы можете выбрав вкладку состояние, а затем выбрав Установленные:

ubuntu7

Удалить deb ubuntu вы можете просто нажав правой кнопкой мыши и в контекстном меню на нужном пакете и выбрав отметить для удаления или отметить для полного удаления:

ubuntu8

Программа покажет, какие еще пакеты будут удалены, это те пакеты, которые зависят от нашего пакета:

ubuntu9

Теперь, чтобы завершить удаление, осталось нажать кнопку Применить:

ubuntu10

Теперь программа покажет какие пакеты будут удалены. И пойдет процесс удаления:

ubuntu11

ubuntu12

Просто удаление и полное удаление отличается только тем, что при полном удалении удаляются конфигурационные файлы. Но проблема этих инструментов в том, что пакеты установленные как зависимости и рекомендованные к программе не удаляются и остаются в системе. Такое поведение наблюдается как в 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/ ' "$file"; done

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

Но все же способ есть, обычно, разработчики в файле сценариев makefile, кроме цели install реализуют цель uninstall, которая дозволяет выполнить обратное действие.

Поэтому если у вас осталась папка с исходным кодом той программы можно просто перейти в нее и выполнить make uninstall чтобы удалить приложение Ubuntu:

cd /папка/с/исходниками
$ sudo make uninstall

Выводы

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

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

Ну что ж, начнем повествование: Если провести аналогию с проприетарной ОС от мелкомягких, то в Линукс есть аналог такого компонента операционной системы, как "Установка/удаление программ", только называется он - пакетный менеджер. Пакетный менеджер представляет собой набор инструментов, выполняющих функции, схожие с аналогом от Windows. Но есть у пакетных менеджеров кардинальные отличия!

Во-первых, в Windows при установке программы, ее (программу) нужно еще найти, а то и приобрести. В Linux все ПО собрано в одном месте, которое называется репозиторий (он же репа, репАзитАрий и др). Репозиторий представляет собой сетевое хранилище всего ПО, предоставляемое данным дистрибутивом Linux/UNIX.

Во-вторых, предположим, Вам нужно установить игрушку на ОС Windows, которая требует для своей работы такой компонент как DirectX. В данном случае может быть 2 выхода: 1. DirectX уже содержится в дистрибутиве установщика, 2. Вам необходимо будет самому найти данный компонент и установить. При обоих вариантах возникает некоторые НО. При первом варианте, возможно, что у вас уже есть установленный DirectX, причем более новой версии, чем идет с игрой. В таком случае может возникнуть конфликт, допустим, если более новый компонент требуется для другой игры. В результате, установка DX старой версии может привести к некорректной работе игры требующей более новую версию DX. (на данный момент это НО не очень актуально, т.к. последние версии установщиков DX корректно обрабатывают свою "версионность", спасибо комментатору Новичок). Другой момент "НО" заключается в том, что необходимо прикладывать усилия для поиска данного компонента.

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

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

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

Но вернемся к нашим носорогам. И зададим себе несколько вопросов. Почему бы не поставлять ВСЕ программы в пакетах (ведь ими так просто управлять)? Почему некоторое ПО предоставляется в исходных кодах, а некоторое поставляется в готовых пакетах? Ответы на данные вопросы - ниже.

Теперь коснусь программного обеспечения, поставляемого в исходных кодах. Для каких целей может понадобиться устанавливать /компилировать программу из исходных кодов:

  1. Вам требуется программа, не входящая в ваш дистрибутив (точнее в репозиторий Вашего дистрибутива).
  2. Вам нужна программа, которая доступна только в виде исходных текстов.
  3. Вам нужна некая функция программы, которая может быть включена только после перекомпиляции программы из исходных текстов.
  4. Вы хотите узнать о том как программа работает или принять участие в ее разработке.
  5. Возможны, конечно, и другие причины

1. Управление программным обеспечением поставляемым в исходных кодах.

Установка программ

Управление программным обеспечением в виде исходных кодов на всех дистрибутивах практически не отличается и это управление можно привести к следующей последовательности действий:

По завершении выполнения скрипта configure, он сохраняет информацию о конфигурации в файле с названием config.cache, расположенном в том же каталоге, что и сам скрипт configure.

Если вам необходимо запустить ./configure вновь, то убедитесь, что прежде вы удалили файл config.cache, поскольку configure будет использовать настройки из config.cache, если он существует, не производя повторной проверки вашей системы.

Если все идет хорошо, то к концу процесса конфигурирования вы должны получить созданный Makefile. Он называется сборочный файл проекта, программа с именем make используется для его обработки и сборки программы. Make-файл содержит правила, являющиеся инструкциями, которые сообщают программе make как собирать различные компоненты приложения.

make install устанавливает скомпилированную программу. Фактически, производится копирование необходимых файлов в нужные каталоги. Если вы производите установку в /usr/local, то вам могут потребоваться права суперпользователя (root).

Примечание
Для запуска make и make install необходим установленный компилятор. (пакет gcc)
В Debian вместе с gcc необходимо установить еще некоторые пакеты. Чтобы не запоминать их все, можно установить просто пакет build-essential.

Существуют две разновидности программ, собираемых из исходников: использующих статическую компоновку и использующие динамическую компоновку. Статическая компоновка отличается от динамической тем, что при сборке программы со динамической компоновкой используются функции разделяемых библиотек, а при статической компоновке используется собственный экземпляр библиотек. Просмотреть список разделяемых библиотек, от которых зависит исполняемый файл можно командой ldd. При сборке программ использующих библиотеки совместного доступа, к ней добавляется участок кода, вызывающий при запуске программы динамический компоновщик ld.so (/usr/bin/ld), который ищет необходимые библиотеки и подставляет функции библиотек к программе (каталоги поиска библиотек заданы конфигурационным файлом /etc/ld.so.conf).

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

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

  1. ручное удаление всего, что установила программа make install
  2. выполнение команды make uninstall в каталоге с исходниками программы. Тут есть нюанс - не всегда разработчики подразумевают параметр uninstall для команды make, поэтому возвращаемся к первому пункту.

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

В общих чертах, это была информация о установке программного обеспечения из исходных кодов. Теперь поговорим о бинарных пакетах.

2. Управление программным обеспечением поставляемым в бинарном виде (читай: в готовых пакетах)

В Linux существует несколько разновидностей систем управления пакетов. Основные из них именуются как RPM, dpkg и Portage. Существуют и другие разновидности пакетных менеджеров, но по моему мнению, они не имеют большого распространения. Как уже выше говорилось, назначение пакетного менеджера (системы управления пакетами), это: управлять процессом установки, удаления, настройки и обновления различных компонентов программного обеспечения.

Итак, расскажу подробней о каждой разновидности. RPM разработана компанией Red Hat, применяется в большей части в дистрибутивах, образованных от Red Hat Linux и используется для управления пакетами *.rpm. Система управления пакетов dpkg (Debian Package) разработана основателем дистрибутива Debian - Яном Мердоком, применяется в дистрибутиве Debian и других, производных от Debian, dpkg управляет пакетами в формате *.deb. Система Portage используется в дистрибутивах Gentoo. Программное обеспечение в Gentoo поставляется в виде нескольких файлов.

Пакетные менеджеры не умеют автоматически разрешать зависимости в устанавливаемых пакетах. Системы пакетных менеджеров лишь отслеживают зависимости. Слово "разрешать" думаю, хорошо будет понятно на примере. Например, при установке какого-либо пакета rpm , зависящего от другого пакета , пакетный менеджер лишь сообщит, что для текущего пакета необходим еще другой , но не предложит автоматически его установить. Для автоматического разрешения зависимостей существуют, так скажем, "надстройки" для пакетных менеджеров, которые автоматизируют отслеживание версий ПО, отслеживание и разрешение зависимостей между пакетами (то есть на примере выше, данная надстройка предложит автоматически установить недостающие пакеты).

Для rpm существуют следующие утилиты:

  • apt-rpm, порт APT, изначально выполненный Conectiva, затем существенно доработанный ALT Linux Team и продолжающий развиваться
  • apt4rpm, порт APT Debian. Рекомендуется для использовании с некоторыми репозиториями Fedora Core. Почти не разрабатывается, но расходует меньше ресурсов процессора, чем те средства, которые перечислены выше. Более поздний проект, нежели apt-rpm.
  • smart, доступен для многих дистрибутивов
  • urpmi, используется в Mandriva Linux
  • YaST, используется в SuSE
  • yum, разработан в Yellow Dog Linux, также используется в Fedora Core и ASP Linux

Для dpkg, преимущественно:

3. Особенности и отличия использования RPM, dpkg и исходных текстов

Как и RPM, так и dpkg возможно установить и на RedHat и на Deb - дистрибутивы, но по моему мнению, это равносильно принципу круглое - носим, квадратное - катаем. И dpkg и RPM очень похожи по своему принципу работы, но все же в них есть кое какие отличия, например: при установке пакета rpm не устанавливает пакет, пока не будут разрешены все зависимости, deb - устанавливает, но говорит, что пакет установлен, но работать не будет, пока не будут установлены все зависимости.

Любой пакетный менеджер хранит информацию о зависимостях пакетов в своей базе (например RPM - в /var/lib/rpm), соответственно, если какое-то ПО было установлено НЕ из пакетного менеджера, то информации о нем нет в базе данных, соответственно, при установке пакета, который (пакет) зависит от ПО установленного, например, из исходных кодов, будет выдана ошибка об отсутствии зависимого пакета (хотя он установлен). Для решения данной проблемы необходимо использовать ключ --nodeps, который отключает отслеживание зависимостей (актуально для RPM).

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

4. Основные команды управления программами

Команды управления программным обеспечением приведены в статье основные команды Linux.

Теперь опишу краткий список команд по работе с пакетными менеджерами:

На сегодня все, более полный список команд тут. До новых встреч!

upd 2011.02.03: переработка статьи, дополнение 3 и 4 раздела
upd 2012.06.08: дополнение 1 раздела (информация об удалении ПО)

Читайте также: