데비안: apt가 무엇을 하는지에 대한 설명이 필요합니다

데비안: apt가 무엇을 하는지에 대한 설명이 필요합니다

나는 jessie debian 시스템(더 정확하게 말하면 devuan)을 사용하고 있습니다. 이제 jessie-backports 및 jessie-security 버전에서 패키지를 가져오려고 합니다.

그러나 나는 apt가 무엇을 하고 있는지 이해하지 못합니다.

이것이 제가 정말로 알아내려고 하는 것입니다. 여기서 나에게 말하려는 적절한 것은 무엇입니까?

나는 ASCII로 강제 업그레이드하는 방법을 알고 있습니다. 나는 또한 이제 내 시스템이 jessie-backports를 사용하도록 관리했습니다. 아래 설명에서 apt가 나에게 무엇을 말하려고 하는지 아직도 알 수 없습니다.

나는 apt에 문제가 무엇인지 알아내려고 노력하고 있습니다. 왜냐하면 앞으로도 같은 문제가 나타날 것이라고 확신하기 때문입니다(실제로 다른 시스템에서 이 문제를 겪었습니다). 그러니 나보다 더 잘 아는 사람이 있다면, 무슨 일이 일어나는지 설명해주세요...

나는 gcc로 시작한다:

# apt-cache policy libgcc1 gcc-4.9-base
libgcc1:
  Installed: 1:4.9.2-10
  Candidate: 1:4.9.2-10+deb8u1
  Version table:
     1:6.3.0-18+deb9u1 0
        500 http://de.mirror.devuan.org/merged/ ascii/main amd64 Packages
     1:4.9.2-10+deb8u1 0
        991 http://de.mirror.devuan.org/merged/ jessie-security/main amd64 Packages
 *** 1:4.9.2-10 0
        600 http://de.mirror.devuan.org/merged/ jessie/main amd64 Packages
        100 /var/lib/dpkg/status
gcc-4.9-base:
  Installed: 4.9.2-10
  Candidate: 4.9.2-10+deb8u1
  Version table:
     4.9.2-10+deb8u1 0
        991 http://de.mirror.devuan.org/merged/ jessie-security/main amd64 Packages
 *** 4.9.2-10 0
        600 http://de.mirror.devuan.org/merged/ jessie/main amd64 Packages
        100 /var/lib/dpkg/status

보시다시피 일부가 고정되어 있습니다. 내가 이해한 바로는 "991"은 이 패키지가 새 것인 한 이 패키지를 사용한다는 뜻이라고 생각합니다. 내 완전한 고정 구성은 다음과 같습니다.

/etc/apt/preferences.d# cat *

Package: *
Pin: release a=jessie-backports
Pin-Priority: 991

Package: *
Pin: release a=jessie-security
Pin-Priority: 991

Package: *
Pin: release a=stable
Pin-Priority: 600

Package: *
Pin: release a=ascii
Pin-Priority: 550

Package: *
Pin: release a=jessie-updates
Pin-Priority: 560

또한 apt가 이제 "jessie-security"에서 약간 더 새로운 패키지로 전환됨을 나타내는 "candidate:" 줄을 연결합니다.

첫 번째 놀라움은 다음과 같습니다.

# apt-get install -s gcc-4.9-base
The following packages have unmet dependencies:
 libgcc1 : Depends: gcc-4.9-base (= 4.9.2-10) but 4.9.2-10+deb8u1 is to be installed

위와 같이 apt를 수정하면 jessie-security에서 libgcc1을 자동으로 가져와 위의 충족되지 않은 종속성을 해결할 것이라고 생각합니다.

어떻게 되어가나요?

다음 질문:

# apt-get install -s libgcc1 gcc-4.9-base
The following packages were automatically installed and are no longer required:
  antiword crda cups-pk-helper eclipse-cdt-jni eclipse-platform-data
  espeak-data fastjar firebird2.5-common firebird2.5-common-doc
  fonts-freefont-ttf fonts-opensymbol gir1.2-atk-1.0 gir1.2-atspi-2.0
  gir1.2-freedesktop gir1.2-gdkpixbuf-2.0 gir1.2-glib-2.0
...

뭐하세요?

이것은 확실히 사실이 아닙니다. 분명히 나는 ​​여기서 뭔가를 전혀 이해하지 못합니다. 더 나쁜:

The following extra packages will be installed:
  cpp-4.9 gettext-base lib32gcc1 lib32stdc++6 libatomic1 libegl1-mesa-drivers
  libgfortran3 libgomp1 libitm1 libobjc4 libosgi-compendium-java libquadmath0
  libsoxr0
Suggested packages:
  gcc-4.9-locales libosgi-compendium-java-doc
The following packages will be REMOVED:
  adwaita-icon-theme ant ant-optional apt apt-file apt-listchanges
  apt-show-versions apt-transport-https apt-utils aptitude aspectj aspell
  aspell-de aspell-en astyle build-essential ca-certificates-java chromium
  claws-mail claws-mail-i18n claws-mail-pdf-viewer claws-mail-pgpinline
...

따라서 이 "apt-get install" 명령은 내 시스템의 절반을 삭제합니다.

여기서 무슨 일이 일어나고 있는지 전혀 모르겠습니다 ...

누군가 이것을 설명할 수 있나요?

편집: 누군가 혼합 버전을 사용하면 안 된다고 언급했습니다. 나는 이것이 내 문제와 관련이 없다고 생각합니다. 하지만 한 가지는 확실합니다. 모든 ASCII 소스를 제거하고 모든 ASCII 관련 수정 사항을 제거했으며 가지고 있던 여러 패키지를 ASCII에서 JESSIE로 다시 다운그레이드했습니다. 이 모든 것이 한 가지를 바꾸지는 않습니다. 내가 실행하면

apt-get install -s libgcc1 gcc-4.9-base

apt는 내 시스템의 절반을 삭제한다고 보고합니다.

왜?

그리고 질문의 첫 번째 부분: apt를 사용하면 libgcc1에 대한 종속성이 자동으로 해결되지 않는 이유는 무엇입니까?

apt-get install -s gcc-4.9-base

답변1

혼합된 소스 목록이 있습니다: Jessie와 ascii(확장).

파일에서 ASCII를 제거하세요.sources.list

파일에서 다음 줄을 제거합니다 preferences.

Package: *
Pin: release a=ascii
Pin-Priority: 550

달리기:

apt-get update
apt-get dist-upgrade

무엇인가요충족되지 않은 종속성?

패키지 설치 중에 특정 종속성이 충족되지 않으면 설치가 실패합니다. 이는 v= 6.3.0-18+deb9u1의 정확한 버전 libgcc1 (1:6.3.0-18+deb9u1)에 따라 다릅니다 . gcc-6-base현재 설치된 버전은6.3.0-18

충족되지 않은 종속성을 해결하는 방법은 무엇입니까?

귀하의 경우, 이전 안정 버전에 핀 우선순위를 연결하면 1001패키지가 jessie로 업그레이드/다운그레이드됩니다.

Package: *
Pin: release a=jessie-security
Pin-Priority: 1001

Package: *
Pin: release a=stable
Pin-Priority: 1001

Package: *
Pin: release a=jessie-updates
Pin-Priority: 1001

그런 다음 패키지를 업그레이드하십시오.

apt-get update
apt-get dist-upgrade

어떤 경우에는 설치하려는 패키지의 정확한 버전으로 충족되지 않은 종속성 문제를 해결해야 합니다.

apt-get install gcc-4.9-base=4.9.2-10+deb8u1
apt-get install libgcc1

많은 패키지가 삭제되는 이유는 무엇입니까?

적절하게 패키지와 해당 종속성을 설치하면 패키지가 제거될 경우 불필요해지고 자동으로 제거됩니다.

APT는 더 이상 필요하지 않은 패키지를 알려줍니다.

시간이 지남에 따라 자동으로 설치된 일부 패키지는 해당 패키지에 의존하는 패키지가 더 이상 필요하지 않기 때문에 더 이상 필요하지 않게 됩니다. 동일한 라이브러리의 최신 버전을 사용하고 있을 수도 있고, 다른 라이브러리로 전환했을 수도 있고, 작업을 스스로 완료할 수도 있습니다.


devuan을 ascii로 업그레이드하려면 /etc/apt/sources.list다음 줄만 추가하여 편집하세요.

deb http://pkgmaster.devuan.org/merged ascii main
deb http://pkgmaster.devuan.org/merged ascii-updates main
deb http://pkgmaster.devuan.org/merged ascii-security main
deb http://pkgmaster.devuan.org/merged ascii-backports main

/etc/apt/preferences파일을 삭제 하고 실행하세요.

apt-get upgrade devuan-keyring
apt-get update
apt-get dist-upgrade

Devuan Jessie에서 Ascii로 업그레이드

관련 정보