내 질문

내 질문

나는 이것이 내 자신이 고안한 독특한 혼란이라고 확신하지만 누군가가 이것을 접하고 도움을 줄 수 있기를 바랍니다.

설정

내 노트북은 Pop!_OS 22.04(Ubuntu Jammy 기반)를 실행하고 있습니다. 난 정말 좋아화면 보호기패키지이지만 Debian/Ubuntu/Pop!_OS 배포 저장소에는 오래된 버전이 포함되어 있으며 sid(불안정이라고도 함)에만 최신 패키지가 포함되어 있습니다.*.

걱정하지 마세요. 이것이 바로 고정이 존재하는 이유입니다. 제가 설정한 방법은 다음과 같습니다.

/etc/apt/preferences.d/unstable-200문서:

Package: *
Pin: release a=unstable
Pin-Priority: 200

/etc/apt/preferences.d/xscreensaver-2000문서:

Package: xscreensaver*
Pin: release a=unstable
Pin-Priority: 2000

/etc/apt/sources.list.d/debian.sid.list문서:

deb [arch=amd64] http://http.us.debian.org/debian sid main contrib non-free

이것은 실제로 작동합니다. 이 시점에서 실행하면 sudo apt install xscreensaver최신 버전이 설치됩니다. 그런데 이상한 부작용이 있습니다.

질문

sudo apt update그런 다음 실행 하면 sudo apt upgrade다음과 같은 결과가 나타납니다.

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be DOWNGRADED:
  alsa-topology-conf appmenu-gtk-module-common aspell-en ca-certificates
  chrome-gnome-shell dictionaries-common dns-root-data emacsen-common folks-common
  fonts-arphic-ukai fonts-noto-cjk fonts-noto-cjk-extra fonts-noto-color-emoji
  fonts-urw-base35 friendly-recovery gir1.2-flatpak-1.0 gir1.2-gdkpixbuf-2.0
  gir1.2-graphene-1.0 gir1.2-gtksource-4 gir1.2-polkit-1.0 gir1.2-secret-1
  gir1.2-soup-2.4 gsfonts gsfonts-x11 hunspell-ar hunspell-de-at-frami
  hunspell-de-ch-frami hunspell-de-de-frami hunspell-en-au hunspell-en-ca hunspell-en-gb
  hunspell-en-us hunspell-en-za hunspell-es hunspell-fr hunspell-fr-classical hunspell-it
  hunspell-pt-br hunspell-pt-pt hunspell-ru hyphen-de hyphen-en-gb hyphen-es hyphen-fr
  hyphen-it hyphen-pt-br hyphen-pt-pt ieee-data javascript-common klibc-utils
  laptop-detect liba52-0.7.4 libappmenu-gtk2-parser0 libbytesize-common libffi8
  libflatpak-dev libgl1 libgles2 libgutenprint-common libgweather-4-0 libio-stringy-perl
  libjs-jquery libldacbt-abr2 libmpcdec6 libmysofa1 libopengl0 libpolkit-gobject-1-0
  libsndio7.0 libsoup-gnome2.4-1 libtermkey1 libvterm0 libwacom-common libxkbcommon0
  mythes-ar mythes-de mythes-de-ch mythes-en-au mythes-en-us mythes-es mythes-fr
  mythes-it mythes-pt-pt mythes-ru neovim-runtime netbase pass policykit-1 poppler-data
  powermgmt-base printer-driver-all python3-certifi python3-fido2 python3-jinja2
  python3-launchpadlib python3-lazr.uri python3-macaroonbakery python3-more-itertools
  python3-pkg-resources python3-pyatspi python3-rfc3339 python3-setuptools python3-tz
  python3-wheel python3-ykman sensible-utils sgml-base sgml-data sound-icons ssl-cert
  tpm-udev ucf update-inetd va-driver-all wamerican wbrazilian wbritish wfrench witalian
  wngerman wogerman wspanish wswiss xfonts-base xml-core yubikey-manager
0 upgraded, 0 newly installed, 125 downgraded, 0 to remove and 0 not upgraded.
Need to get 257 MB/283 MB of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] 

이로 인해 Pop!_OS Shop의 업데이트 수가 사라지고 해당 패키지가 보류 중인 OS 업데이트로 표시됩니다.

문제 해결

이 문제를 해결하려고 노력하면서 수집한 일부 데이터입니다.

제거 /etc/apt/sources.list.d/debian.sid.list하고 실행하면 sudo apt update문제가 해결되었으므로 어딘가에 잘못된 계산/결함이 있는 논리라는 것을 알고 있습니다.

목록의 첫 번째 패키지에 중점을 둡니다 alsa-topology-conf.

오류가 완전히 피상적인 것임을 알면서도 처음에는 apt패키지 소스(저장소)가 어떻게든 추적되고 있다고 생각하여 패키지를 제거하고 정리한 후 다시 설치했습니다. 다른 점이 없다.

sudo apt remove alsa-topology-conf
sudo apt clean
sudo apt update
sudo apt install alsa-topology-conf

실행 apt policy alsa-topology-conf결과는 다음과 같습니다.

alsa-topology-conf:
  Installed: 1.2.5.1-2
  Candidate: 1.2.5.1-2
  Version table:
 *** 1.2.5.1-2 200
        200 http://http.us.debian.org/debian sid/main amd64 Packages
        100 /var/lib/dpkg/status
     1.2.5.1-2 501
        501 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 Packages
        501 http://us.archive.ubuntu.com/ubuntu jammy/main i386 Packages

둘 다처럼 보이고 정확히 동일한 버전을 sid가지며 jammy어떤 이유로 우선 순위 항목 대신 우선 순위가 apt있는 패키지와 일치합니다 .200501

삭제 후 /etc/apt/sources.list.d/debian.sid.list출력은 다음과 같습니다.

alsa-topology-conf:
  Installed: 1.2.5.1-2
  Candidate: 1.2.5.1-2
  Version table:
 *** 1.2.5.1-2 501
        501 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 Packages
        501 http://us.archive.ubuntu.com/ubuntu jammy/main i386 Packages
        100 /var/lib/dpkg/status

관련 질문

다음은 비슷한 상황에 대한 관련 질문이지만, 어떤 답변도 이 문제를 이해하거나 해결하는 데 도움이 되지 않았습니다.

위 질문에 대한 모든 답변을 시도했지만 관련성이 있거나 유효한 답변이 없는 것 같습니다.

내 질문

시스템이 지속적으로 이러한 패키지를 다운그레이드해야 한다고 생각하지 않도록 이를 조정하는 방법에 대한 제안 사항이 있는 사람이 있습니까?

답변1

기본적인 대답은 당신이 하지 말아야 할 일을 하고 있다는 것입니다.여러 버전(및 배포판)에 걸쳐 리포지토리 혼합. Ubuntu 기반 배포판에 Debian 패키지를 도입하는 것은 나쁜 생각입니다. xscreensaver사용 가능이후 버전의 우분투에서는, 사용하는 것이 덜 위험하지만 그것조차도 나쁜 생각입니다.

귀하가 수행한 모든 조사와 제공한 세부 정보를 고려하면 여기서 나타나는 동작을 설명하는 것이 좋습니다. "다운그레이드"를 제공하는 모든 패키지는 Debian과 Ubuntu에서 동일한 버전으로 사용할 수 있다는 공통 속성을 가지고 있습니다.아니요Debian에서 가져온 모든 패키지는 Ubuntu에서 다시 빌드되므로 동일한 패키지입니다.

apt여기서 가장 먼저 등장하는 기능은핀 우선순위 선택 버전만 해당. 저장소의 다양한 버전에서 사용 가능한 패키지의 경우 고정 우선순위에 따라 패키지가 구분됩니다. 저장소의 동일한 버전에서 사용 가능한 패키지에는 해당되지 않습니다. 그런 다음 다음 기능을 적용하십시오.여러 저장소가 동일한 버전을 제공하는 경우 나열된 첫 번째 버전이 우선합니다.. 이는 해시가 일치하지 않는 경우 특정 해시로 설치된 패키지가 동일한 버전의 저장소 패키지로 대체되는 의 또 다른 기능과 결합됩니다 apt(여기에 이에 대한 Q&A가 있지만 다음을 찾고 있습니다). 지금까지는 아닙니다).

이 모든 것의 결과는 Jammy의 버전이 Debian stable의 현재 버전과 정확히 일치하는 Pop!_OS(기본 Ubuntu)에서 제공하는 모든 패키지가 aptDebian 버전으로 교체되는 것으로 간주된다는 것입니다. 왜 다운그레이드된 것으로 식별되는지 잘 모르겠습니다.

이 작업을 계속하려면 많은 Pop!_OS 패키지를 Debian "동등한 패키지"로 교체해야 합니다. 이것이 작동할 가능성이 높지만 사용된 라이브러리의 미묘한 차이로 인해 문제가 발생할 수도 있습니다. . 완전히 테스트되지 않은 설정으로 끝납니다.

이 작업을 취소하려면 을 삭제 sid.list하고 저장소를 업데이트한 다음 "다운그레이드"한 패키지를 명시적으로 다시 설치해야 합니다.

sudo apt reinstall alsa-topology-conf

답변2

스티븐 키트에게 감사드립니다

확실하게,스티븐 지터답변은 선택된 답변입니다.
그러나 OP로서 나는 내 특정 문제를 해결하기 위해 특정 세부 정보를 추가했습니다(다른 사람이 관심을 가질 경우를 대비해).

Stephen이 친절하고 인내심 있게 지적했듯이 문서화는 잘 되어 있지만 제대로 이해하거나 읽지 못했습니다.

구매할 패키지를 선택하는 과정은 2단계로 이루어집니다.

  1. 우선순위에 따라 얻을 버전이 결정됩니다.
  2. 그래야만 apt해당 특정 버전을 나열하는 첫 번째 저장소를 얻을 수 있습니다.
    • /etc/apt/sources.list먼저 파일에서 찾습니다.
    • 다음으로 /etc/apt/sources.list.ddir을 살펴보고 디렉토리의 파일을 어휘 순서로 정렬합니다(기본적으로 ls기본적으로 수행하는 작업).

내 질문

내 질문에 지정되지 않은 Pop!_OS 소스 파일은 /etc/apt/sources.list.d디렉토리에 나열되며 해당 이름은 다음과 같습니다.

pop-os-apps.sources
pop-os-release.sources
system.sources

이는 sid.list또는 debian.sid.list위 목록으로 정렬해도 여전히 표시됨을 의미합니다.앞으로 system.sources이곳은우분투의 제이미환매 계약이 명시되어 있습니다.

문제 해결 - 답변

질문에서 설명한 특정 시나리오를 해결하기 위해 내 솔루션은 패키지 내의 패키지가 항상 마지막으로 선택 sid.list되도록 이름을 바꾸는 것이었 zzz.sid.list습니다 .sid

apt policy alsa-topology-conf수리 후의 모습은 다음과 같습니다.

1.2.5.1-2   Candidate: 1.2.5.1-2   Version table:  *** 1.2.5.1-2 501
        501 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 Packages
        501 http://us.archive.ubuntu.com/ubuntu jammy/main i386 Packages
        100 /var/lib/dpkg/status
     1.2.5.1-2 200
        200 http://http.us.debian.org/debian sid/main amd64 Packages
        200 http://http.us.debian.org/debian sid/main i386 Packages

정답

가능하다면 이 작업을 수행할 필요가 없습니다. 특히 기본 Ubuntu 버전이 최종적으로 업그레이드된 최신 버전의 Pop!_OS에서는 더욱 그렇습니다.화면 보호기가방그리고 그것들은 실제로 그것들과 일치합니다 sid.

간단히 말해서, 나는 (과거 경험을 바탕으로) 시스템을 해킹해야 한다고 생각했는데, 이 특별한 경우에는 해킹하지 않았으며 해결책은 시도하지 않는 것이었습니다.

하지만 다시 말하지만, 나는 일을 깨뜨릴 때 가장 잘 배웁니다. 그것은 훌륭한 교훈이었고 시간을 내어 읽고 답변해 주신 분들께 감사드립니다.

관련 정보