ฉันจะเปลี่ยนมิเรอร์ในเซิร์ฟเวอร์ Ubuntu จากภูมิภาคเป็นหลักได้อย่างไร


76

ฉันมี Lucid Server (10.04) ตั้งค่าและฉันต้องการเปลี่ยนมิเรอร์จาก US (หรือประเทศอื่น ๆ ) เป็น Mirror Ubuntu หลัก

ตัวอย่างเช่นสองรายการแรกของฉันในแหล่งรายการคือ:

deb http://us.archive.ubuntu.com/ubuntu/ lucid main restricted
deb-src http://us.archive.ubuntu.com/ubuntu/ lucid main restricted

ในระบบเดสก์ท็อปฉันจะเลือกมิเรอร์หลักดังนี้:

แหล่งซอฟแวร์

แต่ฉันจะทำอย่างนั้นได้อย่างไรจากเครื่องเทอร์มินัลเนื่องจากฉันไม่ได้ติดตั้งสภาพแวดล้อมแบบกราฟิก!

คำตอบ:


95

เปิดsources.listไฟล์ของคุณโดยใช้โปรแกรมแก้ไขข้อความที่คุณชื่นชอบเช่น

sudo nano /etc/apt/sources.list

ค้นหาข้อความและแทนที่ด้วยhttp://us.archive.ubuntu.com/ubuntuhttp://archive.ubuntu.com/ubuntu


ฉันคิดว่าสิ่งนี้จะทำเคล็ดลับ แต่เมื่อฉันทำตามที่คุณแนะนำ แต่มันทำให้ฉันมีข้อผิดพลาด 404 สำหรับพื้นที่เก็บข้อมูล ฉันได้ตรวจสอบอีกครั้งในขณะนี้และดูเหมือนว่าจะไม่เป็นไร ดูเหมือนว่าจะมีปัญหากับการเชื่อมต่อเครือข่ายของฉัน ขอบคุณมากสำหรับคำตอบ
Sorin-Mihai Oprea

มีวิธีที่ปลอดภัยเช่นเดียวกับ GUI ฉันหมายถึงอย่าเปลี่ยนมันด้วยตนเองและหลีกเลี่ยงการพิมพ์ผิดหรืออะไรก็ตาม
ออกจากระบบ

อาจจะเป็นเช่นนี้: askubuntu.com/questions/20414/… @logoff
Luke Stanley

1
รันในapt-get updateภายหลังเพื่อให้ APT สามารถอัพเดตแพ็คเกจได้ เริ่มแรกฉันได้รับPackage X has no installation candidateข้อความเพราะ APT ยังไม่ได้สแกนที่เก็บใหม่สำหรับแพ็คเกจ
NS du Toit

เพื่อใช้ในสคริปต์sedคำสั่งต่อไปนี้สามารถใช้sed -E -i 's#http://[^\s]*archive\.ubuntu\.com/ubuntu#http://be.archive.ubuntu.com/ubuntu#g' /etc/apt/sources.list'/etc/apt/sources.list แทนที่nlด้วยรหัสประเทศของคุณ
Mandy S

55

คำสั่งนี้ควรทำเคล็ดลับ:

sudo sed -i 's|http://us.|http://|g' /etc/apt/sources.list

มันจะลบ 'เรา' คำนำหน้าในแต่ละที่อยู่ที่จะแปลงเป็นที่อยู่ของเซิร์ฟเวอร์หลัก

แน่นอนแทนที่ 'เรา' ด้วยกระจกอื่น ๆ ที่คุณใช้

ในคำอธิบายเชิงลึกของคำสั่ง:

sed - สตรีมตัวแก้ไขสำหรับการกรองและการแปลงข้อความ

  • -iโต้แย้งคือการแก้ไขไฟล์ในสถานที่ที่

  • จากนั้น's | regexp | ทดแทน | g' , sระบุการค้นหาและแทนที่คำสั่ง

  • กรัมในตอนท้ายเป็นข้อโต้แย้งที่จะ "ทั่วโลก" ค้นหา

  • สรุป:แทนที่เกิดขึ้นทั้งหมดของhttp: // เรา ด้วยhttp: //ในแฟ้ม/etc/apt/sources.list


1
ลองอธิบายคำสั่งเพิ่มเติมอีกเล็กน้อยมันจะทำอะไร?
Evandro Silva

1
หากต้องการเปลี่ยนจากเราเป็นเดอมิเรอร์ให้ทำดังนี้:sudo sed -i 's/http:\/\/us./http:\/\/de./g' /etc/apt/sources.list'
คริสเตียน

วิธีการโพสต์ที่นี่ถูกต้องอย่างไรก็ตามโค้ดที่โพสต์ด้านบนผิด [รหัส] "sudo sed -i 's / http: \ / \ / us./http:\/\//g' / etc / apt / แหล่งที่มารายการ "[/ รหัส] ซึ่งเป็น cmd sed ที่โพสต์ที่ด้านล่างทำให้รู้สึก
SAGAR Nair

ขอบคุณมากสำหรับสายการบินที่ไม่มีการแก้ไขข้อความด้วยตนเอง ฉันเพิ่มความเร็วในการดาวน์โหลดเพียงไม่กี่ kB / s เป็น 10 MB / s โดยใช้sudo sed -i 's|http://us.|http://ch.|g' /etc/apt/sources.list(ฉันอยู่ในสวิตเซอร์แลนด์) ฉันทำงานกับอิมเมจ osboxes และเห็นได้ชัดว่าพวกเขาค่อนข้างผิดพลาดในเรื่องนั้น ...
masterxilo

4

แก้ไขการใช้งาน sed เพื่อลบ / เปลี่ยนรหัสประเทศ "us" จาก source.list เป็นอย่างอื่นเช่น "au" คำสั่งจะเป็นดังนี้:

sed -i 's/http:\/\/us./http:\/\/au./g' /etc/apt/sources.list

หรือเพียงแค่ลบ "เรา" เพียงอย่างเดียวแทนที่จะเปลี่ยนเป็นอะไรใช้รหัสด้านล่าง:

sed -i 's/http:\/\/in./http:\/\//g' /etc/apt/sources.list

3

ด้วยvim:

mv /etc/apt/sources.list{,.bak}   # you may want to make a backup
vim /etc/apt/source.list

พิมพ์:(คุณต้องกดค้างไว้Shift) เพื่อเข้าสู่โหมดคำสั่งจากนั้นพิมพ์:

%s/http:\/\/us\./http:\/\//g

ตี Enter

กดEscเพื่อให้แน่ใจว่าคุณออกจากโหมดบรรทัดคำสั่งและเข้าสู่โหมดปกติแล้ว ตอนนี้คุณสามารถเลื่อนไปรอบ ๆ ไฟล์โดยใช้แป้นย้ายคีย์บอร์ด (ถ้าคุณต้องการ) เพื่อให้แน่ใจว่ากระจกที่เกิดขึ้นทั้งหมดของเราได้รับการแก้ไขแล้ว

สุดท้ายทางออกด้วยการประหยัดโดยการเข้าสู่โหมดบรรทัดคำสั่ง (ชนิด:) และป้อนเพื่อบันทึกและออกwq!vim


ที่นี่ในการค้นหา regexp% s / http: \ / \ / us \ ./ http: \ / \ // g; "" (dot) ไม่ใช่ตัวคั่นดังนั้นไม่จำเป็นต้องหลบหลีกด้วยแบ็กสแลช
SAGAR Nair

@SAGARBHOOSHAN .โดยตัวเองเป็น "ตัวอักษรใด ๆ ยกเว้นบรรทัดใหม่" แบ็กสแลชคือเพื่อให้แน่ใจว่าตรงกับจุดตัวอักษรเท่านั้น
ชัยต. เร็กซ์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.