Làm cách nào để xem thay đổi cho gói gỡ lỗi debian / ubfox?


19

Tôi đang chạy Ubuntu và tôi đã cài đặt tệp deb. Tôi đã thực hiện các gói deb trước đây, vì vậy tôi biết có một thay đổi debian (debchange). Có cách nào để xem thay đổi debian cho bất kỳ gói nào mà tôi đã cài đặt không? Giả sử tôi không có quyền truy cập vào tệp nguồn deb cho gói này và tôi không có sẵn tệp deb. Tôi có thể cài đặt thêm gói nếu cần.


5
để xem các thay đổi cho apt-getcác gói đã cài đặt:apt-get changelog <package>
jfs

@JFSebastian apt-getkhông có lệnh như vậy.
gipi

2
@gipi: apt-get changelog apt | grep -C5 'apt-get changelog'cho thấy lệnh này được giới thiệu vào apt (0.8.9ubuntu1) nattynăm 2010. Bạn có thể lấy nguồn (tất cả là nguồn mở): chạy apt-get source aptvà tìm cmdline/apt-get.cctệp và xem DoChangelog()hàm (btw, xem DoMoo()hàm).
jfs

lạ, tôi có (debian) apt 0.9.12.1 và lệnh này không có sẵn.
gipi

Câu trả lời:


21

Ngoài ra, nếu deb cũng nằm trong kho lưu trữ và bạn muốn biết thay đổi phiên bản cũ hơn, bạn có thể sử dụng apt-get changelog packageđể đọc tất cả các thay đổi. Ví dụ cho openssl:

apt-get changelog libssl1.0.0

Đây chắc chắn là câu trả lời có liên quan cho năm 2016 trong cả Debian Jessie và Ubuntu :)
Dmitri DB

Đây là câu trả lời chính xác.
Teekin

12

apt-listchangeslà một gói tốt để có xung quanh, nhưng không có tệp deb xung quanh đặt cược tốt nhất của bạn có lẽ là đọc thay đổi Debian từ /usr/share/doc/somepackage/changelog.Debian.gz .

Tạo một hàm shell với:

function debchanglog () {
  zless "/usr/share/doc/$1/changelog.Debian.gz"
}

Như OP đã ám chỉ, debchangethực sự là một công cụ hiện có trong các bản mô tả được sử dụng để tạo các mục thay đổi. Vì vậy, tôi khuyên bạn nên chọn một tên khác. Ngoài ra, $0có thể sẽ không làm những gì bạn mong đợi. Trong trường hợp của tôi, nó sẽ luôn luôn thực thi zless /usr/share/doc/bash/changelog.Debian.gz. Trong trường hợp của bạn, thay thế bashbằng tên của shell hoặc script bạn đang thực thi nó.
Sáu

3

Để mở rộng câu trả lời của Janne Pikkarainen , đây là một bí danh có thể được sử dụng để đọc changelog.Debian.gz cho bất kỳ gói nào:

alias changelog="xargs -I% -- zless /usr/share/doc/%/changelog.Debian.gz <<<"

Nó có thể được sử dụng như vậy:

changelog PACKAGE

Tuy nhiên, xin lưu ý rằng đây là một giải pháp hackish khủng khiếp và không được khuyến nghị trong hầu hết các trường hợp. Một hàm hoặc tập lệnh độc lập là một giải pháp tốt hơn nhiều.

Đây là một chức năng đọc tất cả các thay đổi có sẵn cho GÓI:

changelog(){
    if (( $# != 1 )); then
        echo "Usage: ${FUNCNAME[0]} PACKAGE"
        return 1
    fi

    find -L "/usr/share/doc/$1" -type f -name 'changelog*.gz' -exec zless {} \; 2>/dev/null
}

Đây là một chức năng in một danh sách tất cả các thay đổi có sẵn cho GÓI và truy vấn người dùng để chọn cái nào sẽ đọc:

changelog(){
    if (( $# != 1 )); then
        echo "Usage: ${FUNCNAME[0]} PACKAGE"
        return 1
    fi

    local changelog changelogs

    readarray -t changelogs < <(find -L "/usr/share/doc/$1" -type f -name 'changelog*.gz' 2>/dev/null)

    if (( ${#changelogs[@]} == 0 )); then
        return 0
    elif (( ${#changelogs[@]} == 1 )); then
        zless "${changelogs[0]}"
        return $?
    fi

    select changelog in "${changelogs[@]}" EXIT; do
        case $changelog in
            '')
                echo "ERROR: Invalid selection" >&2
                continue
                ;;
            EXIT)
                return 0
                ;;
            *)
                zless "$changelog"
                return $?
                ;;
        esac            
    done
}
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.