В общем был у меня сервачек в одной канторе, все было хорошо пока я в очередной раз обнавляя порты получил следующую ошибку:
# portsnap fetch Looking up portsnap1.FreeBSD.org mirrors... none found. Fetching snapshot tag... fetch: http://portsnap1.FreeBSD.org/snapshot.ssl: No address record
Выяснилось, что провайдер поставил proxy, да еще с авторизацией по паролю. Обновлять систему простым способом (portsnap fetch update) стало не возможно.
Первое что пришло в голову так это прописать настройки проксика в /etc/make.conf:
#Синтаксис #HTTP_PROXY="http://<ip_proxy>:<port>" #HTTP_PROXY_AUTH="basic:*:<user_name>:<passwd>" #Пример HTTP_PROXY="http://192.168.0.1:8080" HTTP_PROXY_AUTH="basic:*:123" #Если установлен wget то можно заменить fetch на wget FETCH_CMD=/usr/local/bin/wget -t 10 --retry-connrefused -c --proxy DISABLE_SIZE=yes
Мда… Как и должно было, на установку из портов это подействовало, а вот portsnap ничего не понял…
Смотрим почему. man ничего не дал. Решил посмотреть сам файл /usr/sbin/portsnap, оказалось что portsnap это простой sh-скрипт. Смотрим:
fetch_key() { if [ -r pub.ssl ] && [ `${SHA256} -q pub.ssl` = ${KEYPRINT} ]; then return fi echo -n "Fetching public key... " rm -f pub.ssl fetch ${QUIETFLAG} http://${SERVERNAME}/pub.ssl \
Как видно fetch прописан жестко. Править весь скрипт нет желания, по этому пропишем пару строчек в начало скрипта (из примера выше):
#Синтаксис #HTTP_PROXY="http://<ip_proxy>:<port>" #HTTP_PROXY_AUTH="basic:*:<user_name>:<passwd>" #Пример HTTP_PROXY="http://192.168.0.1:8080" HTTP_PROXY_AUTH="basic:*:123"
О, так заработало! Но радость была преждевременной…
# portsnap fetch Looking up portsnap.FreeBSD.org mirrors... using portsnap1.FreeBSD.org. Fetching snapshot tag... done. Fetching snapshot metadata... done. Updating from Mon Dec 29 07:47:08 NOVT 2008 to Mon Dec 29 15:30:00 NOVT 2008. Fetching 3 metadata patches. done. Applying metadata patches... done. Fetching 3 metadata files... /usr/sbin/portsnap: cannot open ad87c5cf79fef1e351498718c9ad09f52459b7531e751b04630e01ff53879113.gz: No such file or directory metadata is corrupt.
Еще поглядев скрипт portsnap еще раз я увидел еще один ключик (почему то скрыт) —debug
#portsnap --debug fetch Looking up portsnap1.FreeBSD.org mirrors... none found. pub.ssl 100% of 451 B 4618 Bps done. Fetching snapshot tag... snapshot.ssl 100% of 256 B 2615 Bps done. Fetching snapshot metadata... d13209cad4efce194cf08b26861074625f898e356cd485100% of 375 B 3822 Bps done. Fetching snapshot generated at Tue Dec 30 06:13:52 NOVT 2008: fetch: http://portsnap1.FreeBSD.org/s/d13209cad4efce194cf08b26861074625f898e356cd48509f70e1a231690c66d.tgz: size of remote file is not known d13209cad4efce194cf08b26861074625f898e356cd485 602 kB 1715 kBps^C
Как выяснилось, проксик еще и фильтровал контент, по этому часть файлов просто не скачивалось… Пришлось беседовать с провом 🙂
P.S. Нашел еще пару причин в инете. У меня этих проблем не было, но может кому пригодится:
- Проверьте наличие строки «http 80/tcp» в файле /etc/services.
- Проблема решилась установкой версии Portsnap 0.9.5 и все стало нормально.