Извините, форум закрыт!

Вход в форум не работает, можно читать форум под гостем.

Если лето, то лето во всём!

Автор Тема: Менеджер пакетов APT - возможности, настройка  (Прочитано 14066 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн skylexusАвтор темы

  • Администратор
  • *****
  • Сообщений: 6890
  • Зеркала небес взгляд мой отражают
    • о спутниковой рыбалке и интернете
  • DVB: 3G
  • Спутник: 7E,36E,60E
Debian внес в мир Linux массу положительных нововведений, многие из которых были приняты и другими дистрибутивами. Самым значительным усовершенствованием Debian стала система управления пакетами APT. После ее выпуска все остальные дистрибутивы превратились в устаревший хлам. Сегодня APT сложна, умна, гибка и скрывает от непосвященного линуксоида множество секретов.

ПРОДВИНУТАЯ СИСТЕМА УПРАВЛЕНИЯ ПАКЕТАМИ.
Сама по себе APT (Advanced Packaging Tool) не является системой управления пакетами в прямом смысле этого слова. Все действия по распаковке, регистрации в системе и ведению базы пакетов выполняют утилиты пакета dpkg, в то время как утилиты APT представляют собой обертку, с помощью которой осуществляется поиск пакетов, сверка контрольных сумм, выкачивание из репозитория, разрешение зависимостей, а также ряд других действий. APT включает в себя следующий набор утилит:

УТИЛИТЫ ПАКЕТА APT
apt-cache — манипулирует кэшем доступных пакетов,  обычно используется для поиска пакета и/или получения информации о нем;
apt-cdrom — позволяет добавить CD/ DVD-диск в качестве источника пакетов  (репозитория);
apt-config — читает значения опций, заданных в конфигурационном файле /etc/apt/apt.conf,  используется другими APT-утилитами;
apt-extracttemplates — извлекает конфигурационные файлы DebConf из пакетов, используется другими APT-утилитами;
apt-ftparchive — создает индексные файлы;
apt-get — устанавливает, удаляет, обновляет список пакетов и сами пакеты, центральная APT-утилита;
apt-key — управляет ключами аутентификации , используемыми для проверки подлинности источников пакетов;
apt-secure — проверяет подлинности цифровой подписи пакетов apt,  входящих в состав дистрибутива и репозиториев;
apt-sortpkgs — сортирует индексные файлы.

Утилиты опираются на следующие файлы конфигурации:
КОНФИГУРАЦИОННЫЕ ФАЙЛЫ APT
/etc/apt/sources.list — список источников пакетов  (репозиториев);
/etc/apt/apt.conf — основной файл конфигурации APT;
/etc/apt/preferences — файл предпочтений, управляет тем, какая версия пакета будет установлена в случае наличия в репозитории сразу нескольких версий;

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

ОСНОВНЫЕ КОМАНДЫ APT
apt-cache search маска — поиск пакета
apt-cache show пакет — просмотр информации о пакете
apt-get install пакет — установка пакета
apt-get remove пакет — удаление пакета
apt-get update — обновление кэша доступных пакетов
apt-get upgrade — обновление всех пакетов
Последние две команды обычно выполняются одна за другой, в результате чего переустанавливаются все пакеты, для которых в репозитории доступны новые версии. Если же необходимо обновить только указанный пакет, то после «apt-get update» следует выполнить команду «apt-get install пакет». Дистрибутив Ubuntu сводит процесс «общения» с АРТ-утилитами к кликанью по галочкам графического интерфейса. В нем есть собственный, предельно простой менеджер пакетов (так и называется — Package Manager), запускающийся по cron'у менеджер обновлений Update Manager, графический установщик вручную загруженных deb-пакетов GDebi и более мощная графическая надстройка над АРТ-утилитами Synaptic. Между тем, APT гораздо сложнее и гибче, чем это может показаться на первый взгляд. Поэтому в следующих разделах мы рассмотрим несколько не совсем типичных приемов ее использования.

СТОРОННИЕ ИСТОЧНИКИ ПАКЕТОВ

1. Добавить ссылку на репозиторий в файл /etc/apt/sources.list в следующем формате:
deb uri дистрибутив   [компонент1] [компонент2]   [ . . . ]
Поле uri — это адрес репозитория, который в большинстве случаев является HTTP-адресом, но может быть и ссылкой на локальный репозиторий (file:/root/repository), адресом репозитория на FTP или SSH-сервере. В поле «дистрибутив» указывается имя дистрибутива, для которого собраны пакеты. Для Debian имя может быть одним из stable, oldstable, unstable, testing, в то время как в случае Ubuntu следует указывать только конкретное наименование дистрибутива (например, jaunty), а также различные обозначения на его основе (например, jaunty-updates, jaunty-backports, jaunty-security). Надо сказать, что APT совсем не против того, чтобы смешивать пакеты различных дистрибутивов на одной системе, но за последствия в этом случае будешь отвечать только ты. Компонент обычно носит имя main, contrib или non-free для Debian и main, universe, multiverse, partner и restricted для Ubuntu. Все это имена различных репозиториев пакетов, которые обособлены только для того, чтобы разделить пакеты на основе каких-либо критериев. Например, main — это пакеты, собираемые группой разработчиков Ubuntu/Debian. На качество ПО, содержащегося в них, есть определенные гарантии, включая своевременные обновления и багфиксы, в то время как contrib и universe — это стороннее ПО, которое ты устанавливаешь на свой страх и риск.

2. Добавить в apt keyring публичный ключ репозитория, используемый для удостоверения его подлинности и надежности. Ключ можно получить любыми способами и добавить, выполнив команду «apt-key add ключ», но такой способ редко практикуется из-за неудобства. В подавляющем большинстве случаев ты будешь иметь дело с командой

$ sudo apt-key adv --keyserver сервер-сертификации --recv-keys ID-ключа

которая запрашивает ключ напрямую у сервера сертификации (для Ubuntu это keyserver.ubuntu.com). Именно так большинство сторонних разработчиков распространяют свое ПО для дистрибутивов Debian/Ubuntu (при этом остальные просто выкладывают пакеты и их контрольные суммы). Например, зайдя на страничку интересующего тебя проекта на хостинге launchpad.net и нажав на ссылку Technical details about this PPA, ты увидишь строку, которую необходимо добавить в /etc/apt/sources.list. В Signing key: будет указан ID ключа.

3. Обновить кэш доступных пакетов:

$ sudo apt-get update

4. Установить пакет, используя команду «apt-get install пакет».

Многие девелоперы помещают ссылку на репозиторий и ID его ключа прямо в deb-пакет, поэтому после скачивания пакета, установки и выполнения команды «apt-get update && apt-get upgrade» пакеты будут обновлены вместе с их собратьями, перечисленными в sources.list. В частности, так распространяются браузеры opera и альфа-релиз google chrome. Репозиторий, располагающийся на компакт-диске, добавить в sources.list намного проще. Для этого есть специальная команда apt-cdrom. Ты просто вставляешь CD в привод и выполняешь команду:

$ sudo apt-cdrom add

ХИТРОСТИ И НЕСТАНДАРТНЫЕ СИТУАЦИИ.

APT есть APT, удобна и проста, но иногда не обойтись без ухищрений, о самых полезных из которых ты узнаешь из этого раздела.

1.  По умолчанию команда «apt-get remove» удаляет пакет полностью только в том случае, если ни один из его файлов не был изменен после установки, иначе измененные файлы остаются нетронутыми. Естественно, конфигурационные файлы меняются почти всегда, поэтому apt-get оставляет после себя кучу мусора, которую приходится убирать руками. Команда «apt-get purge», выполненная вместо «apt-get remove», решает эту проблему.

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

$ sudo apt-get install --reinstall пакет

3. Более низкоуровневые утилиты управления deb-пакетами (такие, как dselect и dpkg) ведут специальный список состояний пакетов, который может использоваться для управления тем, какие пакеты должны быть установлены или удалены в пакетном режиме (именно так работает связка dselect+dpkg). Его же можно использовать для многих других целей, например, переноса конфигурации системы на другую машину. Выполни следующую команду:

$ dpkg --get-selections > file

Перенеси файл на другую машину и выполни на ней две команды:
# cat file > dpkg --set-selections
# apt-get dselect-upgrade

В систему будут добавлены все пакеты системы-источника. Чтобы файл состояний пакетов также содержал информацию о том, какие пакеты следует удалить из системы, добавь символ «\*» после аргумента '--get-selections'. Список состояний не содержит версии пакетов, это можно использовать после установки более новой версии дистрибутива для приведения его к требуемому состоянию.

4. Ты вручную наложил заплатку на файл одного из системных пакетов и не хочешь, чтобы этот пакет был обновлен (с уничтожением всех твоих изменений) после вызова «apt-get upgrade». В этом случае тебе на помощь вновь придет список состояний. Пакет может быть «заморожен», в результате чего apt-get откажется его обновлять и пропустит:

# echo –e “coreutils hold” | dpkg –set-selections

Принудительно обновить пакет можно с помощью указания флага ‘–u’ при вызове apt-get.

5. Как и любая система, обладающая сетевым функционалом, APT позволяет использовать прокси для доступа к репозиториям. Чтобы задействовать эту возможность, пропиши в файл /etc/apt/apt.conf строку:

Acquire::http::Proxy «http://xxx.xxx.xxх.ххх:yyyy»

Где xxx.xxx.ххх.ххх— адрес прокси, уууу — порт.

6. Обычно АРТ-утилиты запрашивают самую новую версию пакета из всех, что находятся в его кэше, поэтому если ты добавил в sources. list различные экспериментальные и unstable-репозитории, то после обновления получишь дистрибутив, состоящий исключительно из экспериментальных или unstable-пакетов, и кучу проблем, вызванных таким положением дел. Однако ситуация легко разруливается с помощью помещения в /etc/apt/apt.conf строки:

APT::Default-Release "релиз";

Где релиз — это oldstable, stable, unstable, testing или experimental для Debian или имя релиза для Ubuntu. Теперь, в случае необходимости установить пакет из указанного дистрибутива, просто пропиши его имя после аргумента '-t' при вызове apt-get:

$ sudo apt-get -t unstable install пакет

7.  Все полученные apt-get deb-пакеты хранятся в каталоге /var/cache/apt/archives, а это значит, что в случае переустановки системы ты можешь скопировать содержимое каталога на другой диск/раздел, а после восстановить его и сэкономить время/трафик на установке пакетов. Кроме того, это по сути снапшот твоей установленной системы (той ее части, которую ты установил сам), который можно отнести к другу (вместе с описанным в третьем пункте списком состояний) или, при ненадобности, удалить для освобождения места.

8. Удаленный снапшот системы, описанный в предыдущем пункте, легко восстанавливается с помощью приведенной ниже конструкции:

$ sudo dpkg --get-selections | grep -v "deinstall" | awk '{print $1}' | xargs dpkg-repack

9. Кроме бинарных пакетов, репозитории Debian/Ubuntu содержат и пакеты с исходными текстами приложений, которые могут быть получены и собраны с использованием команды:

$ sudo apt-get -b source имя пакета

СТОРОННИЕ УТИЛИТЫ

Система APT прошла очень долгий путь развития, поэтому помимо официальных утилит, включенных в пакет apt, репозитории Debian и Ubuntu изобилуют массой сторонних утилит, которые могут быть использованы для выполнения некоторых нестандартных задач. Наиболее полезная из них называется apt-file и необходима, как нетрудно догадаться из названия, для определения принадлежности того или иного файла определенному пакету. Устанавливаем:

$ sudo apt-get install apt-file

Просим apt-file создать кэш всех файлов, установленных в системе пакетов (по нему будет производиться поиск):

$ apt-file update

Ищем:

$ apt-file search /usr/bin/apt-get apt:   /usr/bin/apt-get

Запрашиваем список всех файлов пакета:

$ apt-file list apt

Простая утилита apt-show-versions покажет, какие пакеты можно обновить, с указанием версий и других данных. Запусти ее с флагом '-u', чтобы получить список только подлежащих обновлению пакетов (вместо списка всех пакетов). Если ты установил большое количество различных пакетов и теперь хочешь избавиться от ненужного хлама, то поможет утилита deborphan, которая производит поиск неиспользуемых пакетов и осиротевших зависимостей. Просто запусти deborphan без аргументов и увидишь список пакетов, который тут же можно передать на вход команде “apt-get remove” или же просто выполнить команду:

$ sudo apt-get remove  'deborphan'

По умолчанию deborphan обрабатывает только пакеты, содержащие библиотеки, но такое поведение можно изменить, добавив флаг '-а' к вызову команды:

$ deborphan -a

Не стоит сразу бросаться удалять показанные утилитой пакеты, потому как даже самый мощный эвристический алгоритм не способен определить твои личные потребности. Так, мне программа показала пакеты google-chrome, inkscape и даже xorg.

Утилита apt-move позволит тебе создать локальный репозиторий. Установи программу, открой файл /etc/apt-move.conf, укажи в опции LOCALDIR путь к каталогу, в котором должен располагаться репозиторий, и запусти команду:

$ sudo apt-move update

В результате все выкачанные из Сети с помощью apt-get пакеты (каталог /var/cache/apt/archives) будут перемещены в указанный в конфиге каталог, для которого будет создан индексный файл. Это удобный способ создания внутрисетевого репозитория для тех случаев, когда массу одинаковых пакетов необходимо установить на множество машин. Для создания локального репозитория также очень удобно применять сервер apt-proxy, позволяющий кэшировать скачиваемые из репозитория deb-пакеты на стороне сервера. Для этого apt-proxy устанавливается на выделенной машине (возможно, шлюзе), а sources.list клиентов модифицируется так, чтобы в качестве поля и uri всех репозиториев был указан адрес этой машины. Как результат, все запросы deb-пакетов перенаправляются к apt-proxy, который запрашивает пакету головного репозитория и сохраняет его в своем кэше, а ответ на все последующие запросы этого пакета будет отдан из кэша. Для начала устанавливаем apt-proxy на выделенной машине:

$ sudo apt-get install apt-proxy

Далее открываем файл /etc/apt-proxy/apt-proxy-v2.conf, переходим в секцию [DEFAULT] и заменяем значение опции address на IP-адрес машины, а также описываем используемые apt-proxy источники пакетов, например:

$ sudo vi /etc/apt-proxy/apt-proxy-v2.conf
[ubuntu]

backends = http://ru.archive.ubuntu.com/ubuntu/

min_refresh_delay = 1d

[ubuntu-security]

backends = http://security.ubuntu.com/ubuntu/

min_refresh_delay = 1d

Обычно этих двух адресов достаточно для покрытия всего спектра пакетов, предоставляемого разработчиками Ubuntu. Перезапускаем apt-proxy:

$ sudo invoke-rc.d apt-proxy restart

Чтобы перевести клиентов на использование apt-proxy, берем стандартный sources.list Ubuntu, заменяем все реальные поля uri на http://IP-aдpec-apt-proxy:9999/ubuntu/ и копируем этот файл на каждый клиент. Существует и множество других, менее интересных утилит, работающих в связке с APT. Например, apt-dater позволяет производить обновление пакетов на большом количестве удаленных узлов, используя псевдографический интерфейс. Программа aptsh реализует командный интерфейс, подобный sh, поверх команд пакета apt; aptfs — виртуальная файловая система для управления APT. Утилита debdelta, позволяющая обновлять пакеты с помощью выкачивания из Сети их дельт, могла бы стать темой отдельной статьи, если бы для нее существовал хотя бы один своевременно обновляемый репозиторий.

APTITUDE

Утилита apt-get и ее родственники — не единственная реализация APT. Еще более мощная, удобная и универсальная альтернатива им зовется aptitude и представляет собой концентрированный функционал apt-get, apt-cache и dselect. Aptitude позволяет устанавливать/удалять, искать, обновлять и производить массу других действий с пакетами, используя два типа интерфейса: командный режим, сходный с apt-get и apt-cache, и режим с псевдографическим интерфейсом, внешне напоминающий интерфейс dselect, но гораздо более удобный и функциональный.

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

aptitude install — установка пакета;
aptitude remove — удаление пакета и осиротевших зависимостей;
aptitude purge — удаление пакета, осиротевших зависимостей и оставшихся после них конфигурационных файлов;
aptitude search — поиск пакета в кэше (списке доступных пакетов);
aptitude update — обновление кэша;
aptitude safe-upgrade — обновление пакетов;
aptitude clean — удаление ранее скачанных пакетов;
aptitude full-upgrade — обновление пакетов, даже если это действие требует удаления каких-либо пакетов;
aptitude show — информация о пакете;
aptitude autoclean — удаление устаревших пакетов;
aptitude hold — установка запрета на обновление пакета.

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

ПАСХАЛЬНЫЕ ЯЙЦА

Разработчики утилит APT оказались ребятами с несколько извращенным чувством юмора. Чего только стоит результат следующей команды:

$ sudo apt-get moo

Еще более дико выглядит то, что встроили в свою программу создатели aptitude. Попробуй:

$ sudo aptitude moo

Этакое пасхальное яйцо без пасхального яйца. Ну, ладно:

$ sudo aptitude -v moo
$ sudo aptitude -vv moo
$ sudo aptitude -vvv moo
$ sudo aptitude -vvvv moo
$ sudo aptitude -vvvvv moo
И — финальный аккорд:
$ sudo aptitude -vvvvvv moo

Вместо заключения

ПОЛЕЗНЫЕ КОМАНДЫ APT-CACHE
apt-cache show пакет —детальная информация о пакете;
apt-cache showpkg пакет — общая информация о пакете;
apt-cache depends пакет— список зависимостей пакета;
apt-cache rdepends пакет — список обратных зависимостей (кому нужен указанный пакет)

СЛОВАРЬ APT
Пакет — программа, библиотека, исходники или любые другие файлы, а также их метаданные, упакованные в особым образом сформированный архив. Репозиторий — место хранения deb-пакетов.

Кэш доступных пакетов (или просто кэш) — файл, в котором кэшируется информация обо всех пакетах, доступных из источников, перечисленных в /etc/apt/sources.list. Кэш обновляется во время каждого вызова команды «apt-get update».

Индексный файл — головной файл репозитория, содержащий название, версию, размер, краткое и полное описание и зависимости для каждого пакета. Носит имя Packages.gz в случае бинарного репозитория и Sources.gz — для репозитория исходных текстов. Создается с помощью утилит pkg-scanpackages и dpkg-scansources.

Apt keyring (дословно: связка ключей apt) — хранилище ключей, удостоверяющих подлинность источников пакетов (репозиториев).

ЧТО ВНУТРИ?

Отличительной чертой пакетов формата Deb является их простота. Любой Deb-пакет — это три файла: data.tar.gz, control.tar.gz и debian-binary, запакованные архиватором аг. Файл data.tar.gz — это содержимое пакета (бинарники, man'ы, документация и т.д.), control.tar.gz — метаданные, в простейшем варианте два файла: control, содержащий описание пакета, зависимости, размер и т.д., и md5sums — контрольные суммы всех файлов пакета. Файл debian-binary содержит версию формата Deb-пакета (например, 2.0). Для распаковки пакета можно использовать команду:

$ аг -xv пакет, deb && tar -xzf data.tar.gz

Оригинальная версия статьи в журнале Хакер №1-2 за 2010 год
« Последнее редактирование: 08 Март 2010, 13:42 от skylexus »

 

Оффлайн Колибри

  • Девушка
  • ****
  • Сообщений: 2089
  • Таких, как я, немного: только я...
  • Откуда: Тюменская область
  • DVB: Tevii S420 ; SkyStar S2;ТТ S2
  • Спутник: Радуга ТВ 75*, Триколор
Подскажите мне , пожалуйста,вот в таком вопросе :). У меня не устанавливаются автоматически deb-пакеты при двойном щелчке на них в дебиане.  Вместо того, чтоб начать устанавливаться они открываются в программе менеджер архивов.Может у меня не установлена какая-то программа ? И еще, какой командой в терминале нужно устанавливать deb-пакеты , лежащие на рабочем столе (указать путь к нему )
« Последнее редактирование: 25 Март 2010, 06:17 от Колибри »

Оффлайн skylexusАвтор темы

  • Администратор
  • *****
  • Сообщений: 6890
  • Зеркала небес взгляд мой отражают
    • о спутниковой рыбалке и интернете
  • DVB: 3G
  • Спутник: 7E,36E,60E
Думаю, что дело в настройках. Какой-то тип файлов может быть открыт разными приложениями (на выбор). В данный момент дебиана под рукой нет (я на работе), но есть установленный Убунту 7.10, вот на него ссылаться и буду. Делаем на файле в проводнике щелчок правой клавишей мышки, далее Свойства (Properties), затем идём в закладку "Открыть с помощью" (Open with...) и выбираем менеджер пакетов (в моём случае GDebi Package Installer). В принципе там есть кнопочка "Добавить" (Add), так что список приложиний можно дополнить.



какой командой в терминале нужно устанавливать deb-пакеты , лежащие на рабочем столе (указать путь к нему )

dpkg -i /Путь-к-файлу/MyPacket.deb
« Последнее редактирование: 25 Март 2010, 09:30 от skylexus »

Оффлайн Колибри

  • Девушка
  • ****
  • Сообщений: 2089
  • Таких, как я, немного: только я...
  • Откуда: Тюменская область
  • DVB: Tevii S420 ; SkyStar S2;ТТ S2
  • Спутник: Радуга ТВ 75*, Триколор
Спасибо skylexus, вы указали мне на нужную программу. Она и подобные ей  просто не были установлены в дебиане, но были во вкладке "доступные приложения". Установила и все скаченные деб-пакеты  теперь устанавливается автоматом :). Там-же, в доступных но не установленных приложениях есть еще вот такие: Ark, KPackage, Xarchiver. Установить ли их тоже, или в них нет необходимости?



 

Похожие темы

  Тема / Автор Ответов Последний ответ
121 Ответов
22889 Просмотров
Последний ответ 18 Декабрь 2010, 23:12
от k0911
18 Ответов
2707 Просмотров
Последний ответ 27 Май 2011, 13:40
от ALENA
18 Ответов
6415 Просмотров
Последний ответ 12 Декабрь 2011, 14:57
от технарь


При использовании материалов форума ссылка на форум обязательна.

Rambler's Top100