apt-get을 사용하여 특정 패키지에 대한 모든 종속성을 무시하십시오.


16

이것은 Google이 대답하는 데 도움이되지 않은 매우 구체적인 질문입니다.

와 함께 Ubuntu 13.04를 실행 중입니다 apt 0.9.7.7ubuntu4 for amd64 compiled on Oct 3 2013 15:25:56.

Erlang을 .deb 패키지에서 설치하고 싶지만 모든 종속성을 가져오고 싶지 않습니다. 패키지 자체는 Java 및 wx 라이브러리에 종속되도록 지정하지만 실제로 Java 또는 wxWidgets와 인터페이스하지 않으려는 경우 필요하지 않습니다.

이렇게 Erlang을 설치할 수 있습니다

sudo dpkg -i --force-depends erlang.deb

그러나 apt-get충족되지 않은 종속성으로 인해 나중에 다른 것을 설치하는 데 실패합니다. Erlang 다음에 git을 설치하려면 다음을 얻습니다.

$ sudo apt-get install -y git
Reading package lists...
Building dependency tree...
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
 esl-erlang : Depends: default-jre-headless but it is not going to be installed or
                       java2-runtime-headless or
                       java1-runtime-headless or
                       java2-runtime or
                       java1-runtime
              Depends: libwxbase2.8-0 but it is not going to be installed
              Depends: libwxgtk2.8-0 but it is not going to be installed
              Recommends: erlang-mode but it is not going to be installed
 git : Depends: libcurl3-gnutls (>= 7.16.2-1) but it is not going to be installed
       Depends: perl-modules but it is not going to be installed
       Depends: liberror-perl but it is not going to be installed
       Depends: git-man (> 1:1.7.9.5) but it is not going to be installed
       Depends: git-man (< 1:1.7.9.5-.) but it is not going to be installed
       Recommends: patch
       Recommends: rsync
       Recommends: ssh-client
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

esl-erlang실행하지 않고 패키지를 종료 하는 방법이 apt-get install -f있습니까?

나는 이런 것을 원한다.

sudo apt-get install --ignore-deps-for-package=esl-erlang git

또는 이와 같이 :

sudo apt-cache shut-package-up esl-erlang

아니면 이거:

sudo apt-get download git
sudo dpkg -i --with-deps git.deb

비슷한 질문을 찾았습니다 : https://serverfault.com/questions/250224/how-do-i-get-apt-get-to-ignore-some-dependencies . 몇 가지 답변은 특정 패키지의 종속성을 수정하는 편리한 수동 단계를 제공합니다.

나는 여전히 강력한 자동화 방법을 찾고 있습니다.


당신은 시도 --nodeps( apt-get)이나 --ignore-dependsdpkg?
Mike Koch

답변:


26

나는 bjanssen의 요점을 이해하지만 패키지 관리자가 --force-depends단일 패키지 설치 를 허용하는 것은 우스운 것처럼 보이지만 영원히 의존하고 경고를 멈추는 것은 허용하지 않습니다.

나는 현재 데비안에서 사용 가능한 것보다 약간 높은 libcairo 버전에 의존하는 패키지와 비슷한 문제가있었습니다. 내 목적으로는 여전히 잘 작동합니다. libcairo 업데이트가 적절하게 나타날 때까지 계속 사용하고 있습니다. 소스에서 컴파일하거나 내 자신의 패키지를 만들고 싶지 않습니다.

내가 찾은 해결책 :

  • 편집 /var/lib/dpkg/status,
  • 깨진 종속성이있는 패키지를 찾으십시오.
  • Depends:패키지 불만을 중지 하려면 행을 편집하십시오 .

다음에 패키지가 업데이트 될 때 덮어 쓰일 것이라고 가정하지만 정확히 내가 원하는 것입니다.


2
이것은 잘못된 PPA 종속성을 일시적으로 해결하는 데 필요한 것입니다.
Cas

2

당신이하려고하는 것은 제정신 환경을 유지하려고하는 패키지 관리자의 목적에 위배됩니다. 즉, 작업에 잘못된 도구를 사용하고 있습니다. apt-get을 깰려고하지 마십시오.

문제를 해결하는 올바른 방법은 자신에게 맞는 종속성으로 고유 한 패키지를 작성하는 것입니다. 공식적인 방법이 있으며 (이는 매우 관련이 있습니다 : http://www.debian.org/doc/manuals/maint-guide/index.en.html ) apt-build배포 소스에없는 패키지를 사용하는 빠르고 더러운 방법 은 checkinstall. 모든 농산물 패키지 apt-get이 행복하게 설치됩니다.

마지막으로, esl-erlang 관리자의 지혜에 의문을 제기하여 특정 종속성을 포함시킬 수는 있지만 의도 한 동작으로 인해 패키지 관리자를 잘못 판단 할 수는 없습니다. 이러한 종속성이 잘못되었다고 생각되면 패키지에 버그를 제출해야합니다.


"패키지 관리자의 목적"에 대해 말한 것은 기본적으로 사실이지만 일반화해서는 안됩니다. 하나의 응용 프로그램이 필요합니다 libmng1. 그러나 libmng2AND로 설정된 심볼릭 링크를 설치했습니다 libmng1.so. 위협을 일으켜 아무런 문제도 없었습니다. 그러나 apt-get항상 "불충분 한 의존성"에 대해 불평했다. 그래서이 확실히 이 점에서 적성을 침묵 할 수있는 방법을 찾기 위해 노력하고 좋은 이유. 일 작동 하기 때문에 문제 없는 것에 대해 계속 불평합니다 . 그것은 그들이 아닌 곳에 문제를 본다. 그리고 그것은 성가시다.
syntaxerror

이것은 흥미로운 상황입니다. 비 분배 저장소에서 패키지를 설치했다고 생각하십니까? 이 경우 equivs"침묵"을 찾아보십시오 .
bjanssen

글쎄, 그것은 그렇게 될 수 있습니다. 그러나 사실 그것은 아니 었습니다 ... 나는 아주 똑같은 배포판에서 이전 패키지를 설치 했기 때문에 우분투 용어로 15.x에 있었지만 12.04 LTS에서 libmng1을 설치했습니다.
syntaxerror

0

의 "사용 된 프록시"가 올바른지 확인하십시오 apt.conf(예 : 네트워크에 따라). URL에 접근 할 수 없기 때문에 이러한 문제도 발생합니다.

일반적으로 프록시를 사용하는 경우 /etc/apt/apt.conf다음과 같습니다.

Acquire::ftp::proxy "ftp://<user>:<password>@<ip>:<port>/";
Acquire::http::proxy "http://<user>:<password>@<ip>:<port>/";
Acquire::https::proxy "https://<user>:<password>@<ip>:<port>/";
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.