fastest_sites - ports 빌드 속도 올리기

ports 빌드에서 가장 많은 시간을 소비하는 부분 중 하나는 배포 파일(distfiles)을 내려받는(fetch) 시간이다. 이 파일을 내려받게 되는 사이트는 해당 port의 Makefile에서 지정된다.

sudo의 예 (/usr/ports/security/sudo/Makefile)

PORTNAME=       sudo
DISTVERSION=    1.8.8
CATEGORIES=     security
MASTER_SITES=   ${MASTER_SITE_SUDO}

MASTER_SITE_SUDO는 /usr/ports/Mk/bsd.sites.mk에 다음과 같이 정의되어 있다.

MASTER_SITE_SUDO+= \
    http://www.sudo.ws/sudo/dist/ \
    http://ftp.arcane-networks.fr/pub/mirrors/sudo/ \
    http://sudo.p8ra.de/sudo/dist/ \
    http://sudo.cybermirror.org/ \
      ...

여기에 정의된 순서대로 배포 파일을 찾게 되는데, fastest_sites는 이 목록을 현재 사용자의 컴퓨터로부터 각 사이트의 연결 속도를 측정하여 빠른 속도 순으로 정렬하고 MASTER_SITE_SUDO 목록을 치환하는 Makefile을 출력한다.

$ fastest_sites MASTER_SITE_SUDO
 => Checking servers for MASTER_SITE_SUDO (51 servers)
MASTER_SITE_SUDO=\
ftp://ftp.st.ryukoku.ac.jp/pub/security/tool/sudo/ \
ftp://ftp.twaren.net/Unix/Security/Sudo/ \
ftp://ftp.in2p3.fr/pub/sudo/ \
http://ftp.arcane-networks.fr/pub/mirrors/sudo/ \
  ...

fastest_sites를 인자 없이 실행하면 모든 마스터 사이트(MASTER_SITE_*)에 대하여 실행한다.

설치

$ cd /usr/ports/ports-mgmt/fastest_sites/
$ sudo make install

사용

fastest_sites의 결과를 /usr/local/etc/(또는 어딘가)에 파일로 출력하여

# fastest_sites > /usr/local/etc/ports_sites.conf

/etc/make.conf에서 포함(include)해 놓으면 ports 빌드에서 기본적으로 사용된다.

.include "/usr/local/etc/ports_sites.conf"