การแก้ปัญหาเกี่ยวกับการซิงค์

หน้านี้อธิบายวิธีแก้ปัญหาเกี่ยวกับ คำสั่ง repo sync

แก้ไขปัญหาเครือข่าย

ส่วนนี้มีคำแนะนำหลายประการเกี่ยวกับการแก้ไขปัญหาเครือข่ายที่อาจ ทำให้ซิงค์ไม่สำเร็จ

ใช้การตรวจสอบสิทธิ์เพื่อหลีกเลี่ยงอุปสรรคด้านโควต้า

เพื่อป้องกันเซิร์ฟเวอร์จากการใช้งานมากเกินไป ที่อยู่ IP แต่ละรายการที่ใช้ในการ แหล่งที่มาของการเข้าถึงมีการเชื่อมโยงกับโควต้า

เมื่อแชร์ที่อยู่ IP กับผู้ใช้คนอื่นๆ เช่น เมื่อเข้าถึงแหล่งที่มา จากที่เก็บนอกเหนือจากไฟร์วอลล์ NAT จะทำให้โควต้าทำงาน รูปแบบ เช่น โควต้าอาจทริกเกอร์เมื่อมีผู้ใช้หลายคนซิงค์ไคลเอ็นต์ใหม่ จากที่อยู่ IP เดียวกันภายในระยะเวลาสั้นๆ

ในการหลีกเลี่ยงการเรียกใช้โควต้า คุณสามารถใช้การเข้าถึงที่ตรวจสอบสิทธิ์แล้ว ซึ่งใช้ โควต้าสำหรับผู้ใช้แต่ละคนแยกกัน โดยไม่คำนึงถึงที่อยู่ IP

ในการเปิดใช้การเข้าถึงที่ผ่านการตรวจสอบสิทธิ์ ให้ทำดังนี้

  1. สร้างรหัสผ่านด้วยเครื่องมือสร้างรหัสผ่าน

  2. เรียกใช้คำสั่งต่อไปนี้เพื่อแปลงไคลเอ็นต์ให้ใช้การชำระเงินอัตโนมัติ การตรวจสอบสิทธิ์ (โดยไม่ต้องเปลี่ยน 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/ และซิงค์ไคลเอ็นต์กับมิเรอร์ดังกล่าว:

  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 และ เริ่มต้นการมิเรอร์โดยใช้แฟล็ก --mirror ที่มี repo init คำสั่ง

  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 แทนการเริ่มต้น Repo เพื่อดาวน์โหลดทุกอย่าง ออบเจ็กต์ตามความจำเป็น

แก้ไขปัญหาการซิงค์บางอย่าง

หน้านี้แสดงรายละเอียดของปัญหาที่ทราบบางประการซึ่งคุณอาจพบขณะพยายามซิงค์ ซอร์สโค้ด Android

คำสั่งล้มเหลวโดยมีข้อผิดพลาด 403 หรือ 500 (ปัญหาเกี่ยวกับพร็อกซี)

คำสั่ง repo init หรือ repo sync อาจล้มเหลวกับ 403 หรือ 500 บ่อยครั้งที่ข้อผิดพลาดเหล่านี้เกี่ยวข้องกับพร็อกซี HTTP ที่ประสบปัญหาในการ จัดการการโอนข้อมูลขนาดใหญ่

แม้ว่าจะไม่มีการแก้ไขข้อผิดพลาดเหล่านี้อย่างเฉพาะเจาะจง แต่การใช้ Python ล่าสุด เวอร์ชันและการใช้ repo sync -j1 อย่างชัดแจ้งอาจช่วยแก้ปัญหาได้ในบางครั้ง