Работа с репозитарием Ubuntu

13 Янв
2008

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

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

Описание репозитариев

Пакеты в репозитарии структурированы по назначению, платформе и прочим характеристикам. Список репозитариев приведен в файле /etc/apt/sources.list. Заглянем внутрь (у меня сейчас Kubuntu 7.04, но разницы никакой, мы разбираемся в принципе).

$ cat /etc/apt/sources.list

#deb cdrom:[Kubuntu 7.04 _Feisty Fawn_ - Beta i386 (20070322.1)]/ feisty main restricted

deb http://ua.archive.ubuntu.com/ubuntu/ feisty main restricted

deb-src http://ua.archive.ubuntu.com/ubuntu/ feisty main restricted

deb http://ua.archive.ubuntu.com/ubuntu/ feisty-updates main restricted

deb http://ua.archive.ubuntu.com/ubuntu/ feisty universe multiverse

deb http://ua.archive.ubuntu.com/ubuntu/ feisty-backports main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu feisty-security main restricted

Разберем, что получилось. Первая строка указывает на CD-ROM, точнее на диск с конкретной меткой. Чтобы добавить имеющийся у вас диск в этот файл, достаточно вставить его в привод и набрать команду «sudo apt-cdrom add» программа попросит вставить диск и нажать Enter. Далее в файле описываются репозитарии находящиеся на узлах в Интернет. В первой строчке идет тип пакета, если стоит deb это указывает, что будут загружаться пакеты с уже скомпилированными программами. А deb-src говорит, что используются пакеты с исходными текстами. При большом количестве записей, во время обновления списка пакетов командой «sudo apt-get update» суммарный объем скачанных файлов может превышать 10 Мб, поэтому если не планируется сборка/пересборка пакетов, строки deb-src можно смело комментировать, чтобы уменьшить нагрузку на канал и время на обновления списка. Следующая запись означает зеркало, с которого будет загружаться обновления. Официальный репозитарий Ubuntu располагается по адресу http://archive.ubuntu.com/ubuntu/. При установке дистрибутива в зависимости от региона выбирается одно из его многочисленных зеркал, на что указывает префикс. Например, украинское зеркало имеет адрес http://ua.archive.ubuntu.com/ubuntu/, российское вместо ua использует ru. Поэтому, читая некоторые зарубежные материалы, следует их переносить на местные реалии. Если в статье говориться, что для установки добавьте в список сервер http://gb.archive.ubuntu.com/ubuntu/. Это не значит, что нужно бросаться сразу выполнять такой совет. У вас уже вбито свое локальное зеркало. Хотя здесь не все так просто, как это кажется на первый взгляд.

Во первых зеркала обновляются не мгновенно, а через некоторый период времени. Хотя это не страшно. Интересней скорость доступа к зеркалу. Так команда traceroute показывает 14 промежуточных улов в случае с вариатом ua, при этом сервер находится в Лондоне, IP-адрес совпадает с официальным archive.ubuntu.com, а пакет пробегает чуть меньше 6 тысяч километров.

Вот где Украина

То есть фактически украинское зеркало совпадает с официальным репозитарием. Причем скорость закачки днем у меня, как правило, равна приблизительно 128 кбайт/сек, а ночью ровно в два раза ниже (вероятно просыпаются заокеанские пользователи).

Если использовать итальянский сервер с префиксом gb, пакет проходит 12 узлов и на 1000 км меньше. Польский pl сервер «находится» в 6126 км, через 14 промежуточных узлов, но отклик просто отличный. Полный список репозитариев можно найти по адресу https://wiki.ubuntu.com/Mirrors?action=show&redirect=Archive.

Следующей строкой идет название версии дистрибутива для 7.10 это Gutsy, 7.04 — feisty, 6.10 – edgy, 6.06 – dapper и так далее. Такая строка показывает, что будут использованы основные и тщательно оттестированные пакеты, собираемые самими разработчиками. К названию дистрибутива может быть добавлено одно из 4 окончаний:

– backports – не протестированные, но часто очень полезные пакеты;

– proposed – предлагаемые, но пока не протестированные обновления;

– security — обновления безопасности;

– updates – обновления прошедшие стадию proposed.

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

И наконец последняя позиция, представлена еще 4 характеристиками, причем их свободно можно поместить в одной строке:

– main – пакеты со свободно лицензией поддерживаемые разработчиками Ubuntu;

– universe — пакеты со свободной лицензией, но поддерживаемые сторонними разработчиками;

– multiverse – пакеты с несвободной лицензией поддерживаемые сторонними разработчиками;

– restricted – пакеты с несвободной лицензией, которые не могут быть изменены, например двоичные драйвера.

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

211.png

Если продвигаться далее, то найдем еще каталоги, соответствующие архитектуре и локализации. Но добавлять тип архитектуры и локализацию в описание репозитария не нужно, все эти данные будут получены автоматически по текущим настройкам. Сразу же возникает вопрос, что делать, если была установлена версия под i386, а процессор AMD64. Все просто. Открываем файл /etc/apt/apt.conf.d/01ubuntu и в секции APT добавляем следующую строку:

Architecture «amd64″;

Либо в любом месте:

APT::Architecture «amd64″;

Сохраняем изменения, обновляем список пакетов и пробуем получить небольшой файл, если пакет имеет в названии «amd64» все прошло как надо. Теперь можно обновить всю систему командой:

$ sudo apt-get dist-upgrade

Примеры всех параметров этого файла, можно найти в каталоге /usr/share/doc/apt/examples/.

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

Добавление репозитариев

Добавить новый репозитарий можно несколькими способами. Самый простой открыть в любом текстовом редакторе (через sudo) файл /etc/apt/sources.list и вбить нужную строку руками. Причем следует помнить, что чем ближе к началу файла запись, тем большим преимуществом пользуется репозитарий. В Adept выбираем Вид -Управление репозитариями переходим на Third-party Software и нажимаем кнопку Add и вставляем строку.

39.png

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

wget http://seveas.imbrandon.com/1135D466.gpg -O- | sudo apt-key add -

В Synaptic репозитарий добавляется через Setting – Repositories .

46.png

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

$ sudo apt-get update

В Synaptic достаточно нажать кнопку Reload, в Adept – Получить обновления.

Информация об репозитариях и пакетах собирается в каталоге /var/lib/apt/lists в виде файлов имя, которого соответствует названию архива.

$ ls /var/lib/apt/lists

ua.archive.ubuntu.com_ubuntu_dists_feisty-backports_main_binary-i386_Packages

Заглянув сюда можно получить информацию о любом пакете. Впрочем заглядывать и не обязательно. За вас это сделают утилиты, например введя «sudo apt-cache showpkg gcc-4.1» можно узнать все о пакете gcc.

Создание локального репозитария

Создать локальную копию репозитария можно одной командой (требуется пакет debmirror):

$ /usr/bin/debmirror —nosource -m —passive —host=archive.ubuntulinux.org —root=ubuntu —method=ftp —progress —dist=feisty,feisty-security,feisty-updates,feisty-backports —ignore-release-gpg —section=main,restricted,multiverse,universe —arch=i386,amd64

Большая часть параметров понятна из объяснений выше. Те у кого жирный канал и много свободного места на диске могут попробовать.

Чаще возникает обратная ситуация, скачать пакеты в одном месте и установить в другом. Чтобы не прибегать в таком случае к команде вроде «sudo dpkg -i ./*.deb» то есть установить все файлы с расширением deb находящиеся в текущем каталоге, лучше создать свой репозитарий которым пользоваться как обычно apt-get. Чтобы создать список пакетов нам понадобится утилита dpkg-scanpackages входящая в состав dpkg-dev.

$ sudo apt-get install dpkg-dev

Теперь создаем каталог, в который сваливаем все пакеты.

$ mkdir archives

Заходим внутрь.

$ cd archives

И даем команду.

$ dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz

По окончании будет выдан список пакетов и их число.

И чтобы добавить новый репозитарий в sources.list прописываем путь к созданному каталогу:

deb file:/home/grinder/archives ./

Сохраняем изменения и вводим «sudo apt-get update» если в /var/lib/apt/lists добавился новый каталог можно поздравлять себя с победой. Теперь можно этот каталог копировать на другие системы. Естественно при добавлении в него пакетов процедуру придется повторить.

В Интернет можно найти достаточно описания того, как перенести свой репозитарий на CD/DVD, занимают они понескольку страниц. Я бы предложил вариант проще – использовать утилиту APTonCD (aptoncd.sourceforge.net). Сначала установим ее командой:

$ sudo apt-get install aptoncd

И вызываем через меню Система. Пользоваться программой очень просто. Вj вкладке Create нажимаем кнопку Create APTonCD, будет просканирован каталог /var/cache/apt/archives и все файлы будут добавлены в проект. Далее нажимаем Add Packages и указываем на пакеты лежащие отдельно. Нажимаем Options и в Media Type выбираем тип образа CD или DVD, а в Destination Folder каталог, куда будет помещен ISO-образ.

AptOnCD

Нажимаем OK, программа создаст образ и запросит записать его на носитель. Просто супер. На вкладке Restore можно скопировать (то есть восстановить) все файлы обратно, добавить CD-ROM.

Как видите репозитарий пакетов Ubuntu одновременно мощная и в то же время простая в использовании система. Надеюсь, теперь проблем с установкой пакетов у вас не возникнет. Linux forever!

З.Ы.

Интересный совет нашел http://www.opennet.ru/tips/info/1595.shtml

Как обновить только пакеты находящиеся в архиве APT

Для того чтобы заставить apt обновить систему используя только пакеты из кэша /var/cache/apt/archives,
а не лезть за ними в интернет, нужно выполнить:

apt-get -no-download -ignore-missing upgrade

Если пакета нет в кэше, он не будет поставлен.

 
 

1 Комментарий к Работа с репозитарием Ubuntu

Аватар

Linuxoid - все что знаю о Туксе » Архив блога » Обзор Fedora 9 Sulphur

Сентябрь 13th, 2008 | 20:20

[...] пакетов по функциональности явно уступает Synaptic, но свои функции выполняет добротно. О наличии [...]

Комментировать

Наверх