หน้านี้อธิบายวิธีแก้ปัญหาและแก้ไขปัญหาที่เกี่ยวข้องกับคำสั่ง repo sync
แก้ไขปัญหาเกี่ยวกับเครือข่าย
ส่วนนี้มีคำแนะนำหลายอย่างในการแก้ไขปัญหาเครือข่ายที่อาจทำให้ซิงค์ไม่สำเร็จ
ใช้การตรวจสอบสิทธิ์เพื่อหลีกเลี่ยงอุปสรรคด้านโควต้า
ระบบจะเชื่อมโยงโควต้ากับที่อยู่ IP แต่ละรายการที่ใช้เพื่อ เข้าถึงแหล่งข้อมูลเพื่อป้องกันเซิร์ฟเวอร์จากการใช้งานมากเกินไป
เมื่อแชร์ที่อยู่ IP กับผู้ใช้รายอื่น เช่น เมื่อเข้าถึงที่เก็บข้อมูลต้นทางจากภายนอกไฟร์วอลล์ NAT โควต้าอาจทริกเกอร์สำหรับรูปแบบปกติ เช่น โควต้าอาจทริกเกอร์เมื่อผู้ใช้หลายรายซิงค์ไคลเอ็นต์ใหม่ จากที่อยู่ 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
ใช้มิเรอร์ในพื้นที่เพื่อหลีกเลี่ยงเวลาในการตอบสนองของเครือข่าย
เมื่อใช้ไคลเอ็นต์หลายตัว คุณจะสร้างมิเรอร์ในเครื่องของเนื้อหาเซิร์ฟเวอร์ทั้งหมดและซิงค์ไคลเอ็นต์จากมิเรอร์นั้นได้โดยไม่ต้องเข้าถึงเครือข่าย ทำตามวิธีการต่อไปนี้เพื่อสร้างมิเรอร์ในเครื่องที่ at
~/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
และ เริ่มต้นมิเรอร์โดยใช้ Flag--mirror
กับคำสั่งrepo init
ซิงค์ไคลเอ็นต์จากมิเรอร์
$ mkdir -p /usr/local/aosp/main $ cd /usr/local/aosp/main $ repo init -u /usr/local/aosp/mirror/platform/manifest.git -b android-latest-release $ repo sync
ซิงค์มิเรอร์กับเซิร์ฟเวอร์และ ซิงค์ไคลเอ็นต์กับมิเรอร์
$ cd /usr/local/aosp/mirror</code> $ repo sync $ cd /usr/local/aosp/android-latest-release $ repo sync
คุณสามารถจัดเก็บมิเรอร์ไว้ในเซิร์ฟเวอร์ LAN และเข้าถึงผ่าน NFS, SSH หรือ Git ได้ นอกจากนี้ คุณยังจัดเก็บไว้ในไดรฟ์แบบถอดได้และส่งต่อไดรฟ์นั้น ระหว่างผู้ใช้หรือเครื่องได้ด้วย
ใช้การโคลนบางส่วน
หากคุณใช้ Git เวอร์ชัน 2.19 ขึ้นไป ให้ระบุ --partial-clone
เมื่อrepo init
เพื่อแก้ไขปัญหาเครือข่ายที่มีเวลาในการตอบสนองต่ำ
$ repo init -u https://android.googlesource.com/platform/manifest -b android-latest-release --partial-clone --clone-filter=blob:limit=10M
คำสั่งนี้จะดาวน์โหลดออบเจ็กต์ Git เมื่อจำเป็นแทนที่จะเริ่มต้น Repo เพื่อดาวน์โหลดทุกอย่าง
แก้ปัญหาข้อผิดพลาด 403 หรือ 500 (ปัญหาพร็อกซี)
คำสั่ง repo init
หรือ repo sync
อาจล้มเหลวโดยมีข้อผิดพลาด 403 หรือ 500
ข้อผิดพลาดเหล่านี้มักเกี่ยวข้องกับพร็อกซี HTTP ที่มีปัญหาในการจัดการการโอนข้อมูลจำนวนมาก
แม้ว่าจะไม่มีวิธีแก้ไขข้อผิดพลาดเหล่านี้โดยเฉพาะ แต่การใช้ Python เวอร์ชันล่าสุด
และการใช้ repo sync -j1
อย่างชัดเจนอาจช่วยได้ในบางครั้ง