데비안: 업그레이드 가능한 모든 패키지의 버전 번호(현재/당시) 및 변경 로그

데비안: 업그레이드 가능한 모든 패키지의 버전 번호(현재/당시) 및 변경 로그

현재 Lenny와 Squeeze가 모두 설치되어 있습니다.

다음 방법을 알고 싶습니다.

  • 업그레이드 가능한 모든 패키지 목록
  • 현재 및 미래의 패키지 번호를 알아보세요
  • 현재/미래 버전 번호 사이의 모든 변경 사항을 소유합니다(ChangeLog).
  • 실제로 아무것도 업그레이드하지 않고

또한 이 정보를 얻기 위해 수퍼유저 권한이 필요하지 않습니다.

이렇게 하면 aptitude update && aptitude upgrade패키지만 표시됩니다. 패키지를 설치할 때는 apt-listchanges설치를 커밋한 후에만 표시됩니다(예, 중단할 수 있다는 것을 알고 있습니다).

어쩌면 아직 모든 패키지를 다운로드하고 싶지 않을 수도 있습니다(할 수 있다많은 경우), 이는 다른 곳에서 ChangeLog를 가져와야 함을 의미합니다(그러나 꼭 필요한 것은 아닙니다. 다운로드하는 것도 작동하지만 수퍼유저 권한이 필요합니다).

고쳐 쓰다

살펴보기 위해 언급된 답변을 제거했습니다 apt-listchanges. 내 질문을 고려할 때 중복되는 것처럼 들리지만 실제로 apt-listchanges단독으로 사용할 수 있다는 것을 깨닫지 못했습니다 . 매뉴얼 페이지에 옵션이 언급되어 있지만 --apt어떤 옵션인지 이해가 되지 않습니다.관로(내 목표를 충족한다면) 구축해야 합니다.

업데이트 2

나는 좋은 결과를 얻을 것이라고 생각합니다 apt-show-versions. 단지 ChangeLog가 누락되었다는 것뿐입니다.

$ apt-show-versions -u
apache2/squeeze upgradeable from 2.2.16-6+squeeze1 to 2.2.16-6+squeeze2
apache2-mpm-worker/squeeze upgradeable from 2.2.16-6+squeeze1 to 2.2.16-6+squeeze2
apache2-utils/squeeze upgradeable from 2.2.16-6+squeeze1 to 2.2.16-6+squeeze2
apache2.2-bin/squeeze upgradeable from 2.2.16-6+squeeze1 to 2.2.16-6+squeeze2
apache2.2-common/squeeze upgradeable from 2.2.16-6+squeeze1 to 2.2.16-6+squeeze2

답변1

다음은 원하는 모든 것을 인쇄하는 초안 bash/zsh 스크립트입니다. 종속성 변경으로 인해 설치된 새 패키지가 아닌 업그레이드 가능한 패키지에만 작동합니다. 보안이나 안정적인 업데이트에는 제대로 작동하지 않습니다. 그리고 만약에http://packages.debian.org/changelogs/최신 버전이 아니며(업데이트 가능한 버전 제외) 모든 변경 로그 항목을 인쇄합니다. 또 다른 문제(또는 원하는 경우 기능)는 각 소스 패키지가 아닌 각 바이너리 패키지에 대한 항목을 인쇄한다는 것입니다. 따라서 중복된 콘텐츠를 얻을 수도 있습니다. 보시다시피 개선의 여지가 많습니다. 설치 가 필요합니다 apt-show-versions.

#!/bin/bash
FLAVOURS=(main contrib non-free)
TEMPFILE=$(mktemp)
trap "rm -f $TEMPFILE; exit" SIGHUP SIGINT SIGTERM

apt-show-versions -u | while read PACKAGE A B FROM C TO ; do
         PACKAGE=${PACKAGE%%/*}
         SOURCEPACKAGE=$(dpkg-query -W -f '${Source}' $PACKAGE)
         SOURCEPACKAGE=${SOURCEPACKAGE%% *}
         SOURCEPACKAGE=${SOURCEPACKAGE:-$PACKAGE}
         PREFIX=${SOURCEPACKAGE:0:1}
         if expr match $SOURCEPACKAGE "lib.*" > /dev/null ; then
            PREFIX=${SOURCEPACKAGE:0:4}
         fi      
         echo Changelog for $PACKAGE from $FROM to $TO
         for i in $FLAVOURS ; do
                if wget -q "http://packages.debian.org/changelogs/pool/$i/$PREFIX/$SOURCEPACKAGE/current/changelog.txt" -O $TEMPFILE ; then
                    dpkg-parsechangelog --since "$FROM" --to "$TO" -l$TEMPFILE | sed -e "1,/Changes:/d"
                    break   
                fi      
         done    
         echo    
   done
rm $TEMPFILE

모든 정보를 자동화된 방식으로 얻을 필요가 없다면 사용자 인터페이스를 사용할 수 있습니다 aptitude. 여기에서 어떤 패키지를 업그레이드할 수 있는지 확인하고 새 항목이 강조 표시된 해당 변경 로그를 얻을 수 있습니다 C.

관련 정보