명령 줄에서 패키지가 메타 패키지인지 확인하는 방법은 무엇입니까?


14

명령 줄에서 apt-get, aptitude 또는 apt-cache를 통해 패키지가 메타 패키지인지 어떻게 알 수 있습니까?

나는 시도했다 :

apt-cache show texlive-full
apt-cache showpkg texlive-full

이 패키지를 메타라고 할 수있는 유일한 방법은 "en-description"필드를 읽는 것입니다.

이 작업을 수행하는 더 자동적 인 방법이 있습니까? 그렇습니다. 예 / 아니오 응답을 제공하거나 적어도 "전용 설명"과 같은 필드가 있습니까?


1
이 질문과 답변이 매우 흥미 롭다는 사실 외에도 왜 이것을 알고 싶습니까?
Joe

1
apt-get으로 물건을 설치하고 메타 패키지 (texlive-full)를 설치하면 원하는 종속성이 설치되지만 메타 패키지를 제거하면 종속성이 그대로 유지됩니다 (apt-get install texlive-full, apt-get purge texlive-full; apt-get 자동 제거). 그런 다음 이것이 메타 패키지 brainstorm.ubuntu.com/idea/17785 의 경우에만 해당된다는 것을 알았습니다 . 반면에 적성은 메타 패키지에서 불필요한 의존성을 제거합니다.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

답변:


7

메타 패키지에 대한 공식적인 정의는 없습니다. 비공식적 인 정의는 메타 패키지가 단지 의존성을 위해서만 설치되도록되어 있고 자체적으로 유용한 파일을 포함하지 않는 것입니다.

메타 패키지를 파일이없는 패키지로 정의 할 수 있습니다. 패키지 데이터베이스에서이를 확인할 수있는 방법이 없습니다. 파일 데이터베이스를 사용하고 패키지에 디렉토리 만 포함되어 있는지 확인할 수 있습니다 (많은 패키지에 디렉토리가 몇 개 포함되어 있음). 사실, 대부분의 metapackages는 몇 파일을 포함 /usr/share/doc/<package name>하십시오 copyright파일, 변경 로그, 때로는 몇 가지 더. 다음은 메타 패키지를 /usr/share/doc/<some directory>하위 디렉토리가 아닌 파일 과 주요 디렉토리 만 포함하는 것으로 메타 패키지를 정의하는 근사치입니다 .

if ! apt-file -F list $package | grep -qvE '^/(usr(/share(/doc(/[^/]*(/[^/]*)?)?)?)?)?$'; then
  echo "$package looks like a metapackage"
fi

또 다른 방법은 찾는 것입니다 패키지 태그debtags. 메타 패키지에 일반적으로 사용되는 몇 가지 태그가 있습니다.

debtags tag ls $package | grep -x -e 'role::metapackage' -e 'role::dummy' -e 'special::meta'

또 다른 방법은 작은 크기의 패키지를 찾는 것입니다. 각 디렉토리는 4kB로 계산되므로 임계 값을 선택할 때 적절하게 계획하십시오 (다시 말하면 근사치 임).

aptitude -F '%I %p' search "~n^$package\$"

반영하면 메타 패키지가 아닌 가상 패키지 를 의미하는지 궁금합니다 . 가상 패키지는 실제로 패키지가 아니라 Provides:필드 에서 사용되는 패키지 이름 입니다. 로 나열 할 수 있습니다 aptitude search '~v'. apt-cache show하나에서 실행 하면 "순전히 가상이므로 패키지 'zcav'에서 버전을 선택할 수 없습니다"가 표시됩니다. 실행 aptitude show은 패키지를 제공하는 패키지를 나열합니다. 가상 패키지를 표시하는 편리한 방법은 다음과 apt-cache같습니다. 가상 패키지가 아닌 패키지의 경우 한 줄을, 가상 패키지의 경우 여러 줄 (각 ​​공급자 당 한 줄)을 인쇄합니다. 단일 공급자가 있어도 패키지가 가상인지 알 수 있습니다 공급자의 이름이 다르기 때문입니다.

apt-cache -n search "^$package\$"

그 방법에 감사드립니다 : 나는 채무에 대해 몰랐습니다! 또한 apt-get으로 메타 패키지를 설치할 때 각 종속성을 개별적으로 수동으로 설치 한 것과 정확히 동일합니다. 즉, 원래 패키지를 제거해도 종속성이 즉시 제거되지는 않지만 일반 패키지의 경우 제거합니다. 설치된 종속성을 제거하십시오. 이것이 사실입니까? 그렇다면 어떻게 apt-get이 차이점을 알 수 있습니까? 이것은 또한 악용 될 수있다 ... (또한 적성이 메타인지 아닌지를 신경 쓰지 않는 것처럼 보인다, 이것이 사실인가?)
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

@cirosantilli 종속성 자동 제거 기능은 메타 패키지와 관련이 없습니다. 패키지를 명시 적으로 요청하지 않으면 자동으로 설치된 것으로 표시되고 패키지에 종속 된 패키지가 설치되어 있지 않으면 자동으로 설치된 것으로 표시된 패키지가 제거되기 때문에 발생합니다. aptitude 대화식 인터페이스 의 명령 apt-get autoremoveaptitude (un)markauto,을 참조하십시오 M.
Gilles 'SO- 악한 중지'

@cirosantilli 당신이 생각하는 것이 메타 패키지가 아닌 가상 패키지인지 궁금합니다. 업데이트 된 답변을 참조하십시오.
Gilles 'SO- 악마 그만'

apt-cache show texlive-full이 일반적인 결과를 보여주기 때문에 가상 패키지에 대해 실제로 알지 못했지만 texlive-full은 가상이 아니라고 생각합니다. 내가 한 후 그럼에도 불구하고 apt-get install texlive-full, apt-get purge texlive-full; apt-get autoremove설치된 모든 종속성을 제거하지 않았다. 나는 이것이 texlive-full이 메타 패키지 였고 이것이 메타 패키지의 정상적인 행동 이었기 때문에 어딘가에 읽었지만 어쩌면 이것이 틀렸을지도 모른다. 반면에 적성은 자동으로 설치된 종속성을 잘 제거하는 것처럼 보였습니다.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

2

당신은 입력을 시도 할 수 있습니다

apt-cache search 'metapackage | meta-package'

긴 목록을 제공하고 grep모든 과학 관련 메타 패키지를 표시하는 데 사용합니다.

apt-cache search 'metapackage | meta-package' | grep -i science

이것은 긴 목록을 반환합니다 ( 여기서 단축 했습니다)

science-astronomy - Debian Science Astronomy packages
science-astronomy-dev - Debian Science Astronomy-dev packages
science-biology - Debian Science Biology packages
science-chemistry - Debian Science Chemistry packages
science-dataacquisition - Debian Science data acquisition packages
science-dataacquisition-dev - Debian Science data acquisition development packages
science-distributedcomputing - Debian Science Distributed Computing packages
science-electronics - Debian Science Electronics packages
science-electrophysiology - Debian Science packages for Electrophysiology
science-engineering - Debian Science Engineering packages
science-engineering-dev - Debian Science Engineering-dev packages
science-geography - Debian Science Geography packages
science-highenergy-physics - Debian Science High Energy Physics packages

KDE모든 KDE메타 패키지 를 찾는 등 과학에 대한 여러 대안을 사용할 수 있습니다 .

이것은 아마도 당신이 할 수있는 최선의 방법 일 것입니다 apt-cache. 그러나 찾고자하는 대부분의 메타 패키지를 신속하게 찾아야합니다. 원하는 모든 것을 찾지 못하면 가장 간단한 방법은의 메타 패키지 섹션을 참조하십시오 Synaptic.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.