Score:10

จะปิดการอัพเดทแคชแพ็คเกจอัตโนมัติอย่างถาวรหลังจากเพิ่ม PPA ได้อย่างไร

ธง us

ใน Ubuntu รุ่นล่าสุด การเพิ่ม PPA จะอัปเดตแคชแพ็คเกจโดยอัตโนมัติทันที

บางครั้ง ฉันต้องเพิ่ม PPA หลายรายการ (เช่น หลังจากติดตั้งใหม่) และต้องการเรียกใช้ด้วยตนเอง การปรับปรุงที่เหมาะสม ในครั้งเดียว หลังจากเพิ่ม PPA ทั้งหมดแล้ว

ทำอย่างไร?

ฉันพบ นี้ คำถามที่แนะนำให้ใช้ add-apt-repository -n ppa:user/repo.

วิธีการเปลี่ยนลักษณะการทำงานเริ่มต้นเพื่อให้แคชของแพ็คเกจไม่ได้รับการอัปเดตแม้ว่า -น ธงไม่ได้ให้มา?

ตัวอย่างเช่น ใน Linux Mint แคชของแพ็คเกจจะไม่ได้รับการอัพเดตโดยอัตโนมัติหลังจากเพิ่ม PPA จะทำให้เป็นพฤติกรรมเริ่มต้นใน Ubuntu ได้อย่างไร

Terrance avatar
id flag
คำถามเด็ด! ฉันไม่เก่งเรื่องนามแฝง แต่อาจตั้งค่านามแฝงเช่น `add-apt-repository -ny` แต่ฉันไม่เก่งเรื่องแบบนั้น
mchid avatar
bo flag
@Terrance เนื่องจากคำสั่งใช้ `sudo` คุณต้องเพิ่มนามแฝงสำหรับคำสั่ง `sudo`: `alias sudo='sudo '` (โดยเว้นวรรคหลัง sudo) มิฉะนั้น คำสั่ง `sudo` จะไม่ใช้นามแฝงของคุณ
Terrance avatar
id flag
@mchid บอกคุณว่าฉันแย่มาก! :) นั่นสมเหตุสมผลมาก ขอบคุณ! :)
muru avatar
us flag
สำหรับ Linux Mint พวกเขาใช้ [สำเนาโบราณของ `add-apt-repository`](https://github.com/linuxmint/mintsources/blob/master/usr/bin/add-apt-repository)
Score:7
ธง bo

สำหรับผู้ใช้ที่ระบุ คุณสามารถเพิ่มนามแฝงสำหรับ add-apt-repository.

เพิ่มบรรทัดต่อไปนี้ต่อท้ายของคุณ ~/.bashrc ไฟล์:

นามแฝง sudo='sudo'
นามแฝง add-apt-repository='add-apt-repository -n'
นามแฝง apt-add-repository='add-apt-repository -n'

หลังจากที่คุณบันทึกการเปลี่ยนแปลงแล้ว อย่าลืมระบุแหล่งที่มาของคุณ ~/.bashrc ไฟล์:

. ~/.bashrc

โปรดทราบว่าบรรทัดแรกจำเป็นต้องใช้นามแฝงด้วย ซูโด. หากคุณมีนามแฝงที่คุณต้องการแยกออก ซูโด ใช้วิธีนี้อาจไม่ใช่วิธีที่ดีที่สุด

Liso avatar
sd flag
วิธีแก้ปัญหาอย่างชาญฉลาด +1 !
Score:5
ธง zw

สำหรับวิธีการทั้งระบบฉันจะสร้างสคริปต์ตัวตัดคำในเครื่องที่วางไว้ /usr/local/bin ดังนี้

แมว <<\EOF | sudo tee /usr/local/bin/add-apt-repository
#!/bin/bash
/usr/bin/add-apt-repository -n $@
อฟ
sudo chmod +x /usr/local/bin/add-apt-repository

และอย่าลืมเกี่ยวกับ apt-เพิ่มที่เก็บ คำสั่งคำพ้องความหมาย - เรียกใช้

sudo ln -s /usr/local/bin/add-apt-repository /usr/local/bin/apt-add-repository

จากนั้นใช้คำสั่งเหล่านี้กับ -น เพิ่มตัวเลือกอัตโนมัติ

Score:3
ธง my

ผู้ใช้ขั้นสูง

คุณสามารถแก้ไขซอร์สโค้ดเพื่อลบ การปรับปรุงที่เหมาะสม สั่งการ.

นี่คือบล็อกรหัสที่คุณต้องลบออกจาก /usr/bin/add-apt-repository ไฟล์:

        หากอัปเดตและไม่ใช่ตัวเลือกให้ลบ:
            os.execvp("apt-get", ["apt-get", "อัพเดท"])
        sys.exit(0)

การดำเนินการนี้จะลบคำสั่งอัปเดต

บันทึก: โค้ดนี้มาสองครั้งในไฟล์ คุณต้องลบอันสุดท้ายออก โค้ดส่วนนี้ในไฟล์ส่วนใหญ่จะอยู่ที่ไหนสักแห่ง ใกล้สาย 198.

คุณสามารถเปิดไฟล์โดยใช้โปรแกรมแก้ไขข้อความ เช่น นาโน และลบโค้ดส่วนนี้ออก

คุณยังสามารถแก้ไขโค้ดได้เล็กน้อย เช่น:

        หากอัปเดตและไม่ใช่ตัวเลือกให้ลบ:
            os.execvp("apt-get", ["apt-get", "หมู่"])
        sys.exit(0)

บันทึก: แก้ไขไฟล์นี้ด้วยโปรแกรมแก้ไขข้อความเทอร์มินัลเช่น นาโน แทนที่จะเป็นโปรแกรมแก้ไข GUI เช่น gedit.

ผู้เริ่มต้น

เปิดเทอร์มินัลโดยใช้ Ctrl + Alt +

  1. ก่อนอื่นให้ติดตั้งนาโน:

    อัปเดต sudo apt
    sudo apt ติดตั้งนาโน
    
  2. แก้ไขไฟล์:

    sudo nano /usr/bin/add-apt-repository
    
  3. กดปุ่มลูกศรลงซ้ำๆ เว้นแต่คุณจะถึงจุดสิ้นสุดของไฟล์

  4. คุณจะพบกับ ถ้า คำสั่งที่มีลักษณะดังนี้:

            หากอัปเดตและไม่ใช่ตัวเลือกให้ลบ:
                os.execvp("apt-get", ["apt-get", "อัพเดท"])
            sys.exit(0)   
    
  5. ลบทั้งหมด ถ้า บล็อกรหัสที่กล่าวถึงข้างต้น

  6. กด Ctrl + เอ็กซ์ แล้วเลือก วาย และกด เข้าสู่.

ทดสอบ

ทดสอบ

กู้คืนไฟล์

กระจัดกระจาย?

ไม่ต้องกังวล! หากเราวิ่ง dpkg -S ในไฟล์ เราสามารถเห็น:

$ dpkg -S /usr/bin/add-apt-repository 
คุณสมบัติซอฟต์แวร์ทั่วไป: /usr/bin/add-apt-repository

ดังนั้นเพียงแค่เรียกใช้:

อัปเดต sudo apt
sudo cp -r /usr/bin/add-apt-repository /tmp
sudo rm -rf /usr/bin/add-apt-repository
sudo apt install software-properties-common --reinstall
Someone avatar
my flag
สำหรับผู้ลงคะแนนเสียงที่ชาญฉลาดของเรา: ลองอธิบายว่าทำไมคุณถึงลงคะแนนเสียง นี่คือสิ่งที่พวกเขาต้องการ รู้สึกอิสระที่จะแก้ไขหรือให้คำแนะนำ อย่างน้อยบอกเหตุผลสำหรับการลงคะแนน ฉันไม่คิดว่าคุณลงคะแนนเพียงเพื่อเสียตัวแทน 1 คน ลองบอกเหตุผล เพื่อไม่ให้การเสียตัวแทน 1 ครั้งของคุณสูญเปล่า
ua flag
คุณกำลังทำลายสิ่งต่างๆ มากมายสำหรับการอัปเดตที่กำลังจะมีขึ้น หากคุณต้องการใช้เวอร์ชันที่กำหนดเอง ให้วางไว้ใน `/usr/local/bin` ซึ่งควรอยู่ใน `$PATH` ก่อน `/usr/bin` และโปรแกรมที่เป็นทางการจะไม่ถูกใช้ ดังนั้นคุณจะไม่ทำลายการอัปเดตของ `apt-add-repository` และการคืนค่าการเปลี่ยนแปลงจะต้องลบไฟล์ใน `/usr/local/bin` คุณกำลังแนะนำสคริปต์ที่กำหนดเองซึ่งไม่สามารถตรวจสอบได้ง่ายๆ เมื่อคำตอบอื่นๆ แนะนำสคริปต์ตัวตัดขั้นต่ำซึ่งช่วยแก้ปัญหา เข้าใจง่าย และติดตั้งในลักษณะที่ไม่ทำให้การอัปเดตในอนาคตเสียหาย
Someone avatar
my flag
@allo ตกลง ฉันเห็นด้วยและยอมรับข้อกังวลของคุณอย่างเต็มที่ อย่างไรก็ตาม อย่างน้อยก็ดูเหมือนจะเป็นคำตอบ *ดี* สำหรับฉันเป็นอย่างน้อย ดังนั้นฉันจะไม่ลบทิ้ง... อย่างไรก็ตาม อย่าลังเลที่จะแก้ไขและใส่ข้อกังวลของคุณเกี่ยวกับ `/usr/local/bin` หรือโพสต์คำตอบใหม่เกี่ยวกับสิ่งเดียวกัน *คุณกำลังแนะนำสคริปต์ที่กำหนดเองซึ่งไม่สามารถตรวจสอบได้ง่ายๆ* ฉันควรชี้แจงว่าสคริปต์นั้นลบโค้ดเพียงบรรทัดเดียวซึ่งลบสิ่งอัปเดต apt ออกไป
ua flag
มันไม่ใช่คำตอบที่ไม่ดีต่อตัว ฉันคิดเฉพาะเมื่อคุณขอรายละเอียดว่าทำไมบางคนถึงลงคะแนน ฉันจะพยายามชี้ให้เห็นปัญหาบางอย่างที่อาจทำให้คะแนนโหวตต่ำกว่าคำตอบอื่นๆ หากคุณกำลังแนะนำให้ลบบางบรรทัด ลองอธิบายการเปลี่ยนแปลงนี้และอาจมีประโยชน์มาก เมื่อเวอร์ชันอัปสตรีมอาจมีการเปลี่ยนแปลงในอนาคต การเปลี่ยนแปลงของคุณอาจยังนำไปใช้กับเวอร์ชันใหม่ได้ แต่สำเนาที่เปลี่ยนแปลงจะไม่มีการอัปเดตจากอัปสตรีม
Someone avatar
my flag
@allo **ดูเหมือนว่าฉันได้แก้ไขปัญหาเหล่านั้นแล้วในการแก้ไขล่าสุดของฉัน**
us flag
+1 อย่างไรก็ตาม นี่เป็นวิธีที่ซับซ้อนเกินไป

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา