
소프트웨어 센터에는 설치된 패키지의 매우 짧은 목록이 표시됩니다. 텍스트 파일로 가져오는 방법은 무엇입니까?
나는 시도했다:
> dpkg --get-selections|wc -l
3265
> aptitude search '~i!~M'|wc -l
1181
> dpkg -l | grep ^ii | sed 's_ _\t_g' | cut -f 2|wc -l
3076
> dpkg --get-selections | grep -v deinstall|wc -l
3076
> apt-mark showmanual|wc -l
1181
나는 수천 개가 아닌 수십 개의 패키지를 설치했다는 것을 알고 있습니다. 검토하려면 종속성 없이 선택한 패키지가 목록에 정확히 필요합니다.
업데이트
@kos 덕분에 마침내 해당 명령으로 목록을 얻었습니다.
> zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline: apt-get install \K.*' | tr ' ' '\n' | grep -v '\-\-reinstall'|grep -v '\-\-force-yes'|grep -v '\-y'|grep -v '\-f'|sort|uniq wc -l
103
답변1
이것은 질문에 정확하게 대답하지 않습니다. 오히려 Ubiquity에서 실행한 명령을 제외하고 apt-get install
실행한 모든 명령 목록을 얻기 위해 목록을 추가로 구문 분석하는 방법에 대한 몇 가지 조언과 함께 apt-get install
실행한 모든 명령을 나열하는 명령을 제공합니다. 이 작업에 대한 완벽한 솔루션이 존재하지 않는 것 같기 때문입니다.
zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline:(?= apt-get)(?=.* install ) \K.*'
zcat /var/log/apt/history.log.*.gz
apt
: 에 있는 모든 압축된 로그의 압축을 풀고/var/log/apt
이를 연결한 후 에 인쇄합니다stdout
.cat - /var/log/apt/history.log
:/var/log/apt/history.log
에 추가하고 인쇄합니다stdout
.grep -Po '^Commandline:(?= apt-get)(?=.* install ) \K.*'
: 선행 및 후행 공백이Commandline: apt-get
있는 포함 으로 시작하는 줄만 선택 하고 선택한 각 줄의 나머지 부분을 에 인쇄합니다 .install
stdout
그러면 실행한 모든 명령의 목록이 출력됩니다 apt-get install
. 원하지 않는 유일한 출력은 패키지 를 언급하는 apt-get
-non- 명령일 수 있지만 해당 패키지는 (아직?) 적어도 기본 저장소에는 존재하지 않습니다.install
install
메모:내 설치(Ubuntu 15.04 64비트)에서 나열된 처음 4개의 명령은 설치 중에 Ubiquity에서 실행되는 명령입니다. 이를 제외하려면 출력을 다음으로 파이프할 수 있습니다 sed
.
sed '1,4d'
그래서 결승전을근사치를 내다Ubuntu 15.04 64비트에 대한 명령은 다음과 같습니다.
zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline:(?= apt-get)(?=.* install ) \K.*' | sed '1,4d'
답변2
apt-mark 쇼 매뉴얼
종속성 없이 수동으로 설치된 모든 패키지 목록을 제공합니다. 주목해야 할 중요한 점은 Ubuntu 설정 중에 설치된 패키지도 표시된다는 것입니다.
출력을 파일에 쓰려면 다음을 수행하십시오.
apt-mark 쇼 매뉴얼> 일부 파일
실제로 이 명령을 사용하는 등 다른 방법도 많이 있습니다.
comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)
위의 작업이 어떻게 작동하는지 전혀 모르지만;)
설치된 패키지를 날짜별로 보려면:
날짜 사용으로 설치된 패키지 사용 cat /var/log/dpkg.log | grep "\ install\ > somefile"
을 사용하여 설치된 패키지 - 아마도 이것이 당신이 찾고 있는 것일 것입니다.dpkg
ls -l /var/log/dpkg* > somefile
dpkg를 사용하여 설치된 패키지를 보려면:
이 파일에는 위의 정보가 포함되어 있습니다./var/log/dpkg.log
답변3
이것은 실제로 보이는 것보다 더 복잡하며 Ask Ubuntu에는 비슷한 질문이 꽤 많이 있습니다.
/var/log/apt/history.log
해당 로그의 이전 gzip 버전을 살펴보면 apt-get install
명령으로 설치된 모든 항목이 해당 명령으로 설치된 것으로 나열되어 있음 을 발견했습니다 .
그래서:
grep "apt-get install" /var/log/apt/history.log
현재 적절한 기록 로그가 포함되는 기간 동안 모든 항목을 표시합니다. gunzip
모든 정보를 통합하려면 이전 로그를 수집하고 이를 수집해야 합니다 . grep 명령은 모두 텍스트 파일로 리디렉션되어 멋진 목록을 제공할 수 있습니다.
apt-get install
이는 설치 시 소프트웨어 센터를 사용하는 경우에만 유용할 수 있습니다 . 소프트웨어 센터가 프런트 엔드라는 것은 알고 있지만 apt
해당 명령을 명시적으로 사용하는지 확실하지 않습니다.
답변4
이 명령은 수동으로 설치된 패키지 목록과 "자동으로 설치된" 역방향 종속성이 제거된 패키지 목록을 제공합니다(예를 들어 ubuntu-server 메타패키지를 제거하면 해당 종속성은 더 이상 자동으로 표시되지 않으며 이제 이 목록에 포함됩니다):
apt list --installed | grep -v automatic
즉, 위 목록은 역방향 종속성이 없거나 수동으로 설치된 것으로 표시된 모든 패키지를 반환합니다.