疑難排解並修正同步處理問題

本頁說明如何疑難排解及修正 repo sync 指令。

修正網路問題

本節提供一些修正網路問題的建議, 而導致同步處理失敗。

透過驗證機制避免配額限制

為防止伺服器過度使用,每個用於保護伺服器的 IP 位址 存取權來源與配額相關聯

與其他使用者共用 IP 位址時,例如存取來源時 與 NAT 防火牆相比的存放區,配額可能會 例如模式例如,如有多位使用者同步處理新用戶端,就會觸發配額。 存取相同 IP 位址

如要避免觸發配額,可以使用「經過驗證的存取權」 才能為每個使用者分配獨立配額。

如何啟用已驗證存取權:

  1. 使用密碼產生器建立密碼。

  2. 執行下列指令,將用戶端轉換為採用自動 驗證 (不變更分支版本):

    $ repo init -u https://android.googlesource.com/a/platform/manifest
    

    請注意,/a/ 目錄前置字元會觸發自動驗證。

設定 Proxy 使用

如果您是從 Proxy 下載原始碼,在 公司環境,請務必明確指定 Repo 使用的 Proxy 執行下列指令:

$ 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/,並將用戶端與該鏡像同步:

  1. 建立並同步處理鏡像:

    $ 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 旗標初始化鏡像 指令

  2. 如何同步處理鏡像的用戶端:

    $ mkdir -p /usr/local/aosp/main
    $ cd /usr/local/aosp/main
    $ repo init -u /usr/local/aosp/mirror/platform/manifest.git
    $ repo sync
    
  3. 最後,請遵照下列指令將鏡像同步至伺服器,並將用戶端與鏡像同步:

    $ cd /usr/local/aosp/mirror</code>
    $ repo sync
    $ cd /usr/local/aosp/main
    $ repo sync
    

您可以將鏡像儲存至 LAN 伺服器,並透過 NFS 存取 SSH 或 Git也有可能儲存在卸除式硬碟中 這種資源會驅動使用者或機器

使用部分本機副本

如果您使用 Git 2.19 以上版本,請在執行這項作業時指定 --partial-clone 執行repo init以克服所有低延遲網路問題:

  $ repo init -u https://android.googlesource.com/platform/manifest -b main --partial-clone --clone-filter=blob:limit=10M

這個指令不會初始化存放區來下載所有資料,而會下載 Git 物件

修正特定的同步處理問題

本頁將詳細說明您在嘗試同步處理 Android 原始碼。

指令失敗並顯示 403 或 500 錯誤 (Proxy 問題)

repo initrepo sync 指令可能會失敗,並顯示 403 或 500 錯誤。這些錯誤通常與無法連線的 HTTP Proxy 有關 處理大量資料傳輸作業

儘管這些錯誤並沒有具體修正,但使用最新的 Python 且明確使用 repo sync -j1 有時也會有幫助。