Личные инструменты

Как создать локальный репозиторий пакетов

Материал из PFSenseDocs_ru

Перейти к: навигация, поиск
Данная статься принадлежит серии КАК.

Предположим по какой-либо причине Вам нужно уставливать пакеты не с сайта pfSense, а с локального сервера (допустим, Вы разрабатываете новый пакет, решаете проблемы в существующем или у Вас просто ограничения на доступ Интернет и есть желание сэкономить время/деньги за полосу). Статья описывает, как развернуть копию репозитория (хранилища) пакетов pfSense у себя на локальном WEB-сервере. Подразумевается, что Вы знакомы с установкой и настройкой самого WEB-сервера (опробовано на Apache под Linux, но похоже будет работать на любом WEB-сервере). Для начала создаём директорию, где будет располагаться репозиторий, например, /var/www/pfsense-pkg. У меня сайт располагался на pfsense-pkg.tm-k.com, соответствующий конфиг Apache:

<VirtualHost *:80>
   ServerAdmin evg.yurch@rogers.com
   DocumentRoot /var/www/pfsense-pkg
   ServerName pfsense-pkg.tm-k.com
   ErrorLog logs/pfsense-pkg.tm-k.com-error_log
   CustomLog logs/pfsense-pkg.tm-k.com-access_log combined
</VirtualHost>

Далее в этой директории создаём две папку pfSense

cd /var/www/pfsense-pkg
mkdir pfSense 

Папка pfSense должна содержать XMLRPC-сервер, который собственно и обслуживает обращения удалённых pfSense на установку пакета. Исходники этого сервера расположены здесь https://rcs.pfsense.org/projects/xmlrpc-server. В упор не помню, как я его загрузил, но скачать сейчас его можно отсюда. Итак, качаем и распаковываем:

 cd pfSense
 wget http://ru.doc.pfsense.org/pub/pfSense-XMLRPC-server.tar.gz
 tar xzf pfSense-XMLRPC-server.tar.gz
 mv xmlrpc-server-mainline/* .
 rm -rf xmlrpc-server-mainline/
 ls -l
 total 372
 -rw-rw-r-- 1 root root 34754 Dec 13 15:20 PEAR.inc
 -rw-rw-r-- 1 root root 34754 Dec 13 15:20 PEAR.php
 -rw-rw-r-- 1 root root  2548 Dec 13 15:20 array_intersect_key.php
 -rw-r--r-- 1 root root 57897 Mar 28 01:08 pfSense-XMLRPC-server.tar.gz
 -rw-rw-r-- 1 root root   795 Dec 13 15:20 pkg_tester.php
 -rw-rw-r-- 1 root root    89 Dec 13 15:20 test.php
 -rw-rw-r-- 1 root root    28 Dec 13 15:20 version
 -rw-rw-r-- 1 root root 19008 Dec 13 15:20 xml_parser.inc
 -rw-rw-r-- 1 root root 39683 Dec 13 15:20 xml_serializer.inc
 -rw-rw-r-- 1 root root 28467 Dec 13 15:20 xml_unserializer.inc
 -rw-rw-r-- 1 root root 26503 Dec 13 15:20 xml_util.inc
 -rw-rw-r-- 1 root root  4227 Dec 13 15:20 xmlparse.inc
 drwxrwxr-x 2 root root   232 Dec 13 15:20 xmlrpc
 -rw-rw-r-- 1 root root  4465 Dec 13 15:20 xmlrpc.inc
 -rwxrwxr-x 1 root root  6886 Dec 13 15:20 xmlrpc.php
 -rw-rw-r-- 1 root root 56610 Dec 13 15:20 xmlrpc_client.inc
 -rw-rw-r-- 1 root root 21096 Dec 13 15:20 xmlrpc_server.inc
 -rw-rw-r-- 1 root root  1307 Dec 13 15:20 xmlrpc_tester.php

Всё XMLRPC сервер у нас готов. Теперь надо перетащить сами пакеты с их конфигурационными файлами с pfSense. К сожалению я не знаю иного способа это проделать, кроме как воспользоваться GIT - установите его на WEB-сервер отсюда http://git-scm.com когда git готов, делаем так

cd /var/www/pfsense-pkg
git clone http://gitweb.pfsense.org/pfsense-packages/mainline.git

git будет долго шуршать, но в конце концов Вы должны получите папку mainline, её нужно переименовать в packages

mv mainline packages
cd packages

в packages находятся главные manifest-файлы, описывающие все пакеты, а в packages/config/.. собственно файлы всех пакетов. Файл pkg_config.7.xml будет использоваться, если Вы устанавливаете пакет для pfSense-1.2.3, файл pkg_config.8.xml - если для pfSense-2.0. Не знаю, когда используется pkg_config.xml, возможно, с ранними версиями pfSense. Все эти файлы схожи по своей структуре, разберём содержимое pkg_config.7.xml. Каждый пакет описан XML-блоком <package></package>. Наиболее важные поля:

 <config_file>http://www.pfsense.com/packages/config/nrpe2/nrpe2.xml</config_file>

Для пакета nrpe2 сонфигурационный файл (nrpe2.xml) лежит в packages/config/nrpe2/. Соответственно здесь Вы должны указать путь к своему локальному WEB-серверу, т.к. pfSense, на который устанавливается данный пакет полезет именно по этому пути.

 config_file>http://pfsense-pkg.tm-k.com/packages/config/nrpe2/nrpe2.xml</config_file>

Далее, то же самое необходимо проделать с <depends_on_package...>

 <depends_on_package_base_url>http://pfsense-pkg.tm-k.com/packages/config/nrpe2/bin/</depends_on_package_base_url>
 <depends_on_package>nrpe-2.12_1.tbz</depends_on_package>
 <depends_on_package>nagios-plugins-1.4.13,1.tbz</depends_on_package>
 <depends_on_package>libiconv-1.11_1.tbz</depends_on_package>
 <depends_on_package>gettext-0.17_1.tbz</depends_on_package>

<depends_on_package_base_url> задаёт полный путь, где лежат бинарные файлы самого пакета и пакетов, от которых он зависит. <depends_on_package> далее определят, какие пакеты нужно также установить, все они должны находиться в папке заданной <depends_on_package_base_url>. Таким образом Вам необходимо заменить все www.pfsense.com на имя Вашего локального сайта.

Далее идём в конфигурационный файл самого пакета /packages/config/nrpe2/nrpe2.xml, здесь обычно есть ссылка на .inc файл пакета

 <additional_files_needed>
      <prefix>/usr/local/pkg/</prefix>
      <chmod>077</chmod>
      <item>http://www.pfsense.com/packages/config/nrpe2/nrpe2.inc</item>
 </additional_files_needed>

Соответственно меняем на

      <item>http://pfsense-pkg.tm-k.com/packages/config/nrpe2/nrpe2.inc</item>

Последний шаг: нужно Вашему pfSense'у сказать, что теперь мы ставим пакеты с локального сервера, это делается в файле /etc/inc/globals.inc на самом pfSense'е Меняем

      "xmlrpcbaseurl" => "www.pfsense.com",

на

      "xmlrpcbaseurl" => "pfsense-pkg.tm-k.com",

Собственно, всё. Теперь, если Вы попытаетесь установить пакет NRPEv2, он будет установлен с Вашего локального сервера.

Смотри также Создание локального XMLRPC сервера