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