무해한 "dpkg --force-contributes" 패치워크를 허용하도록 apt-get 옵션을 설정하시겠습니까?

무해한 "dpkg --force-contributes" 패치워크를 허용하도록 apt-get 옵션을 설정하시겠습니까?

사소한 충돌 패키지부자와 함께술집, 실행하여 dpkg --force-conflicts -i foo. 그러나 마침내 객체를 업그레이드하여 "apt-get"할 시간입니다.

% apt-get upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
 foo : Conflicts: bar but 0.2-1 is installed
E: Unmet dependencies. Try using -f.

할 수 있는적절한(거의 고정된) 갈등을 용인하고 확대하도록 조정/강제받고 있습니까?

(빠른 존재 증명: 제거부자을 누른 다음 업그레이드하고 다시 설치하세요.부자이전처럼. 그러므로 그것은문제는 가능하다면 가장 덜 번거로운 메커니즘을 찾는 것입니다. )


그러나 예를 들어 질문은 다음과 같습니다.아니요두 개 정도특별한가방.

몇 년 동안암소 비슷한 일종의 영양평행선누군가와 사소한 갈등을 겪었다모르투르; 각각 제공됨/usr/bin/병렬. 포장 백강제로 공존할 수 있습니다.

# assume 'moreutils' is already installed, and 'parallel' is in
# apt's cache directory.
dpkg --force-conflicts -i /var/cache/apt/archives/parallel_20141022+ds1-1_all.deb

전송이 생성되고 이름이 변경됩니다.더 많은 유틸리티버전은/usr/bin/parallel.moreutils. 두 프로그램 모두 사용자가 업그레이드할 때까지 작동합니다.

나는 시도했다-영형선택, 그러나 그것은 평화를 가져오지 못했습니다.

apt-get -o Dpkg::Options::="--force-conflicts" install parallel moreutils

가능한-영형수백 가지 옵션이 있지만…

답변1

OP는 Gilles의 답변에 대한 의견에서 명령 목록(패키지의 관련 메타데이터 변경을 위한)을 요청했기 때문에 다음과 같습니다.

# download .deb
apt download parallel
# alternatively: aptitude download parallel

# unpack
dpkg-deb -R parallel_*.deb tmp/

# make changes to the package metadata
sed -i \
  -e '/^Version:/s/$/~nomoreutconfl/' \
  -e '/^Conflicts: moreutils/d' \
  tmp/DEBIAN/control

# pack anew
dpkg-deb -b tmp parallel_custom.deb

# install
dpkg -i parallel_custom.deb

이것은 moreutils내 설치의 경우처럼 충돌하는 줄이 하나의 항목으로만 존재하고 버전 제한이 없다고 가정합니다. 그렇지 않은 경우 '/^Conflicts:/s/\(, \)\?moreutils\( [^,]\+\)\?//'두 번째 스크립트 로 사용하면 sed해당 줄의 관련 부분만 제거하고 버전 제한을 지원합니다.

설치한 패키지는 저장소의 최신 버전으로 덮어쓰여지지 않으며, 패키지를 최신 상태로 유지하려면 GNU 병렬 패키지를 업데이트할 때마다 이 프로세스를 수동으로 반복해야 합니다.

답변2

패키지 간의 충돌은 본질적으로 유해합니다. dpkg충돌하는 패키지를 강제로 설치해도 문제가 발생하지 않을 수 있습니다.다른충돌을 선언할 타당한 이유가 없는데도 패키지가 여전히 충돌하는 경우 피해를 입힐 수 있습니다. APT는 패키지를 설치할 때 충돌을 해결하려고 노력하며 무시할 충돌 목록이 없습니다. 다른 옵션을 전달함으로써 이 문제를 해결할 수 없습니다 dpkg. 문제는 이러한 충돌로 인해 APT 자체 작업이 불가능해진다는 것입니다.

APT 충돌 상황에서 벗어나기 위한 임시 상태가 아닌 이상 충돌하는 패키지를 설치하지 마십시오. dpkg갈등 상황에서 벗어나기 위해 열심히 노력할 때까지 APT를 실행하지 마십시오.

충돌하는 패키지를 설치하는 경우 먼저 해당 패키지를 수정하여 선언을 제거 Conflict:하고 충돌하는 선언을 야기한 문제도 해결하십시오.

관련 정보