설치된 패키지 세트를 재현하는 데 필요한 최소한의 데비안 패키지 세트를 어떻게 나열 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/2273836

  •  20-09-2019
  •  | 
  •  

문제

첫 번째에 설치된 패키지를 복제하기 위해 두 번째 기계에 설치 해야하는 패키지 목록을 생성하기 위해 DPKG, APT-GET 또는 APTIDET를 얻는 방법이 있습니까?

즉, 일반 우분투 서버를 설치 한 경우 설치 시간에 SSHD 옵션을 선택한 다음 빌드 필수 정보를 설치 한 경우 출력이 다음과 같은 것을 볼 것으로 예상됩니다.

#ubuntu 9.10 server
openssh-sshd
build-essential

내가 볼 수있는 한, 사용 가능한 모든 포장 도구는 상자에 패키지의 장점 목록을 생성합니다. SSHD 및 Build-Estential을 설치할 때 설치 될 예정이므로 SSHD 및 Build-Estential이 뽑은 OpenSsh Libs, LD, GCC 및 기타 모든 패키지에 관심이 없습니다.

다른 컴퓨터에서 현재 패키지 세트를 재현하기 위해 설치 해야하는 패키지 목록 만보고 싶습니다.

이게 가능해?

도움이 되었습니까?

해결책

deborphan, 일종의. 시스템의 모든 패키지 목록을 작성하고, 무엇에 의존하는지 파악하고 의존성이없는 패키지를 인쇄합니다. 기본적으로 라이브러리 만 인쇄합니다 (다른 패키지에서 설치하고 더 이상 필요하지 않은 라이브러리를 쉽게 찾을 수 있으므로 이름이 있습니다). 주로 원하는 것을 수행 할 수있는 옵션이 있습니다. 나는 그것을처럼 달린다 :

deborphan -anp required --no-show-section

-a 모든 패키지를 지정합니다 (라이브러리뿐만 아니라)
-n "제안"또는 "권장"종속성 검사를 무시합니다 (예 : 단지 "의존")
-p required 우선 순위에도 불구하고 모든 패키지를 나열합니다
--no-show-section 데비안의 어느 부분이 있는지를 나타내지 않고 목록을 작성하는 데 유용한 멋진 형식 기능 만 표시합니다.

일부 패키지에는 원형 의존성이 있기 때문에 패키지를 놓칠 것입니다. 그러나 그것들은 상당히 드문 경향이 있으므로 충분히 가까워 질 수 있습니다.

다른 팁

Dannysauer가 게시 한 코드는 시작입니다. 종속성이 포함 된 패키지 목록이 있으면 사용할 수 있습니다. apt-rdepends 특정 패키지의 종속성을 찾으려면 (참조 이 페이지 예를 들어 사용법 및 출력).

절차 개요

  1. Dannysauer의 코드가 반환 한 패키지 목록을 반복
  2. 부르다 apt-rdepends 각각에
  3. 출력에 표시되는 목록에서 패키지 삭제 apt-rdepends

따라서 자동 의존성이 아닌 명시 적으로 설치된 패키지 목록 (예 : Ubuntu-Desktop 및 OpenSsh)을 원하십니까? 나는 긍정적이지는 않지만 그게 뭐야 dpkg --get-selections 하다. 그래서 당신은 할 수 있습니다

dpkg --get-selections > file

그런 다음 다른 컴퓨터에서 동일한 "파일"을 사용하고 실행하십시오.

dpkg --set-selections  < file
apt-get dselect-upgrade

난 아니에요 절대적으로 긍정적입니다 그러나 이러한 명령은 수동으로 선택한 패키지를 수행하고 있으며 현재 데비안 기반 시스템에서 멀어지면서 확인합니다. :)

이건 어때 :

#!/bin/bash

packages=$(dpkg --get-selections | grep '[[:space:]]install$' | awk '{print $1}')

for pkg in $packages
do
    nr_lines=$(apt-cache -i rdepends $pkg | wc -l )
    if [ "$nr_lines" = "2" ]
    then
        echo $pkg
    fi
done

잘 작동합니까? 어떻게 든 향상 될 수 있습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top