Làm thế nào để liệt kê các nâng cấp backport có sẵn


12

Tôi vừa theo dõi Ubuntu Backports để kích hoạt backport thủ công và tôi có một vài câu hỏi. Làm thế nào tôi có thể, trong dòng lệnh (ví dụ apt-cacherhoặc aptitude):

  1. danh sách các gói cài đặt có sẵn nâng cấp backport? (Trước đây, tôi đã sử dụng apt-show-versions -ucho các gói nâng cấp)
  2. liệt kê tất cả các gói backport có sẵn (cài đặt hay không)?

Câu trả lời:


14
  1. liệt kê các gói đã cài đặt có sẵn nâng cấp backport

    aptitude search '?and(~i, ~Araring-backports)'
    
  2. liệt kê tất cả các gói backport có sẵn (đã cài đặt hay chưa)

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

6

Thông tin này có sẵn trong Synaptic, không được cài đặt theo mặc định nhưng có thể được lấy bằng,

sudo apt-get install synaptic

Chọn Xuất xứ trong thanh bên trái sẽ cho phép các gói được duyệt theo nơi chúng đến, chẳng hạn như các cổng sau / vũ trụ, cũng như các gói được cài đặt cục bộ.

Thay vào đó, nếu bạn quan tâm đến giải pháp dòng lệnh, tôi đã hack một tập lệnh python nhanh và bẩn để liệt kê các gói trong backport, mặc dù không may là nó khá chậm.

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)

Nó liệt kê tất cả các gói backport có sẵn và phiên bản đã cài đặt nếu được cài đặt.


Cảm ơn, bạn đã nâng cao nhận thức của tôi về apt trong python, điều này chắc chắn rất hữu ích. Vì tôi sẽ bầu bạn nếu người đại diện của tôi cho phép điều đó ... Nhưng tôi thà tìm kiếm thứ gì đó tích hợp sẵn. Khi dòng chính thức là có backport thủ công, tôi đoán phải có một số cách tự nhiên hơn để có được thông tin này
ricab

phương pháp synap sẽ trả lời câu hỏi, nhưng tôi đã tìm kiếm nhiều hơn về giải pháp dựa trên apt-cache / aptitude (dòng cmd)
ricab

1
Hoặc: tìm kiếm năng khiếu '? Và (~ i, ~ Arared-backports)'; để được cài đặt các gói backport
Jason Conti

3
cảm ơn vì tất cả những hồi đáp. Giải pháp năng khiếu của bạn giải quyết được 2. Trong 1, tôi đã phải nghiên cứu thêm một chút để có được : aptitude search '~i ~Abackports ?not(~S ~i ~Abackports)'. Điều này giải quyết 1 (giả sử các phiên bản backports luôn cao hơn). Tôi sẽ không nhận được nó mà không có sự giúp đỡ của bạn, vì vậy nếu bạn muốn làm cho nó một câu trả lời và tôi sẽ chọn nó
ricab

1
Có thể muốn thêm câu trả lời của riêng bạn và chọn nó. Tôi chủ yếu chỉ chỉ ra các tài liệu năng khiếu.
Jason Conti

4

BIÊN TẬP: Sau một số thử nghiệm, tôi đã tìm thấy một giải pháp hoàn hảo cho tôi! Nó chỉ liệt kê các gói có phiên bản mới hơn trong kho -backports và không có gì nữa (các giải pháp khác liệt kê các gói bổ sung.

Để liệt kê các bản cập nhật backport có sẵn, hãy chạy lệnh này:

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

Nếu bạn muốn danh sách cũng hiển thị phiên bản hiện tại và mới hơn, hãy chạy lệnh này thay thế:

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

Điều này sẽ hiển thị một cái gì đó như thế này:

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

Nếu bạn không muốn ghi nhớ lệnh này, hãy thêm nó vào ~/.bashrc:

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

Bây giờ bạn chỉ phải viết apt-list-backports!


Câu trả lời gốc

Chỉ cần tìm một cách khác:

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

Điều này sẽ mô phỏng một bản nâng cấp và liệt kê những gói nào sẽ được nâng cấp. Nhưng các nâng cấp cho backport cũng được bao gồm (tôi nghĩ các nâng cấp thông thường cũng được hiển thị).

Bạn cũng có thể thêm tùy chọn -Vđể hiển thị các phiên bản mà các gói sẽ được nâng cấp lên.


Để xem thay đổi của một gói trong backport, sử dụng:

apt-get changelog -t $(lsb_release -sc)-backports PACKAGE_NAME
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.