команда dpkg в linux

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

Глава 20. Управление пакетами программного обеспечения

20.1. Терминология

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

20.1.5. Программное обеспечение с открытым исходным кодом

При этом у вас также остается возможность посещения вебсайта интересующего вас проекта (samba.org, apache.org, github.com, ) и скачивания ванильного исходного кода (т.е., исходного кода без изменений, внесенных разработчиками дистрибутива).

20.1.6. Управление программным обеспечением с помощью приложения с графическим интерфейсом

Для удобства конечных пользователей существует несколько приложений с графическим интерфейсом, предназначенных для управления программным обеспечением в процессе использования окружения рабочего стола (вам следует искать пункт меню «Установка / удаление программного обеспечения» или что-то похожее).

Ниже приведен снимок окна Центра приложений Ubuntu из состава дистрибутива Ubuntu 12.04. Приложения с графическим интерфейсом не будут обсуждаться в рамках данной книги.

20.2. Управление пакетами программного обеспечения формата deb

20.2.1. О пакетах программного обеспечения формата deb

Сравните этот вывод с выводом этой же команды, выполненной на настольном компьютере, который работает под управлением дистрибутива Ubuntu.

Ниже приведен пример команды для получения информации об отдельном пакете программного обеспечения. Символы ii в начале строки говорят о том, что пакет программного обеспечения установлен.

10.2.6. Основные функции утилиты dpkg

20.3. Утилита apt-get

20.3.1. Команда apt-get update

При исполнении команды apt-get update осуществляется автоматическая загрузка файлов со списками имен, версий и краткими описаниями всех пакетов программного обеспечения, доступных из всех репозиториев, которые активированы в вашей системе.

В выводе из примера ниже можно обнаружить несколько репозиториев с строками URL, начинающимися с be.archive.ubuntu.com из-за того, что данный компьютер установлен в Бельгии. В вашем случае строки URL могут отличаться.

Выполняйте команду apt-get update каждый раз перед выполнением других операций с пакетами программного обеспечения.

20.3.2. Команда apt-get upgrade

Одна из наиболее полезных возможностей утилиты apt-get заключается в безопасном обновлении всего установленного на данный момент на вашем компьютере программного обеспечения с помощью единственной команды.

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

20.3.3. Команда apt-get clean

Команда apt-get clean позволяет удалить все файлы из этой директории.

20.3.4. Команда apt-cache search

20.3.5. Команда apt-get install

20.3.6. Команда apt-get remove

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

20.3.7. Команда apt-get purge

Обратите внимание на то, что утилита dpkg не обладает информацией о полностью удаленном пакете помимо той, что пакет был удален и в системе не осталось файлов конфигурации.

20.4. Утилита aptitude

Большинство пользователей применяет утилиту aptitude для управления пакетами программного обеспечения в дистрибутивах Debain, Mint и Ubuntu.

Команда для синхронизации списков программного обеспечения с репозиториями:

Команда для обновления всех программных компонентов до последних версий в дистрибутиве Debian.

Команда для обновления всех программных компонентов до последних версий в дистрибутивах Ubuntu и Mint.

Команда для установки приложения со всеми зависимостями:

Команда для поиска в репозиториях приложений, имена или описания которых содержат указанную строку:

Команда для удаления приложения:

Команда для удаления приложения вместе со всеми его файлами конфигурации:

20.5. Директория apt

20.5.1. Файл конфигурации /etc/apt/sources.list

На моем сервере, работающем под управлением дистрибутива Debian, данный файл выглядит следующим образом:

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

20.6. Управление пакетами программного обеспечения формата rpm

20.6.1. О пакетах программного обеспечения формата rpm

20.6.6. Директория /var/lib/rpm

20.6.7. Утилита rpm2cpio

Но для чего это может понадобиться?

20.7. Утилита yum

20.7.1. Информация об утилите yum

20.7.2. Команда yum list

Выполните команду yum list available для получения списка доступных для установки пакетов программного обеспечения. Параметр available является необязательным.

20.7.3. Команда yum search

20.7.4. Команда yum provides

20.7.5. Команда yum install

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

20.7.6. Команда yum update

20.7.7. Группы программного обеспечения yum

Выполните команду yum grouplist для ознакомления со списком всех доступных групп программного обеспечения.

20.7.8. Файл конфигурации /etc/yum.conf и репозитории

20.8. Утилита alien

Утилита alien является экспериментальным инструментом, который предназначен для преобразования форматов пакетов rpm и deb (и других).

В реальной жизни следует использовать пакет с утилитой netcat из репозитория вашего дистрибутива или пакет программного обеспечения формата deb с вебсайта проекта.

20.9. Загрузка программного обеспечения в обход репозитория дистрибутива

При загрузке любого программного обеспечения в обход репозитория дистрибутива первым и наиболее важным шагом является чтение поставляемого в комплекте файла README!

20.10. Компиляция программного обеспечения из исходного кода

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

Читайте также:  где посмотреть бонусы тинькофф блэк

20.11. Практическое задание: управление пакетами программного обеспечения

1. Проверьте, установлены ли пакеты программного обеспечения с именами gcc, sudo и wesnoth в вашей системе.

2. Используйте утилиту yum или aptitude для поиска и установки пакетов программного обеспечения с именами scp, tmux и man-pages. Удалось ли найти в репозитории вашего дистрибутива все перечисленные пакеты.

3. Найдите в сети Интернет информацию о программном обеспечении ‘webmin’ и выясните способ установки этого программного обеспечения в систему.

4. Если есть время, найдите пакеты программного обеспечения samba, а также пакеты с документацией проекта samba в формате pdf (тысячи страниц документации в рамках двух файлов pdf).

20.12. Корректная процедура выполнения практического задания: управление пакетами программного обеспечения

1. Проверьте, установлены ли пакеты программного обеспечения с именами gcc, sudo и wesnoth в вашей системе.

В дистрибутиве RedHat/CentOS:

В дистрибутиве Debian/Ubuntu:

2. Используйте утилиту yum или aptitude для поиска и установки пакетов программного обеспечения с именами scp, tmux и man-pages. Удалось ли найти в репозитории вашего дистрибутива все перечисленные пакеты.

В дистрибутиве RedHat/CentOS:

В дистрибутиве Debian/Ubuntu:

3. Найдите в сети Интернет информацию о программном обеспечении ‘webmin’ и выясните способ установки этого программного обеспечения в систему.

Поисковая система Google приведет вас на вебсайт webmin.com.

4. Если есть время, найдите пакеты программного обеспечения samba, а также пакеты с документацией проекта samba в формате pdf (тысячи страниц документации в рамках двух файлов формата pdf).

Источник

Записки IT специалиста

Технический блог специалистов ООО»Интерфейс»

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

Пакеты и репозитории

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

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

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

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

Как правило типичный дистрибутив на базе Debian имеет четыре основных репозитория:

Каждый репозиторий состоит из нескольких разделов, в Debian это:

В Ubuntu разделы немного иные:

Список подключенных репозиториев хранится в /etc/apt/sources.list, ниже показано содержимое этих файлов в Debian 10 (слева) и Ubuntu 18.04 (справа).

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

В Ubuntu более развернутый список репозиториев, он полностью не уместился на скриншот, но для понимания структуры записей приведенного фрагмента хватает. Сверху вниз подключены Base и Security updates для поддерживаемых компанией разделов, затем они же вместе для свободного и несвободного ПО поддерживаемого сообществом, а вот Stable backports прописан для всех веток одновременно, еще ниже (за пределами экрана на скриншоте) подключены Security updates и специальный партнерский репозиторий для пакетов партнеров компании Canonical.

Типичная запись репозитория выглядит как строка со следующей структурой:

Адреса репозиториев сохраняются постоянными, отличаясь только именами выпуска, поэтому если вам нужно обновить выпуск, скажем с Debian 9 на Debian 10, то вам просто потребуется заменить везде stretch (имя девятого выпуска) на buster.

Также в Debian можно использовать вместо имен классы выпусков:

Но на практике это не используется, так как при выходе нового релиза вы получите его автоматическое обновление, что в большинстве случаев неприемлемо. Хотя если вы энтузиаст и хотите всегда быть на переднем крае прогресса, то можете везде прописать testing, получив аналог популярных ныне rolling release дистрибутивов, которые не имеют закрепленной версии и всегда предоставляют наиболее свежий срез пакетов, зачастую ценой стабильности.

Для добавления собственных источников пакетов предназначена директория /etc/apt/sources.list.d/ в которой следует располагать файлы с адресами источников и обязательным расширением .list. Хотя их можно прописать и в основной файл, но это считается дурным тоном.

Читайте также:  чем обработать пасть кота

Низкоуровневый менеджер пакетов Dpkg

Данная утилита обычно используется для установки пакетов, скачанных вручную, например, коммерческого ПО. Синтаксис ее довольно прост и легко запоминается. Прежде всего полезно получить информацию о пакете, чтобы узнать его зависимости и возможные конфликты, для этого выполните:

Для установки просто выполните:

Но помните, что dpkg не умеет разрешать зависимости и вы должны будете сделать это вручную, либо скачать все необходимые пакеты и установить их в нужном порядке, это можно поручить dpkg, запустив его с маской в имени пакетов:

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

Чтобы получить сведения о всех доступных и установленных пакетах используется ключ -l, но он выведет список всех пакетов, поэтому следует использовать его с маской, например, так:

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

Теперь мы видим больше пакетов, как установленных в системе, так и доступных в репозитории. Но это не все пакеты, относящиеся к gimp, так как наша маска предписывает искать пакеты, которые начинаются на gimp и игнорирует иные варианты. Поэтому, если вы не уверены, что правильно задали маску, можно пойти другим путем, отдав вывод dpkg команде grep, которая найдет все нужные вхождения.

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

Для удаления пакета используйте:

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

Но будьте внимательны, при этой операции могут быть удалены пользовательские данные, хранившиеся в стандартных расположениях. Это актуально для таких видов программ, как веб-сервера или СУБД.

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

Улучшенный инструмент для работы с пакетами APT и команды apt и apt-get

Настоящим пакетным менеджером в Debain является APT (Advanced Package Tool, Улучшенный инструмент для работы с пакетами), который умеет работать с репозиториями, разрешать зависимости и взаимодействовать с dpkg, которая, собственно, и занимается установкой пакетов.

APT имеет два интерфейса командной строки: apt-get и более новый apt. Их синтаксис и возможности во многом схожи, и мы будем практически всегда использовать последний, кроме отдельных случаев, когда требуемые возможности поддерживает только apt-get.

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

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

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

Установить обновления можно командой:

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

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

Обычные обновления следует выполнять командой upgrade, тогда как dist-upgrade следует использовать для обновления дистрибутива, в том числе и на минорные версии в составе текущего выпуска.

Для установки пакетов следует использовать команду:

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

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

Для удаления пакета используйте:

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

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

Читайте также:  chapters как ввести код друга в игре

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

Удалить их можно командой:

Как можно заметить, APT достаточно дружелюбен к пользователю, постоянно подсказывая ему необходимые команды, что в очередной раз развеивает миф о сложности администрирования Linux, особенно в режиме командной строки.

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

Эта команда полностью очистит кеш, также можно использовать более мягкую очистку с помощью apt-get, который дает возможность удалить из кеша только те пакеты, которые на текущий момент отсутствуют в репозитории (были заменены новыми версиями или удалены):

Затронем еще один интересный момент, допустим вы в своих экспериментах удалили или еще как-либо повредили входящие в состав пакета файлы, но система считает, что пакет установлен и отказывается устанавливать его повторно. Но можно всегда переустановить пакет:

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

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

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

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

Для получения информации о пакете просто введите:

Чтобы отменить фиксацию выполните:

Объем данной статьи не позволяет рассмотреть все возможности apt, поэтому мы ограничились наиболее необходимыми в повседневной деятельности, ну и в завершение небольшая порция юмора. Если запустить команду apt без параметров, то вы увидите краткую справку в самом конце которой будет строка: В APT есть коровья СУПЕРСИЛА. Что это значит? Просто наберите:

И вы увидите старую пасхалку от разработчиков, которая была еще в apt-get, а затем ее заботливо перенесли в apt.

Графические оболочки Aptitude и Synaptic

Кроме родных для APT консольных интерфейсов apt-get и apt существуют и более высокоуровневые оболочки. Одна из них aptitude, которая может работать как в псевдографическом режиме, так и в режиме командной строки, имея синтаксис во многом повторяющий синтаксис apt. Благодаря этому многие воспринимают эту утилиту как еще один интерфейс к APT, хотя основной задачей разработчиков было именно создание псевдографической интерактивной оболочки.

В современных дистрибутивах Debian и Ubuntu aptitude отсутствует в основной поставке и вам потребуется установить этот пакет отдельно.

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

Однако не смотря на то, что Aptitude и Synaptic являются зрелыми и эффективными инструментами, мы бы не рекомендовали их использование по крайней мере до тех пор, пока вы не освоите работу с базовым интерфейсом apt.

Магазины приложений

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

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

Ниже показан магазин для актуальной версии Debian

Заключение

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

Дополнительные материалы:

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Или подпишись на наш Телеграм-канал:

Источник

Компьютерный онлайн портал