วิธีแสดงรายการการอัพเกรดแบ็คพอร์ทที่มี


12

ฉันเพิ่งติดตามUbuntu Backportเพื่อเปิดใช้งาน backport ด้วยตนเองและฉันมีคำถามสองสามข้อ ฉันจะทำอย่างไรในบรรทัดคำสั่ง (เช่นapt-cacherหรือaptitude):

  1. รายการแพคเกจติดตั้งที่มีการอัพเกรด backport หรือไม่ (ก่อนหน้านี้ฉันใช้apt-show-versions -uสำหรับแพ็คเกจที่อัปเกรดได้)
  2. รายการแพคเกจ Backport ที่มีอยู่ทั้งหมด (ติดตั้งหรือไม่)?

คำตอบ:


14
  1. รายการแพ็กเกจที่ติดตั้งซึ่งมีการอัพเกรดแบ็คพอร์ท

    aptitude search '?and(~i, ~Araring-backports)'
    
  2. รายการแพคเกจ Backport ที่มีอยู่ทั้งหมด (ติดตั้งหรือไม่)

    aptitude search '~Abackports ?not(~S ~i ~Abackports)'
    

6

ข้อมูลนี้มีอยู่ใน Synaptic ซึ่งไม่ได้ติดตั้งเป็นค่าเริ่มต้น แต่สามารถรับได้ด้วย

sudo apt-get install synaptic

การเลือกOriginในแถบด้านข้างซ้ายจะช่วยให้สามารถเรียกดูแพคเกจได้ว่ามาจากที่ใดเช่นมาจาก backaring back / universe รวมถึงแพ็คเกจที่ติดตั้งภายในเครื่อง

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

from __future__ import print_function

import apt

def backport_version(package):
  if package.versions is None:
    return False
  for version in package.versions:
    for origin in version.origins:
      if origin.archive.endswith("backports"):
        return version.version
  return None

with apt.Cache() as cache:
  for package in cache:
    version = backport_version(package)
    if version is not None:
      print(package.fullname, version)
      if package.is_installed:
        print("    Installed:", package.installed.version)

จะแสดงรายการแพ็กเกจ backport ที่มีอยู่ทั้งหมดและเวอร์ชันที่ติดตั้งหากติดตั้งไว้


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

วิธี synaptic จะตอบคำถาม แต่ฉันถูกมองมากขึ้นเพื่อ apt-แคช / ความถนัดตามวิธีการแก้ปัญหา (สาย cmd)
ricab

1
หรือ: การค้นหาความถนัด '? และ (~ i, ~ Araring-backports)'; เพื่อรับแพ็กเกจ backport ที่ติดตั้ง
Jason Conti

3
ขอบคุณสำหรับคำตอบทั้งหมด แก้วิธีการแก้ปัญหาความถนัดของคุณ 2. สำหรับ 1 aptitude search '~i ~Abackports ?not(~S ~i ~Abackports)'ผมก็มีการวิจัยมากขึ้นอีกนิดที่จะได้รับ: วิธีนี้แก้ได้ 1 (สมมติว่าเวอร์ชันแบ็กพอร์ตนั้นสูงกว่าเสมอ) ฉันจะไม่ได้รับมันหากปราศจากความช่วยเหลือจากคุณดังนั้นหากคุณต้องการให้มันเป็นคำตอบและฉันจะเลือกมัน
ริคับ

1
อาจต้องการเพิ่มคำตอบของคุณเองและเลือกมัน ฉันส่วนใหญ่เพิ่งชี้เอกสารความถนัด
Jason Conti

4

แก้ไข:หลังจากทดลองบางอย่างฉันพบโซลูชันที่ทำงานได้อย่างสมบูรณ์แบบสำหรับฉัน! โดยจะแสดงเฉพาะแพ็คเกจที่มีเวอร์ชันที่ใหม่กว่าในที่เก็บข้อมูลสำรองและไม่มีอะไรเพิ่มเติม (โซลูชันอื่น ๆ ที่แสดงรายการแพ็คเกจเพิ่มเติม

หากต้องการแสดงรายการอัพเดต backport ที่พร้อมใช้งานให้รันคำสั่งนี้:

aptitude search -t $(lsb_release -sc)-backports '~U ~Abackports'

หากคุณต้องการให้รายการแสดงเวอร์ชันปัจจุบันและใหม่กว่าให้รันคำสั่งนี้แทน:

aptitude search -t $(lsb_release -sc)-backports -F '%p %v -> %V' '~U ~Abackports'

สิ่งนี้จะแสดงผลดังนี้:

nvidia-settings               331.20-0ubuntu -> 346.59-0ubuntu
screen                        4.1.0~20120320 -> 4.2.1-2~ubuntu
yelp-xsl                      3.10.1-1       -> 3.12.0-1~ubunt

หากคุณไม่ต้องการจดจำคำสั่งนี้เพิ่มสิ่งนี้ใน~/.bashrc:

alias apt-list-backports="aptitude search -t $(lsb_release -sc)-backports -F '%p %v -> %V' '~U ~Abackports'"

ตอนนี้คุณต้องเขียนapt-list-backportsเท่านั้น!


คำตอบเดิม

เพิ่งค้นพบวิธีอื่น:

apt-get upgrade -s -t $(lsb_release -sc)-backports

สิ่งนี้จะจำลองการอัพเกรดและแสดงรายการว่าจะอัพเกรดแพ็คเกจใด แต่การอัปเกรดเป็น backport ก็รวมอยู่ด้วย (ฉันคิดว่าการอัพเกรดปกติจะแสดงด้วย)

คุณยังสามารถเพิ่มตัวเลือก-Vเพื่อแสดงเวอร์ชันที่จะอัพเกรดเป็นแพ็คเกจได้


ในการดูการเปลี่ยนแปลงของแพ็คเกจใน backport ให้ใช้:

apt-get changelog -t $(lsb_release -sc)-backports PACKAGE_NAME
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.