답변:
이 파일들을 봐
/var/log/installer/initial-status.gz
'-기본 설치
/var/log/dpkg.log
'업데이트 타임 라인 (원하는 것)/var/log/apt/term.log
'- apt
시스템에서 업데이트 된 것들/var/cache/apt/archives/'
한 deb
패키지 를 포함 합니다업데이트 : 정확한 새 설치 목록을 보려면 다음 두 단계를 사용하십시오.
grep -w install /var/log/dpkg.log > full-list.log
/var/log/installer/initial-status.gz
타임 스탬프 너머의 라인을보십시오이러한 패키지를 사용하여 다른 시스템에 새로 설치하려면 '캐시 / apt / 아카이브'경로에서 'deb'파일을 새 설치 경로로 복사하여 다운로드없이 한 번에 설치할 수 있습니다. 다시)).
grins을 위해, 처음 설치된 패키지와 자동으로 설치된 패키지를 제외하고 수동으로 설치된 패키지를 알아내는 하나의 라이너 (여기에서는 명확성을 위해 분할)를 정리했습니다 .
comm -13 \
<(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort) \
<(comm -23 \
<(dpkg-query -W -f='${Package}\n' | sed 1d | sort) \
<(apt-mark showauto | sort) \
)
이것은 안으로 bash
그리고 안으로 작동합니다 zsh
.
libtiff
, libxcb
나는 나 자신을 설치하지 않은, 등. 이 답변 : superuser.com/a/105000/24349 는 설치 시간에 따라 정렬하고 시스템 설치 시간 전에 모든 것을 제거하여이를 처리합니다. 쉘의 대단한 사용!
위의 정보를 바탕으로 수동으로 설치된 패키지를 나열하는 간단한 Python 스크립트를 작성했습니다. 이 링크를 참조하십시오 .
책임을지지 않더라도 자유롭게 사용하십시오. 그러나 피드백과 제안은 언제나 환영합니다.
관련 질문에 대한 답변을 여기 에서 확인하십시오 . 데비안 시스템에 설치된 모든 패키지 목록을 표시하려면 어떻게해야합니까? . 질문에 대한 다른 답변 중 일부에는 그러한 목록을 얻는 것에 대한 좋은 제안이 포함되어 있습니다.
이전 질문도이 질문을 다루므로이 질문은 중복으로 표시되어야하지만 쉽게 찾을 수 있도록이 질문을 독자적으로 세우는 것이 유용 할 수 있습니다.
이것은 해킹 작업이지만 완전히 작동합니다.
먼저 http://releases.ubuntu.com/maverick/ (또는 사용중인 Ubuntu 버전)으로 이동 하여 사용중인 Ubuntu 버전 *.manifest file
과 관련된 버전을 가져옵니다 .
그런 다음 <manifest file>
다운로드 한 파일의 경로와 함께 다음 스크립트 (바꾸기 , 꺾쇠 괄호 및 모두)를 실행하십시오. 파일 > output
끝에 항상 추가 하여 파일 덤프를 만들 수 있습니다 .
diff --suppress-common-lines <(sed 's/ .*//' <manifest file>) <(dpkg --get-selections | sed 's/[ \t].*//') | grep '>' | sed 's/[>] //'
감사합니다 괴짜, 좋은 코드. 나는 그것을 사용했지만 어떻게 작동시키는 지 알아내는 데 시간이 걸렸다. Ubuntu 11.10에서이 작업을 수행 한 방법은 다음과 같습니다. bash 터미널에서 작동합니다.
comm -13 \
<(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort) \
<(comm -23 \
<(dpkg-query -W -f='${Package}\n' | sed 1d | sort) \
<(apt-mark showauto | sort) \
) > user-installed-packages
그런 다음 탭 - 추가 \t
- 그리고를 install
각 줄에 :
sed 's/$/\tinstall/' user-installed-packages >uip
그런 다음 새 컴퓨터에서 :
sudo dpkg --set-selections < uip
패키지를 설치하려면 다음을 수행하십시오.
sudo apt-get dselect-upgrade
이를 수행하는 또 다른 방법은 초기 작업에 따라 설치할 기본 패키지를 결정하는 "작업"을 기반으로 설치된 항목을 확인하는 것입니다.
tasksel --list-tasks
최소한 당신은 가질 것 server
입니다. 그러나 더 많은 것을 선택할 수 있습니다. 설치 한 각 작업에 대해 다음 명령이 설치되어있는 패키지 목록을 얻을 수 있습니다. 설치에서 선택한 작업에 대해 한 줄로 (명확하게하기 위해) 한 줄로 수행합니다.
(tasksel --task-packages server ; \
tasksel --task-packages openssh-server ; \
tasksel --task-packages lamp-server) | sort | uniq
위의 일반적인 접근 방식은 다음과 같습니다.
(for a in $( tasksel --list-tasks | grep "^i" | awk '{ print $2 }' ) ; \
do tasksel --task-packages $a; done) | sort | uniq
이제 apt-cache depends --installed -i --recurse <packagename> | grep -v "^ "
작업에 정의 된 모든 패키지가 사용하는 종속성 목록을 얻는 데 사용하십시오. 이것은 다음과 같이 한 줄로 수행 할 수 있습니다
apt-cache depends --installed -i --recurse \
$(for a in $( tasksel --list-tasks | \
grep "^i" | \
awk '{ print $2 }' ) ; \
do tasksel --task-packages $a; done) | grep -v "^ " | sort | uniq
다음은 시스템에 설치된 모든 패키지 (종속성을 포함하지 않음)를 나열합니다.
dpkg --get-selections | grep "[[:space:]]install" | awk '{print $1}'
이제 comm
명령을 사용하여 두 번째 목록에만있는 것을 찾으십시오 (즉, 두 파일과 첫 번째 파일에있는 것을 무시하십시오)
comm -13 <(apt-cache depends --installed -i --recurse \
$(for a in $( tasksel --list-tasks | \
grep "^i" | \
awk '{ print $2 }' ) ; \
do tasksel --task-packages $a; done) | grep -v "^ " | sort ) \
<( dpkg --get-selections | grep "[[:space:]]install" | \
awk '{print $1}' | sort)