Не знаю, что изменил в настройках фаервола мой провайдер, но с недавних пор на домашнем компьютере стало невозможно пользоваться FTP. При загрузке файлов скачиваются несколько байт, после чего все это дело повисает. К счастью, этим протоколом я почти не пользуюсь, если не считать установку программ из портов. В этой заметке я хотел бы поделиться рецептом, что прописать в /etc/make.conf, чтобы тарболы тянулись только с веб-серверов.
Для начала я бы советовал прописать
FETCH_CMD=/usr/local/bin/wget -t 3 -c
# не указываем флаг -S, который понимает fetch, но не знаком wget
DISABLE_SIZE=yes
Этим мы заставляем систему портов использовать wget для скачивания файлов вместо стандартного fetch. Судя по отзывам, wget лучше работает при медленной скорости подключения. Да, к FTP это не имеет никакого отношения.
Далее пишем:
MASTER_SORT_REGEX=^http
Если в Makefile порта прописано несколько зеркал, среди которых есть как ftp, так и http серверы, предпочтение будет отдаваться последним.
И, наконец, самое главное:
MASTER_SITE_BACKUP?= \
http://ftp3.ru.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/ \
http://ftp4.ru.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/ \
http://ftp5.ru.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/ \
http://ftp6.ru.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/ \
http://ftp2.ru.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/ \
http://ftp1.ru.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?= ${MASTER_SITE_BACKUP}
Таким образом вместо стандартного сервера ftp://ftp.freebsd.org архивы будут тянуться с перечисленных http-серверов (и пусть наличие «ftp» в их именах Вас не смущает). Этот список лучше всего отсортировать по скорости доступа к серверу, узнать которую можно с помощью ping.
P.S.
Кстати, если мы пользуемся пакеджами, в /root/.cshrc следует прописать
setenv PACKAGEROOT http://ftp3.ru.freebsd.org
и эффект будет тем же.