Порты (А возможно ли такое...)

FreeBSD, NetBSD, OpenBSD, DragonFly и т. д.

Модератор: arachnid

Аватара пользователя
Maestro
Сообщения: 227
Статус: ипэшник
ОС: FreeBSD-6.2 STABLE

Порты

Сообщение Maestro »

Друзья... Вот возник вопрос, а осуществимо ли следующее, чтобы с помощью cvsup without gui или какого-нибудь бубна скачивать и устанавливать порты не с интернета, а с сервера (на который уже скачаны нужные порты)
Грубо говоря, стоит рабочий сервер FreeBSD 6.2 STABLE - на нем постоянно обновляется дерево портов и собственно порты. И вот я захотел собрать с нуля другой сервак например в другой филиал - и тут мне не захотелось тратить трафик, а захотелось обновиться с рабочего сервачка, на котором все обновлено - реально это или нет?! Если да, то в какую сторону копать. Надеюсь на понимание.
дайте денег на обновление портов :)
Спасибо сказали:
Аватара пользователя
skeletor
Сообщения: 1224

Re: Порты

Сообщение skeletor »

Есть такая возможность. Вот только не помню в каком файле прописывается. Есть такой файлик /etc/potrsnap = возможно он, а может быть другой. Но, насколько я знаю, надо обновляться через FTP, через NFS - вроде бы не подхватывает.
Спасибо сказали:
Thug
Сообщения: 200

Re: Порты

Сообщение Thug »

Скачать дерево пакетов на сервер. Поднять фтп на нем. Далее на машине, которая будет туда ходить, делаем файл
/etc/make.conf со строчкой MASTER_SITE_OVERRIDE=ftp://адрес/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/
Страйкбол - игра админов :)
Спасибо сказали:
Аватара пользователя
Maestro
Сообщения: 227
Статус: ипэшник
ОС: FreeBSD-6.2 STABLE

Re: Порты

Сообщение Maestro »

Thug писал(а):
20.11.2007 12:05
Скачать дерево пакетов на сервер. Поднять фтп на нем. Далее на машине, которая будет туда ходить, делаем файл
/etc/make.conf со строчкой MASTER_SITE_OVERRIDE=ftp://адрес/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/

А без FTP никак не обойтись? Штатных средств нет?
дайте денег на обновление портов :)
Спасибо сказали:
Аватара пользователя
unflag
Бывший модератор
Сообщения: 1030
Статус: здесь могла бы быть ваша реклама
ОС: Debian testing/Win Server 2008

Re: Порты

Сообщение unflag »

Так в конфиге cvsup можно указать сервер, с которого качать... Хошь - в сети, хошь - в интернете, ему без разницы. Какие проблемы с этим?

ЗЫ. Но естественно, cvsup с одной строны не достаточно, на другой стороне должен быть сервер. ФТП имхо было бы проще для такой ерунды. Ну или на одной машине обновлять portsnap-ом дерево, а на другой просто смонтировать по nfs это обновленное дерево. Так даже проще на мой вкус.

One day! One day, who knows?
Someday! Someday I suppose!

Конференция в jabber: linuxforum@conference.jabber.ru
Спасибо сказали:
Аватара пользователя
arachnid
Модератор
Сообщения: 1100
ОС: freeBSD

Re: Порты

Сообщение arachnid »

dd2k писал(а):
20.11.2007 12:46
Так в конфиге cvsup можно указать сервер, с которого качать... Хошь - в сети, хошь - в интернете, ему без разницы. Какие проблемы с этим?

ЗЫ. Но естественно, cvsup с одной строны не достаточно, на другой стороне должен быть сервер. ФТП имхо было бы проще для такой ерунды. Ну или на одной машине обновлять portsnap-ом дерево, а на другой просто смонтировать по nfs это обновленное дерево. Так даже проще на мой вкус.

согласен - nfs гораздо проще в данном случае.
можно поднять cvs сервер и обновляться с него, но сильно внятной конфигурации в свое время найти не удалось. особо сложного там нет, но когда настраивал, то умудрился слить все (то есть под все платформы и все версии :) )
-= freeBSD stable, fluxbox =-
"если ты будешь со мной спорить, я тебя запишу в книжечку!" (с) Ежик
Спасибо сказали:
Аватара пользователя
Maestro
Сообщения: 227
Статус: ипэшник
ОС: FreeBSD-6.2 STABLE

Re: Порты

Сообщение Maestro »

Thug писал(а):
20.11.2007 12:05
Скачать дерево пакетов на сервер. Поднять фтп на нем. Далее на машине, которая будет туда ходить, делаем файл
/etc/make.conf со строчкой MASTER_SITE_OVERRIDE=ftp://адрес/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/

Итак.
1. Поднимаем ftp сервер. (на сервере 1 (LAN-10.0.0.1 - INET-xxx.xxx.xxx.xxx)
2. Конфигурим /etc/make.conf (на сервере 2 (LAN-10.0.0.2)
MASTER_SITE_OVERRIDE=ftp://адрес/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/
3. Конфигурим /usr/local/etc/supfile (на сервере 2 (LAN-10.0.0.2)
*default host=10.0.0.1 (сомневаюсь очень, что так)
4. Запускаем на сервере 2
cvsup -g -L 2 /usr/local/etc/supfile
5. Запускаем на сервере 2
portupgrade -a

Все должно браться (скачиваться) отсюда ftp://10.0.0.1

Что именно не будет работать, portupgrade или cvsup??
дайте денег на обновление портов :)
Спасибо сказали:
iZEN
Сообщения: 225

Re: Порты

Сообщение iZEN »

Maestro писал(а):
20.11.2007 10:57
Друзья... Вот возник вопрос, а осуществимо ли следующее, чтобы с помощью cvsup without gui или какого-нибудь бубна скачивать и устанавливать порты не с интернета, а с сервера (на который уже скачаны нужные порты)
Грубо говоря, стоит рабочий сервер FreeBSD 6.2 STABLE - на нем постоянно обновляется дерево портов и собственно порты. И вот я захотел собрать с нуля другой сервак например в другой филиал - и тут мне не захотелось тратить трафик, а захотелось обновиться с рабочего сервачка, на котором все обновлено - реально это или нет?! Если да, то в какую сторону копать. Надеюсь на понимание.
1. Расшарить каталог /usr/ports в read-only в сети по протоколу NFS на сервере.
2. Создать пустой каталог /usr/ports на узле и подмонтировать к нему расшаренный каталог сервера (можно в автомате в /etc/fstab).
3. Прописать WRKDIRPREFIX=/localpath/compile/ на узле в файле /etc/make.conf
Вроде всё.

P.S.
NFS быстрее, чем FTP по скорости в два раза.
Спасибо сказали:
Аватара пользователя
Maestro
Сообщения: 227
Статус: ипэшник
ОС: FreeBSD-6.2 STABLE

Re: Порты

Сообщение Maestro »

Продолжаем тему. Теперь траблы с NFS и я не один такой. Вот ссылка трабла с NFS
Точно такая же ошибка

Код: Выделить всё

router# mount 10.0.0.1:/usr/ports /mnt
[udp] 10.0.0.1:/usr/ports: Permission denied

IPFW правда включен, но весь трафик внутри сети по внутреннему интерфейсу разрешен. Только вот NFS сервер на FreeBSD 6.1 STABLE, а клиент на FreeBSD 6.2 STABLE. Но вряд ли проблема в этом. Кто-нибудь сталкивался? В /etc/exports пробовал прописывать по разному - ошибка прежняя. Может я как-то неверно расшарил /usr/ports??? Смотрел настройки mountd - там вроде все верно.
собственно mountd

Код: Выделить всё

. /etc/rc.subr

name="mountd"
rcvar=`set_rcvar`
command="/usr/sbin/${name}"
required_files="/etc/exports"
start_precmd="mountd_precmd"
extra_commands="reload"

mountd_precmd()
{
        if ! checkyesno rpcbind_enable  && \
            ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1
        then
                force_depend rpcbind || return 1
        fi

        # mountd flags will differ depending on rc.conf settings
        #
        if checkyesno nfs_server_enable; then
                if checkyesno weak_mountd_authentication; then
                        rc_flags="${mountd_flags} -n"
                fi
        else
                if checkyesno mountd_enable; then
                        checkyesno weak_mountd_authentication && rc_flags="-n"
                fi
        fi
        rm -f /var/db/mountdtab
        ( umask 022; > /var/db/mountdtab )
        return 0
}

load_rc_config $name
run_rc_command "$1"

вот только смущает меня строчка первая
. /etc/rc.subr
может добавить пониже
. /etc/rc.conf
???
дайте денег на обновление портов :)
Спасибо сказали:
Аватара пользователя
Maestro
Сообщения: 227
Статус: ипэшник
ОС: FreeBSD-6.2 STABLE

Re: Порты

Сообщение Maestro »

И еще, при попытке смонтировать NFS на самом серваке также идут ошибки

Код: Выделить всё

router# mount -t nfs localhost:/usr /mnt
[udp6] localhost:/usr: RPCPROG_NFS: RPC: Program not registered
[udp] localhost:/usr: NFSPROC_NULL: RPC: Unable to receive; errno = Connection refused


Так, от второй ошибки вроде избавился, осталась тока первая

Код: Выделить всё

router# mount -t nfs localhost:/usr/ports /mnt
[udp6] localhost:/usr/ports: RPCPROG_NFS: RPC: Program not registered
[udp] localhost:/usr/ports: RPCPROG_NFS: RPC: Program not registered


В чем же может быть проблема, может rpcbind? Тяжко

Также подразумеваю, что у меня могут быть проблемы, из-за наличия нескольких сетевых и VPN интерфейсов на Сервере 1
Опция -h 10.0.0.1 в настройке nfsd не помогает

Выкладываю все конфиги
/etc/rc.conf
rpcbind_enable="YES"
nfs_server_enable="YES"
nfs_server_flags="-u -t -n 2 -h 10.0.0.1"
mountd_flags="-r"

/etc/exports
/usr -alldirs -maproot=root

Все!
дайте денег на обновление портов :)
Спасибо сказали:
Аватара пользователя
arachnid
Модератор
Сообщения: 1100
ОС: freeBSD

Re: Порты

Сообщение arachnid »

добавь в /etc/exports адрес клиента, а существование шары можно посмотреть командой showmount -e
-= freeBSD stable, fluxbox =-
"если ты будешь со мной спорить, я тебя запишу в книжечку!" (с) Ежик
Спасибо сказали:
Аватара пользователя
Maestro
Сообщения: 227
Статус: ипэшник
ОС: FreeBSD-6.2 STABLE

Re: Порты

Сообщение Maestro »

arachnid писал(а):
21.11.2007 12:24
добавь в /etc/exports адрес клиента, а существование шары можно посмотреть командой showmount -e

Оказалось, что надо добавить сам сервак, то есть 10.0.0.1 чтобы монтировать через localhost
а также добавить в rc.conf некую замену старого portmap'a

Код: Выделить всё

nfs_reserved_port_only="YES"
mountd_flags="-r -p 1012"

где -p юзабельный порт. После чего все заработало. Спасибо 0ut'у. С portmap_enable="YES" не работало и не монтировалось.
Сейчас все ок, добавил в make.conf

Код: Выделить всё

WRKDIRPREFIX=/localpath/compile/

Теперь при монтировании /usr/ports и !!!/usr/src!!! в режиме ro заработал portupgrade. Отдельное спасибо iZEN
Но остались некоторые траблы. Например не хочет работать cvsup... будем думать.
дайте денег на обновление портов :)
Спасибо сказали:
Аватара пользователя
arachnid
Модератор
Сообщения: 1100
ОС: freeBSD

Re: Порты

Сообщение arachnid »

Maestro писал(а):
21.11.2007 12:59
arachnid писал(а):
21.11.2007 12:24
добавь в /etc/exports адрес клиента, а существование шары можно посмотреть командой showmount -e

Оказалось, что надо добавить сам сервак, то есть 10.0.0.1 чтобы монтировать через localhost
а также добавить в rc.conf некую замену старого portmap'a

Код: Выделить всё

nfs_reserved_port_only="YES"
mountd_flags="-r -p 1012"

где -p юзабельный порт. После чего все заработало. Спасибо 0ut'у. С portmap_enable="YES" не работало и не монтировалось.
Сейчас все ок, добавил в make.conf

Код: Выделить всё

WRKDIRPREFIX=/localpath/compile/

Теперь при монтировании /usr/ports и !!!/usr/src!!! в режиме ro заработал portupgrade. Отдельное спасибо iZEN
Но остались некоторые траблы. Например не хочет работать cvsup... будем думать.

сколько раз поднимал, никогда ничего лишнего не вписывал - все по хендбуку...
то, что дописал - лишь указывает на работу nfs только по секьюрному порту. это нефига не замена портмапа.
так cvsup и не будет работать через nfs. и через ftp тоже. для него нужен cvs сервер
-= freeBSD stable, fluxbox =-
"если ты будешь со мной спорить, я тебя запишу в книжечку!" (с) Ежик
Спасибо сказали:
Аватара пользователя
Maestro
Сообщения: 227
Статус: ипэшник
ОС: FreeBSD-6.2 STABLE

Re: Порты

Сообщение Maestro »

Да. Про cvsup я уже понял. Да и трафика с cvsup никакого почти. 2-5 метров. Сейчас вот портапгрейжусь - уже на 72 метра disfiles качнул и все по межсегменту - красота! Всем большое спасибо! /usr/src монтировать не обязательно!!!!
И все-таки без этих записей ничего не работает на 6.2, на 4.1 - да - работает, так как portmap_enable="YES". А на 6.2 не хотит... Видимо все-таки надо назначать порт для NFS ручками.
дайте денег на обновление портов :)
Спасибо сказали:
Аватара пользователя
arachnid
Модератор
Сообщения: 1100
ОС: freeBSD

Re: Порты

Сообщение arachnid »

Maestro писал(а):
21.11.2007 14:18
Да. Про cvsup я уже понял. Да и трафика с cvsup никакого почти. 2-5 метров. Сейчас вот портапгрейжусь - уже на 72 метра disfiles качнул и все по межсегменту - красота! Всем большое спасибо! /usr/src монтировать не обязательно!!!!
И все-таки без этих записей ничего не работает на 6.2, на 4.1 - да - работает, так как portmap_enable="YES". А на 6.2 не хотит... Видимо все-таки надо назначать порт для NFS ручками.

да все работает :) и лично у меня на машине, и у нас в серверной. и все на 6ке. и ничего не надо назначать ручками.
-= freeBSD stable, fluxbox =-
"если ты будешь со мной спорить, я тебя запишу в книжечку!" (с) Ежик
Спасибо сказали:
Аватара пользователя
Maestro
Сообщения: 227
Статус: ипэшник
ОС: FreeBSD-6.2 STABLE

Re: Порты

Сообщение Maestro »

arachnid писал(а):
21.11.2007 14:52
Maestro писал(а):
21.11.2007 14:18
Да. Про cvsup я уже понял. Да и трафика с cvsup никакого почти. 2-5 метров. Сейчас вот портапгрейжусь - уже на 72 метра disfiles качнул и все по межсегменту - красота! Всем большое спасибо! /usr/src монтировать не обязательно!!!!
И все-таки без этих записей ничего не работает на 6.2, на 4.1 - да - работает, так как portmap_enable="YES". А на 6.2 не хотит... Видимо все-таки надо назначать порт для NFS ручками.

да все работает :) и лично у меня на машине, и у нас в серверной. и все на 6ке. и ничего не надо назначать ручками.

Я так подразумеваю что у Вас (лично) на машине один единственный сетевой интерфейс, а у меня их три, два инета, одна локаль и плюсом 6 vpn интерфейсов. :ph34r:
дайте денег на обновление портов :)
Спасибо сказали:
Аватара пользователя
Maestro
Сообщения: 227
Статус: ипэшник
ОС: FreeBSD-6.2 STABLE

Re: Порты

Сообщение Maestro »

Итак подведем итоги.
Допустим у вас несколько филиалов в городе. На каждом из них роутер на FreeBSD 6.2 STABLE. Все филиалы объединены в сеть при помощи VPN+IPSEC. В центральном (главном) офисе стоит также FreeBSD 6.2 STABLE и объединяет все VPN в себе. Про прокси и прочие функции центрального сервера упоминать не буду. Скажу лишь одно, в центральном офисе цена входящего внешнего трафика дешевле чем в филиалах. А внутригород или межсегмент естественно дешев везде.
ЦЕЛЬ - экономия и централизация всей нашей сети филиалов (поле действий и выдумок неограничено :rolleyes: )
В данном примере мы рассматриваем NFS как средство экономии на обновлении (portupgrade) портов (/usr/ports/distfiles)

Первым делом на центральном сервере делаем следующее
#cvsup -g -L 2 /путь/supfile
#portupgrade -a
#pkgdb -F

Далее настраиваем NFS

На центральном сервере добавляем в /etc/rc.conf

Код: Выделить всё

rpcbind_enable="YES"
nfs_server_enable="YES"
nfs_server_flags="-u -t -n 2 -h x.x.x.x" #где x.x.x.x IP-адрес интерфейса на котором висят VPN
nfs_reserved_port_only="YES"
mountd_flags="-r -p 3333" #Где 3333 номер порта, по которому будет работать NFS


добавляем в /etc/exports

Код: Выделить всё

/usr -alldirs -maproot=root x.x.x.x #пригодится при проверке работы nfsd и mountd
/usr/src /usr/ports -alldirs a.a.a.a b.b.b.b #где a.a.a.a b.b.b.b IP-адреса VPN интерфейсов филиалов А и Б

ребутимся
С центральным сервером все, проверяем работу mountd
#mount x.x.x.x:/usr /mnt
Если в /mnt смонтировался весь Ваш /usr - то все получилось.

Переходим к серверу филиала А
Добавляем в /etc/rc.conf

Код: Выделить всё

nfs_client_enable="YES"

Добавляем в /etc/make.conf, после строчек про перл

Код: Выделить всё

WRKDIRPREFIX=/localpath/compile/

Все с филиалом А, то же самое с филиалом Б и пр.
ребутимся
Обновляем дерево портов с зеркала
#cvsup -g -L 2 /путь/supfile
#pkgdb -F
#mount x.x.x.x:/usr/src /usr/src
#mount x.x.x.x:/usr/ports /usr/ports
#portupgrade -a
#umount /usr/src
#umount /usr/ports
#pkgdb -F
#pkg_version
наслаждаемся красотой знаков равенства.

Вот и все :drunk:
Можно отметить на сэкономленные.

ЗЫ: Еще раз всем кто помог решить эту задачку огромное спасибо!
дайте денег на обновление портов :)
Спасибо сказали: