Bir debian / ubuntu deb paketi için değişiklik günlüğünü nasıl görebilirim?


19

Ubuntu çalıştırıyorum ve yüklü bir deb dosyası var. Daha önce deb paketleri yaptım, bu yüzden debian changelog (debchange) olduğunu biliyorum. Yüklediğim herhangi bir paket için debian changelog'u görmeye yine de var mı? Bu paket için deb kaynak dosyasına erişimim olmadığını ve deb dosyasının mevcut olmadığını varsayalım. Gerekirse ekstra paketler yükleyebilirim.


5
apt-getpaketlerdeki değişiklikleri görmek için :apt-get changelog <package>
jfs

@JFSebastian'ın apt-getböyle bir komutu yok.
gipi

2
@gipi: apt-get changelog apt | grep -C5 'apt-get changelog'bu komutun apt (0.8.9ubuntu1) natty(2010) ' da tanıtıldığını gösterir . Kaynak alabilirsiniz (sonuçta açık kaynaktır): dosyayı çalıştırın apt-get source aptve işleve bakın (btw, işleve bakın). cmdline/apt-get.ccDoChangelog()DoMoo()
jfs

tuhaf, 0.9.12.1 (debian) apt var ve bu komut kullanılamıyor.
gipi

Yanıtlar:


21

Alternatif olarak, hata da depodaysa ve eski sürümleri changelog'unu bilmek istiyorsanız, apt-get changelog packagetüm changelog'ları okumak için kullanabilirsiniz . Örneğin openssl için:

apt-get changelog libssl1.0.0

Bu kesinlikle Debian Jessie ve Ubuntu'da 2016 için ilgili cevap :)
Dmitri DB

Bu doğru cevap.
Teekin

12

apt-listchangesetrafında olması güzel bir paket, ama en iyi bahis etrafında bir deb dosyası olmadan büyük olasılıkla /usr/share/doc/somepackage/changelog.Debian.gz Debian changelog okumaktır .

Şununla bir kabuk işlevi oluşturun:

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

OP'nin belirttiği gibi debchange, aslında changelog girişleri oluşturmak için kullanılan devscripts'te mevcut bir araçtır . Bu yüzden başka bir isim seçmenizi şiddetle tavsiye ederim. Ayrıca, muhtemelen beklediğiniz şeyi yapmayacak. Benim durumumda, her zaman yürütülür . Sizin durumunuzda, yürüttüğünüz kabuğun veya komut dosyasının adıyla değiştirin . $0zless /usr/share/doc/bash/changelog.Debian.gzbash
Altı

3

Janne Pikkarainen'ın cevabını genişletmek için , verilen herhangi bir paket için changelog.Debian.gz dosyasını okumak için kullanılabilecek bir takma ad:

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

Şu şekilde kullanılabilir:

changelog PACKAGE

Bununla birlikte, bunun korkunç bir hackish çözümü olduğunu ve çoğu durumda önerilmediğini lütfen unutmayın. Bir işlev veya bağımsız komut dosyası çok daha iyi bir çözümdür.

PAKET için mevcut tüm değişiklik günlüklerini okuyan bir fonksiyon:

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
}

PAKET için mevcut tüm değişiklik günlüklerinin bir listesini basan ve kullanıcıyı hangisini okuyacağını seçmesi için sorgulayan bir fonksiyon:

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
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.