Вкл\Выкл свет
Главная » Статьи » Переводы

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

Руководство по добавлению (или удалению) репозиториев

Предварительно

Вот веб-страницы, которые дают основные понятия о системе пакетов в Puppy 5.x:

Есть два локальных файла, о которых вы должны знать:

  • /root/.packages/DISTRO_PET_REPOS
  • /root/.packages/DISTRO_COMPAT_REPOS

DISTRO_COMPAT_REPOS

В этом файле вы увидите две переменные, названные PKG_DOCS_DISTRO_COMPAT и REPOS_DISTRO_COMPAT.

PKG_DOCS_DISTRO_COMPAT

Эта переменная содержит серию записей, которые разделены символом пробела. Вот пример одной записи:

slackware.cs.utah.edu|http://slackware.cs.utah.edu/pub/slackware/slackware-${DISTRO_COMPAT_VERSION}/PACKAGES.TXT|Packages-slackware-${DISTRO_COMPAT_VERSION}-official

Переменная DISTRO_COMPAT_VERSION определяется в этом файле:

/etc/DISTRO_SPECS

Примером может быть Puppy построенный на основе Slackware версии 12.2, поэтому указанная выше строка преобразуется в:

slackware.cs.utah.edu|http://slackware.cs.utah.edu/pub/slackware/slackware-12.2/PACKAGES.TXT|Packages-slackware-12.2-official

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

  • 1-ое — это URL, использующийся для тестирования того, что сайт отвечает.
  • 2-ое — полный URI файла базы данных пакетов репозитория.
  • 3-е — имя файла базы данных после того, как он будет загружен и преобразован в стандартный формат.

Вам нужно всего лишь добавить еще один репозиторий, содержащий пакеты одного и того же «совместимого дистрибутива», который был использован при создании Puppy, то есть один из Slackware, Debian, Ubuntu или Arch репозиториев. Это определяется переменной DISTRO_BINARY_COMPAT в файле /etc/DISTRO_SPECS.

Так, когда в приведенном выше примере Puppy загружает файл базы данных «PACKAGES.TXT», он должен быть в формате базы данных, используемой совместимым дистрибутивом. Puppy будет ожидать этого формата, чтобы иметь возможность преобразовать его в типовой формат, используемый в Puppy.

REPOS_DISTRO_COMPAT

Эта переменная имеет такой же формат: записи, разделенные пробелами, и поля в каждой записи, разделенные вертикальной чертой. Например так:

slackware.cs.utah.edu|http://slackware.cs.utah.edu/pub/slackware/slackware-${DISTRO_COMPAT_VERSION}|Packages-slackware-${DISTRO_COMPAT_VERSION}-official

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

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

slackware.cs.utah.edu|http://slackware.cs.utah.edu/pub/slackware/slackware-${DISTRO_COMPAT_VERSION}|Packages-slackware-${DISTRO_COMPAT_VERSION}-official
slackware.mirrors.tds.net|http://slackware.mirrors.tds.net/pub/slackware/slackware-${DISTRO_COMPAT_VERSION}|Packages-slackware-${DISTRO_COMPAT_VERSION}-official
ftp.gwdg.de|http://ftp.gwdg.de/pub/linux/slackware/slackware-${DISTRO_COMPAT_VERSION}|Packages-slackware-${DISTRO_COMPAT_VERSION}-official
ftp.isu.edu.tw|http://ftp.isu.edu.tw/pub/Linux/Slackware/slackware-${DISTRO_COMPAT_VERSION}|Packages-slackware-${DISTRO_COMPAT_VERSION}-official
repository.slacky.eu|http://repository.slacky.eu/slackware-${DISTRO_COMPAT_VERSION}|Packages-slackware-${DISTRO_COMPAT_VERSION}-slacky

С другой стороны, на одном адресе сайта может быть более одного «хранилища». То, что я имею в виду, лучше показать на примере. Это переменная REPOS_DISTRO_COMPAT для Ubuntu-совместимой сборки Puppy:

ftp.filearena.net|http://ftp.filearena.net/pub/ubuntu|Packages-ubuntu-${DISTRO_COMPAT_VERSION}-*
mirror.anl.gov|http://mirror.anl.gov/pub/ubuntu|Packages-ubuntu-${DISTRO_COMPAT_VERSION}-*
mirrors.kernel.org|http://mirrors.kernel.org/ubuntu|Packages-ubuntu-${DISTRO_COMPAT_VERSION}-*
archive.ubuntu.com|http://archive.ubuntu.com/ubuntu|Packages-ubuntu-${DISTRO_COMPAT_VERSION}-*

Здесь фактически три разных репозитория на одном сайте, которые Puppy может загрузить как «main», «universe» и «multiverse». Puppy имеет по файлу базы данных для каждого из них, например, для выпуска Ubuntu «Intrepid»: «Packages-ubuntu-intrepid-main», «Packages-ubuntu-intrepid-universe» и «Packages-ubuntu-intrepid-multiverse». Соответственно, переменная PKG_DOCS_DISTRO_COMPAT выглядит так:

archive.ubuntu.com|http://archive.ubuntu.com/ubuntu/dists/intrepid/main/binary-i386/Packages.bz2|Packages-ubuntu-${DISTRO_COMPAT_VERSION}-main
archive.ubuntu.com|http://archive.ubuntu.com/ubuntu/dists/intrepid/universe/binary-i386/Packages.bz2|Packages-ubuntu-${DISTRO_COMPAT_VERSION}-universe
archive.ubuntu.com|http://archive.ubuntu.com/ubuntu/dists/intrepid/multiverse/binary-i386/Packages.bz2|Packages-ubuntu-${DISTRO_COMPAT_VERSION}-multiverse

… то есть, указаны все три базы данных.

DISTRO_PET_REPOS

Добавление еще одного хранилища .pet-пакетов является наиболее вероятным требованием пользователя Puppy. Скорее всего, когда вы обновите Puppy до новой версии, менеджер пакетов получит доступ к наиболее подходящим репозиториям. Но вы, возможно, захотите добавить что-то прямо сейчас особенно, если вы Puppy-разработчик.

PKG_DOCS_PET_REPOS

Здесь все так же, как описано выше. Файл DISTRO_PET_REPOS имеет переменную PKG_DOCS_PET_REPOS и вот ее текущее содержание:

ibiblio.org|http://distro.ibiblio.org/pub/linux/distributions/puppylinux/Packages-puppy-woof-official|Packages-puppy-woof-official
ibiblio.org|http://distro.ibiblio.org/pub/linux/distributions/puppylinux/Packages-puppy-4-official|Packages-puppy-4-official
ibiblio.org|http://distro.ibiblio.org/pub/linux/distributions/puppylinux/Packages-puppy-3-official|Packages-puppy-3-official
ibiblio.org|http://distro.ibiblio.org/pub/linux/distributions/puppylinux/Packages-puppy-2-official|Packages-puppy-2-official

Обратите внимание, что имя файла базы данных на сайте совпадает с именем файла после загрузки. Это происходит потому, что файл базы данных PET в удаленном хранилище уже находится в «стандартном формате». Puppy начиная с версии 2.0 и до версии 4.x включительно хранил информацию о пакетах базы данных в файле /root/.packages/packages.txt, но сейчас принят другой формат — и система сборки Woof имеет скрипт для преобразования старых «packages.txt» файлов в новый вид.

Итак допустим, у вас есть хранилище .pet-пакетов. Скажем в http://johhny.org/petrepo. Всё, что вам нужно сделать, это создать файл базы данных, например, «Packages-puppy-4-Johhny» — в соответствии с договорённостями по наименованиям, второе поле «puppy» идентифицирует его как Puppy pet репозиторий, третье поле «4» сообщает, для какай версии Puppy собирались эти пакеты, в то время как последнее поле является уникальным идентификатором хранилища.

Таким образом, к переменной PKG_DOCS_PET_REPOS нужно добавить запись:

johhny.org|http://johhny.org/petrepo|Packages-puppy-4-johhny

PET_REPOS

Это еще одна переменная в файле DISTRO_PET_REPOS. Вот её текущее содержание:

ibiblio.org|http://distro.ibiblio.org/pub/linux/distributions/puppylinux|Packages-puppy-*-official
ftp.nluug.nl|http://ftp.nluug.nl/ftp/pub/os/Linux/distr/puppylinux|Packages-puppy-*-official
ftp.linux.hr|ftp://ftp.linux.hr/puppylinux|Packages-puppy-*-official
ftp.vcu.edu|ftp://ftp.vcu.edu/pub/gnu+linux/puppylinux|Packages-puppy-*-official
ftp.tu-chemnitz.de|ftp://ftp.tu-chemnitz.de/.SAN0/pub/linux/sunsite.unc-mirror/distributions/puppylinux|Packages-puppy-*-official
ftp.ussg.iu.edu|ftp://ftp.ussg.iu.edu/linux/puppylinux|Packages-puppy-*-official
ftp.lug.udel.edu|ftp://ftp.lug.udel.edu/pub/puppylinux|Packages-puppy-*-official
ftp.sh.cvut.cz|ftp://ftp.sh.cvut.cz/storage/1/puppy|Packages-puppy-*-official

… обратите внимание на шаблон «*». Он здесь потому, что все репозитории pet-пакетов находятся на одних и тех же сайтах.

Для нашего гипотетического примера добавьте эту строку:

johhny.org|http://johhny.org/petrepo|Packages-puppy-4-johhny

… ещё раз отмечаем, что .pet-пакеты могут быть в подкаталогах «petrepo», и это определяется в файле базы данных.

Строка, представленная выше, говорит, что любой из пакетов описанных в «Packages-puppy-4-Johhny», можно найти в http://johhny.org/petrepo.

Сводная информация

Если вы добавили обе записи, как показано в примере выше, и создали файл базы данных «Packages-puppy-4-Johhny» на сайте, вы готовы двигаться дальше.

Нажмите кнопку «Настроить менеджер пакетов» в главном окне GUI, затем нажмите кнопку «Обновить сейчас», пакетный менеджер скачает «Packages-puppy-4-Johhny» и добавит его к другим, после чего пакеты станут видны в Главном окне GUI.

И наоборот, если вы хотите удалить репозиторий, удалите соответствующие записи в переменных (противоположно вышеописанной процедуре) и удалите файл «Packages- *».

И последнее о файле базы данных пакетов «Packages-puppy-4-Johhny». Хранилище может содержать смесь .pet-пакетов, которые были собраны для разных версий Puppy. В такой ситуации вы можете создать отдельные файлы «Packages- *» для каждой группы пакетов. Кроме того, база данных пакетов имеет дополнительные поля для каждой записи пакета, которые могут объявить, для какого окружения был составлен пакет, например, «ubuntu|intrepid|puppy» означает, что этот пакет был составлен для Puppy, который был построен на основе Ubuntu Intrepid пакетов. У меня так смешаны в кучу пакеты на моем сайте Ibiblio в каталоге «pet_packages-woof», а файл базы данных пакетов называется «Packages-puppy-woof-official» — здесь поле «woof» не является одним из чисел версий Puppy. Puppy Package Manager способен просеять такую смешанную базу данных и предложить только соответствующие пакеты для установки.

С уважением,
Barry Kauler
Октябрь 2009

Категория: Переводы | Добавил: prostologin1 (24.08.2014) | Автор: Андрей Гапон
Просмотров: 3325 | Теги: Puppy | Рейтинг: 0.0/0
Всего комментариев: 0
avatar