이 페이지에서는 repo sync
명령어와 관련된 문제를 해결하는 방법을 설명합니다.
네트워크 문제 해결
이 섹션에서는 동기화 실패를 야기할 수 있는 네트워크 문제를 해결하기 위해 여러 제안사항을 제공합니다.
인증을 사용하여 할당량 배리어 방지
서버의 과도한 사용을 방지하기 위해 소스에 액세스하는 데 사용하는 각 IP 주소는 할당량과 연결됩니다.
NAT 방화벽을 벗어나 소스 저장소에 액세스할 때 등 다른 사용자와 IP 주소를 공유할 때는 일반적인 패턴에 대해서 할당량이 트리거될 수 있습니다. 예를 들어 여러 사용자가 단기간 내에 동일한 IP 주소에서 새 클라이언트를 동기화하면 할당량이 트리거될 수 있습니다.
할당량이 트리거되지 않도록 하려면 IP 주소와 관계없이 각 사용자의 별도 할당량을 사용하는 인증된 액세스를 사용하면 됩니다.
인증된 액세스를 사용 설정하려면 다음을 실행하세요.
비밀번호 생성기로 비밀번호를 만듭니다.
다음 명령어를 실행하여 브랜치 변경 없이 자동 인증을 사용하도록 클라이언트를 변환합니다.
$ repo init -u https://android.googlesource.com/a/platform/manifest
/a/
디렉터리 접두사는 자동 인증을 트리거합니다.
프록시 사용을 위한 구성
프록시 뒤에서 소스를 다운로드한다면(일부 회사 환경에서 일반적임) 다음 명령어를 실행하여 Repo에서 사용할 프록시를 명시적으로 지정해야 합니다.
$ export HTTP_PROXY=http://proxy_user_id:proxy_password@proxy_server:proxy_port
$ export HTTPS_PROXY=http://proxy_user_id:proxy_password@proxy_server:proxy_port
TCP/IP 설정을 조정하여 연결 문제 방지
드물긴 하지만 Linux 클라이언트에서는 객체를 수신하는 동안 다운로드 중에 멈추는 등 연결 문제가 발생할 수 있습니다. 이 문제를 개선하려면 TCP/IP 스택 설정을 조정하거나 비 병렬 연결을 사용하세요. TCP 설정을 수정하려면 루트 액세스 권한이 있어야 합니다. 설정을 수정하려면 다음 명령어를 실행하세요.
$ sudo sysctl -w net.ipv4.tcp_window_scaling=0
$ repo sync -j1
로컬 미러를 사용하여 네트워크 지연 시간 방지
여러 클라이언트를 사용할 때는 전체 서버 콘텐츠의 로컬 미러를 만들어 네트워크에 액세스하지 않고도 해당 미러에서 클라이언트를 동기화할 수 있습니다. 다음 안내를 따라 ~/aosp-mirror/
에 로컬 미러를 만들고 해당 미러에서 클라이언트를 동기화합니다.
다음과 같이 미러를 만들고 동기화합니다.
$ mkdir -p /usr/local/aosp/mirror $ cd /usr/local/aosp/mirror $ repo init -u https://android.googlesource.com/mirror/manifest --mirror
다음 명령어는
/user/local/aosp/mirror
에 로컬 미러를 만들고repo init
명령어와 함께--mirror
플래그를 사용하여 미러를 초기화합니다.미러에서 클라이언트를 동기화하려면 다음을 실행합니다.
$ mkdir -p /usr/local/aosp/main $ cd /usr/local/aosp/main $ repo init -u /usr/local/aosp/mirror/platform/manifest.git $ repo sync
마지막으로 다음 명령어에 따라 서버를 대상으로 미러를 동기화하고 미러를 대상으로 클라이언트를 동기화합니다.
$ cd /usr/local/aosp/mirror</code> $ repo sync $ cd /usr/local/aosp/main $ repo sync
LAN 서버에 미러를 저장하고 NFS, SSH 또는 Git을 통해 액세스할 수 있습니다. 또한 이동식 드라이브에 저장하고 사용자나 컴퓨터 간에 드라이브를 전달할 수도 있습니다.
부분 클론 사용
Git 버전 2.19 이상을 사용한다면 repo init
를 실행할 때 --partial-clone
을 지정하여 지연 시간이 짧은 네트워크 문제를 해결하세요.
$ repo init -u https://android.googlesource.com/platform/manifest -b main --partial-clone --clone-filter=blob:limit=10M
Repo를 초기화하여 모든 항목을 다운로드하는 대신 이 명령어는 필요에 따라 Git 객체를 다운로드합니다.
특정 동기화 문제 해결
이 페이지는 Android 소스 코드를 동기화하는 중에 발생할 수 있는 몇 가지 알려진 문제를 자세히 설명합니다.
403 또는 500 오류(프록시 문제)와 함께 명령어 실패
repo init
또는 repo sync
명령어는 403 오류나 500 오류와 함께 실패할 수 있습니다. 이러한 오류는 대부분 대규모 데이터 전송을 처리하는 데 어려움을 겪는 HTTP 프록시와 관련됩니다.
이러한 오류를 해결하는 특정 방법은 없지만 최신 Python 버전을 사용하고 repo sync -j1
을 명시적으로 사용하면 도움이 될 수 있습니다.