Score:0

ลบไฟล์ .deb ของแพ็คเกจที่ถูกลบออกจาก apt-cache

ธง cn

apt-get ทำความสะอาดอัตโนมัติ ลบล้าสมัย .deb ไฟล์จาก /var/cache/apt/ไฟล์เก็บถาวร ไดเร็กทอรีที่ไม่สามารถใช้งานได้หรือไม่สามารถดาวน์โหลดได้อีกต่อไป

ในทางตรงกันข้าม apt-รับทำความสะอาด ลบทีละรายการ .deb ไฟล์ที่อยู่ใน /var/cache/apt/ไฟล์เก็บถาวร ไดเรกทอรี

ฉันต้องการลบ .deb ไฟล์ของแพ็คเกจที่ไม่ได้ติดตั้งอีกต่อไป ถูกถอนการติดตั้งหรือลบออกแล้ว วิธีการทำเช่นนี้?

user535733 avatar
cn flag
ฉันคิดว่าคุณสามารถใช้ผลลัพธ์ของ `sudo apt-mark showremove` ซอกับการจัดรูปแบบเล็กน้อยและเสียบรายการนั้นลงใน 'sudo apt clean'
Score:0
ธง cn

APT พึ่งพา เอฟซีเอ็นทีแอล(2) ล็อค; เนื่องจากอูบุนตูไม่มีคำสั่งล็อก fcntl คุณจึงอาจใช้ fcntl-ล็อค ยูทิลิตี้สำหรับการล็อค (แม้ว่าจะเป็นโคลนของคำสั่งฝูงของ Peter Anvin ซึ่งล้าสมัยเล็กน้อย)

#!/bin/bash

apt_cache=/var/cache/apt/archives

# ลิงค์: https://github.com/magnumripper/fcntl-lock
# fcntl-lock เป็น fcntl() โคลนฝูงของ H. Peter Anvin(1)
coproc ล็อค {
    ผู้บริหาร fcntl-ล็อค \
    -x -w 3600 "$apt_cache/lock" -c 'echo จริง; ผู้บริหารแมว'
}
อ่าน -ru ${LOCK[0]} || { \
    echo ล้มเหลวในการรับล็อค
    ทางออก 1
}

ประกาศ -a =()
ประกาศ -A A=() B=()

# URL ถอดรหัสชื่อไฟล์ .deb
ซีดี "$apt_cache"
สำหรับ b ใน *.deb; ทำ
    printf -v c %b "${b//%/\x}"; ก[$ค]=$ข
เสร็จแล้ว

# คุณสามารถใช้ @(rc|ii) เพื่อเพิ่มตัวย่อเพิ่มเติม
ในขณะที่อ่าน -r d e; ทำ
    [[ $d = ii ]] && B[$e]=1
เสร็จแล้ว < <( \
    dpkg-แบบสอบถาม \
        -Wf='${db:Status-Abbrev} ${Package}_${Version}_${Architecture}.deb\n' \
)

สำหรับ f ใน "${!A[@]}"; ทำ
    [[ ${B[$f]} = 1 ]] || \
        a+=("$apt_cache/${A[$f]}")
เสร็จแล้ว
((${#a[@]} > 0)) && \
    printf %s\0 "${a[@]}" | xargs -0 rm -v || ทางออก 0

# สะท้อนความสำเร็จ | ts >> /var/log/apt-archive-clean.log

หากคุณต้องการทำให้เป็นอัตโนมัติฉันคิดว่าใช้ systemd.path ทำงานได้ดีที่สุด

apt-archive-clean.path

[หน่วย]
คำอธิบาย=การล้างข้อมูลที่เก็บถาวร APT

[เส้นทาง]
PathChanged=/var/cache/apt/archives/lock

[ติดตั้ง]
WantedBy=multi-user.target

apt-archive-clean.service

[หน่วย]  
Description=การล้างไฟล์เอกสาร APT  
  
[บริการ]  
ประเภท = ง่าย  
ExecStart=/opt/bin/apt-archive-clean.sh

โพสต์คำตอบ

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