Як я бачу журнал змін для дебетового пакету debian / ubuntu?


19

Я запускаю Ubuntu, і у мене встановлений файл deb. Раніше я робив пакети deb, тому я знаю, що існує список змін debian (debchange). Чи все-таки можна переглянути список змін debian для будь-якого встановленого мною пакету? Припустимо, у мене немає доступу до файлу-джерела дебюту для цього пакету, і у мене немає файлу deb. Я можу встановити додаткові пакети, якщо потрібно.


5
щоб побачити зміни apt-getвстановлених пакетів:apt-get changelog <package>
jfs

@JFSebastian apt-getне має такої команди.
gipi

2
@gipi: apt-get changelog apt | grep -C5 'apt-get changelog'показує, що ця команда введена в apt (0.8.9ubuntu1) natty(2010). Ви можете отримати джерело (зрештою, це відкритий код): запустіть apt-get source aptі знайдіть cmdline/apt-get.ccфайл і подивіться на DoChangelog()функцію (btw, подивіться на DoMoo()функцію).
jfs

дивно, у мене (debian) apt 0.9.12.1, і ця команда недоступна.
gipi

Відповіді:


21

Крім того, якщо deb також знаходиться у сховищі, і ви хочете знати старі версії змін, ви можете використовувати apt-get changelog packageдля читання всього журналу змін. Наприклад для openssl:

apt-get changelog libssl1.0.0

Це, безумовно, відповідна відповідь на 2016 рік як для Debian Jessie, так і для Ubuntu :)
Дмитро БД

Це правильна відповідь.
Teekin

12

apt-listchangesце приємний пакунок, який потрібно мати, але без дебюту вашої найкращої пари, швидше за все, це прочитати журнал змін Debian з /usr/share/doc/somepackage/changelog.Debian.gz .

Створіть функцію оболонки за допомогою:

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

Як згадується в ОП, debchangeце фактично існуючий інструмент у розбірках, що використовуються для створення записів змін. Тому я настійно рекомендую вибрати інше ім’я. Також, $0напевно, не зробить того, чого ви очікуєте. У моєму випадку це завжди буде виконуватися zless /usr/share/doc/bash/changelog.Debian.gz. У вашому випадку замініть bashім'я оболонки або сценарію, з якого ви виконуєте.
Шість

3

Щоб продовжити на Janne Піккарайнен в відповідь , ось це псевдонім , який може бути використаний для читання changelog.Debian.gz для будь-якого даного пакета:

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

Його можна використовувати так:

changelog PACKAGE

Зауважте, однак, що це жахливо хакітське рішення і не рекомендується в більшості обставин. Функція або окремий сценарій - набагато краще рішення.

Ось функція, яка зчитує всі доступні журнали змін для PACKAGE:

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
}

Ось функція, яка друкує список усіх доступних журналів змін для PACKAGE та запитує користувача, щоб вибрати, який з них прочитати:

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
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.