apt가 다른 패키지를 암시적으로 설치하거나 제거하는 이유는 무엇입니까?

apt가 다른 패키지를 암시적으로 설치하거나 제거하는 이유는 무엇입니까?

package X패키지를 설치하는 동안 다른 패키지가 암시적으로 설치되거나 제거되는 경우가 종종 있습니다 .

이것은 매우 짜증나는 일이며, 당신이 알기도 전에 다른 3개의 패키지는 그대로 사라집니다.

Grive2더 명확하게 말하면 오늘은 을 사용 하고 싶으 므로 먼저 설치 cmake하고 싶습니다 .cmake

놀랍게도 실행하면 , 등과 apt install cmake -s같은 다른 패키지가 설치되는 것으로 나타났습니다 php7.0.ettercaprtorrentuget

root@XXXXX_XXXXCE:/home/bob/pythontr# apt install cmake -s
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  coinor-libcbc3 coinor-libcgl1 coinor-libclp1 coinor-libcoinmp1v5 coinor-libcoinutils3v5 
coinor-libosi1v5 erlang-asn1
  erlang-base erlang-crypto erlang-mnesia erlang-public-key erlang-runtime-tools erlang-ssl 
fonts-opensymbol libabw-0.1-1
  libboost-date-time1.61.0 libboost-date-time1.62.0 libboost-filesystem1.62.0 libboost-
iostreams1.62.0
  libboost-locale1.62.0 libcdr-0.1-1 libclang-common-3.7-dev libclc-amdgcn libclc-dev 
libclc-r600 libclucene-contribs1v5
  libcmis-0.5-5v5 libcolamd2 libe-book-0.1-1 libeot0 libepubgen-0.1-1 libetonyek-0.1-1 
libexttextcat-2.0-0
  libexttextcat-data libfreehand-0.1-1 libjs-jquery-form liblangtag-common liblangtag1 
libllvm3.7 libmspub-0.1-1
  libmwaw-0.3-3 libmythes-1.2-0 libodfgen-0.1-1 liborcus-0.13-0 libpagemaker-0.0-0 
libqxp-0.0-0 librevenge-0.0-0 libsctp1
  libstaroffice-0.0-0 libsuitesparseconfig4 libtorrent19 libvisio-0.1-1 libwpd-0.10-10 
libwpg-0.3-3 libwps-0.4-4 libxmlsec1
  libxmlsec1-nss libzmf-0.0-0 lp-solve mesa-opencl-icd ocl-icd-libopencl1 uno-libs3 ure
**Use 'apt autoremove' to remove them.**
The following additional packages will be installed:
  cmake-data dirb erlang-asn1 erlang-base erlang-crypto erlang-mnesia erlang-public-key 
erlang-runtime-tools erlang-ssl
  ettercap-common ettercap-graphical libafflib0v5 libapache2-mod-php7.0 libcppunit-1.14-0 
libcurl4 libncurses6 libncursesw6
  librhash0 libtinfo6 libtorrent20 libxmlrpc-core-c3 osslsigncode php7.0-bz2 php7.0-cli     
php7.0-common php7.0-curl
  php7.0-dev php7.0-gd php7.0-json php7.0-mbstring php7.0-mysql php7.0-opcache php7.0-
readline php7.0-xml php7.0-zip
  rtorrent ruby-ethon uget
Suggested packages:
  cmake-doc ninja-build erlang erlang-manpages erlang-doc erlang-tools erlang-inets
Recommended packages:
  erlang-syntax-tools
The following packages will be REMOVED:
  couchdb erlang-eunit erlang-inets erlang-os-mon erlang-snmp erlang-syntax-tools 
erlang-tools erlang-webtool erlang-xmerl
  libcurl3
The following NEW packages will be installed:
  cmake cmake-data libcppunit-1.14-0 libcurl4 libncurses6 librhash0 libtorrent20
The following packages will be upgraded:
  dirb erlang-asn1 erlang-base erlang-crypto erlang-mnesia erlang-public-key erlang-    
runtime-tools erlang-ssl
  ettercap-common ettercap-graphical libafflib0v5 libapache2-mod-php7.0 libncursesw6     
libtinfo6 libxmlrpc-core-c3
  osslsigncode php7.0-bz2 php7.0-cli php7.0-common php7.0-curl php7.0-dev php7.0-gd 
php7.0-json php7.0-mbstring
  php7.0-mysql php7.0-opcache php7.0-readline php7.0-xml php7.0-zip rtorrent ruby-ethon     
uget

이러한 추가 설치는 cmake.

질문

apt하나의 패키지만 설치하도록 지시하는 방법이 있습니까 cmake?아니요관련되지 않은 다른 패키지를 처리 ​​중이신가요?

[편집하다]

@Stephen Kitt의 요청에 따라
실행하면 apt install -f다음이 반환됩니다.

root@XXXXX_XXXXCE:/home/bob/pythontr# apt install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer  
required:
  coinor-libcbc3 coinor-libcgl1 coinor-libclp1 coinor-libcoinmp1v5
  coinor-libcoinutils3v5 coinor-libosi1v5 fonts-opensymbol libabw-0.1-1
  libboost-date-time1.61.0 libboost-date-time1.62.0 libboost-   
filesystem1.62.0
  libboost-iostreams1.62.0 libboost-locale1.62.0 libcdr-0.1-1
  libclang-common-3.7-dev libclc-amdgcn libclc-dev libclc-r600
  libclucene-contribs1v5 libcmis-0.5-5v5 libcolamd2 libe-book-0.1-1     
libeot0
  libepubgen-0.1-1 libetonyek-0.1-1 libexttextcat-2.0-0 libexttextcat-data
  libfreehand-0.1-1 liblangtag-common liblangtag1 libllvm3.7 libmspub-   
0.1-1
  libmwaw-0.3-3 libmythes-1.2-0 libodfgen-0.1-1 liborcus-0.13-0
  libpagemaker-0.0-0 libqxp-0.0-0 librevenge-0.0-0 libstaroffice-0.0-0
  libsuitesparseconfig4 libvisio-0.1-1 libwpd-0.10-10 libwpg-0.3-3
  libwps-0.4-4 libxmlsec1 libxmlsec1-nss libzmf-0.0-0 lp-solve
  mesa-opencl-icd ocl-icd-libopencl1 uno-libs3 ure
Use 'apt autoremove' to remove them.

[편집하다]

cmakereturn을 실행하여 apt-cache depends cmake종속성을 나열 해 보십시오 .

root@XXXXX_XXXXCE:/home/bob/pythontr# apt-cache depends cmake
cmake
  Depends: cmake-data
  Depends: procps
  Depends: libarchive13
  Depends: libc6
  Depends: libcurl4
  Depends: libexpat1
  Depends: libgcc1
  Depends: libjsoncpp1
  Depends: librhash0
  Depends: libstdc++6
  Depends: libuv1
  Depends: zlib1g
  Recommends: gcc
  Recommends: make
    make-guile
  Suggests: cmake-doc
  Suggests: ninja-build

답변1

일부 다른 패키지는 패키지 권장 사항 또는 설치하도록 선택한 권장 사항으로 인해 종속성으로 가져옵니다. 권장 패키지는 필수는 아니지만 전체 기능을 사용하려면 필요합니다. 권장 패키지와 제안 패키지 간의 관계에 대한 정확한 세부 정보는 다음 항목에 문서화되어 있습니다.데비안 정책

--no-install-recommends권장 패키지를 종속성으로 가져오는 것을 방지하는 데 사용할 수 있습니다 .

권장 또는 권장 패키지를 자동으로 설치하지 않으려면 구성 파일을 만듭니다 /etc/apt/apt.conf.d/90-no-recommends.conf.

APT::Install-Recommends 0;
APT::Install-Suggests 0;

패키지가 자동 종속성으로 자동 설치되고 업그레이드 후 해당 패키지를 종속성으로 끌어온 원본 패키지가 제거되었거나 더 이상 필요하지 않은 경우 나중에 자동 제거되도록 표시할 수 있습니다.

@StephenKitt가 의견에서 지적했듯이 이것이 완전한 대답은 아니라는 점에 유의하십시오. 권장 및 제안 종속성은 관련된 모든 패키지를 설명하지 않습니다. 언급한 패키지를 포함해야 하는 다른 이유가 있습니다.

답변2

일반적으로 이러한 다른 패키지는 어떤 이유로든 사용자의 선택에 의존하는 패키지입니다. 이것은 좋은 일입니다. 각 패키지를 정당화하는 것은 내 대답의 범위를 벗어나지만 누군가가 시간을 들여 종속성 데이터베이스를 구축했으며 일반적으로 잘 작동합니다. 대부분의 설치 프로그램(예: apt)에는 종속성을 무시하거나 처리하지 않는 옵션이 있지만 결과는 예상한 것과 다를 가능성이 높습니다. 적절한 옵션은 --nodeps입니다.

관련 정보