나는 Debian 시스템을 새로운 주요 버전으로 업데이트하고 있는데, Debian은 Linux 배포판 중 가장 큰 소프트웨어 저장소 중 하나로 알려져 있기 때문에 마지막 버전 이후에 어떤 패키지가 추가되었는지 알고 싶습니다. 현재 저는 Debian 10 "Buster"에서 Debian 11 "Bullseye"로 업데이트하고 있습니다.
이러한 목록은 데비안 프로젝트 직원이 관리합니다. APT 쿼리를 사용하여 목록을 작성하는 것이 또 어떻게 가능합니까?
분명히 버전 업데이트만 볼 수 있는 패키지는 계산되지 않습니다. 어떤 패키지가 제거되었는지 확인하는 것도 흥미로울 것입니다.
답변1
apt
개별적으로 말씀드릴 수는 없을 것 같지만 aptitude
그렇습니다. 아직 설치하지 않았다면 실행해 보세요앞으로귀하의 업데이트. 다음과 같은 화면이 표시됩니다.
Actions Undo Package Resolver Search Options Views Help
C-T: Menu ?: Help q: Quit u: Update g: Preview/Download/Install/Remove Pkgs
aptitude 0.8.11 @ XXX
--- Upgradable Packages (62)
--- New Packages (2778)
--- Installed Packages (6452)
--- Not Installed Packages (202276)
--- Obsolete and Locally Created Packages (51)
--- Virtual Packages (84017)
--- Tasks (217)
관심을 가질 만한 두 섹션은 "새 패키지"(모든 새 패키지 나열 aptitude
)와 "오래되고 로컬로 생성된 패키지"(저장소에서 더 이상 사용할 수 없는 설치된 패키지 나열) 소프트웨어 패키지입니다. 새 패키지 목록을 지우려면 f및 키를 누르세요 Enter. "새 패키지" 섹션이 사라집니다.
이제 저장소를 새로운 주요 버전으로 업데이트하고 aptitude
다시 실행하십시오. 새 패키지가 표시되거나 구성에서 저장소의 이전 버전을 완전히 제거한 경우 사용되지 않는 패키지가 표시됩니다. 섹션의 내용을 보려면 화살표 키를 사용하여 해당 섹션으로 스크롤하고 을 눌러 모든 하위 섹션을 한 번에 확장 Enter할 수도 있습니다 .[
업데이트했거나 업그레이드한 경우에도 이 정보를 얻을 수 있습니다. 이전 버전을 가리키도록 소스 코드를 편집하고 실행한 apt update
다음 aptitude forget-new
새 버전을 가리키도록 소스 코드를 다시 편집하고 apt update
다시 실행합니다.
다음을 통해 릴리스(반드시 특정 버전일 필요는 없음)로 출시되는 패키지를 추적할 수 있습니다.소프트웨어 패키지에 대한 RSS 피드떠나다새 대기열.또한 패키지 제거 추적(전체 배포판의 경우 다시 특정 버전이 아닙니다).
답변2
모든 패키지 목록이 있습니다 ...
"buster"의 모든 데비안 패키지 https://packages.debian.org/buster/→ https://packages.debian.org/buster/allpackages?format=txt.gz→ 89,969라인(패키지)
"bullseye"의 모든 데비안 패키지 https://packages.debian.org/bullseye/→ https://packages.debian.org/bullseye/allpackages?format=txt.gz→ 96,201라인(패키지)
데비안 11에는 6,332개의 패키지가 추가된 것으로 보이지만 일부 오래된 패키지가 제거되어 개수가 정확하지 않습니다.
텍스트 목록을 저장합니다. 더 쉽게 비교하려면 괄호 안에 표시된 패키지 버전을 제거하세요.
sed -e 's/([^()]*)//g' 10-buster > all-10
sed -e 's/([^()]*)//g' 11-bullseye > all-11
## run diff, and "grep the news" = +lines
diff -u all-10 all-11 | grep -E "^\+" > news-in-11.txt
## remove patterns "....modules-5.10.0-7 ..."
sed -i.bak '/modules-5.10.0-7/d' ./copy.of_news-in-11.txt
새 패키지를 구성할 때의 문제는 많은 패키지의 설명 텍스트도 변경되었다는 것입니다.
답변3
내 목표는 내 시스템을 변경하기 전에 새 데비안 릴리스에서 어떤 일이 일어나고 있는지 이해하는 것입니다. 또한 데비안 버전이 너무 많이 바뀌기 때문에 목록을 가능한 한 작게 유지하고 싶었습니다.
게시된 다른 답변은 훌륭하지만 그 답변을 빌려 다음 명령을 생각해냈습니다. 데비안 웹사이트에서 다른 버전에 속한 패키지 이름 목록을 가져와 버전 번호, 공백 등 불필요한 정보를 최대한 제거하고 를 사용합니다 diff
. 따라서 한 버전에는 존재하지만 다른 버전에는 존재하지 않는 모든 패키지 이름이 표시되고 색상이 지정됩니다. 그 반대.
이것이 내가 생각해낸 것입니다:
diff --color=auto --side-by-side --width=$COLUMNS \
--suppress-common-lines --ignore-case --ignore-all-space \
<(curl https://packages.debian.org/buster/allpackages?format=txt.gz | zcat | sed -E 's/\([^)]+\)/-/') \
<(curl https://packages.debian.org/bullseye/allpackages?format=txt.gz | zcat | sed -E 's/\([^)]+\)/-/')
더 나은 GUI 환경을 위해 diff
이 명령을 meld
.
일부 패키지에는 이름에 버전 번호가 있으므로 정규식을 사용하여 제거하기가 어렵습니다 linux-image-4.19.0-12-amd64
. 예를 들어 더 읽기 쉬운 출력이 될 수 있는 수정 사항을 공유하십시오.