私はこれが私自身が考案したユニークな混乱であると確信していますが、誰かがこれに触れて助けることができることを願っています。
設定
私のラップトップは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
パッケージと一致します。200
501
削除後の/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
関連質問
以下は同様の状況に関する質問ですが、どの回答もこの問題を理解または解決するのに役立ちませんでした。
- 適切な固定優先順位が制限されています。
- Debian 10: 一部の SSL パッケージがダウングレードされるのはなぜですか?
- 「パッケージがダウングレードされ、--allow-downgradesなしで-yが使用されました」適切なメッセージを削除する方法
上記の質問に対するすべての回答を試しましたが、関連性があるか、有効な答えがないようです。
私の質問
システムが常にこれらのパッケージをダウングレードする必要があるとは思わないように、これを調整する方法について提案がある人はいますか?
答え1
基本的な答えは、あなたがしてはいけないことをしているということです。複数のバージョン(およびディストリビューション)にわたるリポジトリの混合。 UbuntuベースのディストリビューションにDebianパッケージを導入するのは悪い考えです。xscreensaver
利用可能以降のバージョンのUbuntuでは、、使用するのはそれほど危険ではありませんが、それでも悪い考えです。
あなたが行ったすべての調査と提供された詳細を考慮すると、ここに表示される動作を説明することをお勧めします。 「ダウングレード」を提供するすべてのパッケージは、DebianとUbuntuで同じバージョンで利用できるという共通の属性を持っています。いいえDebianからインポートされたすべてのパッケージはUbuntuで再構築されるため、同じパッケージです。
apt
ここで最初に登場する機能はピン優先順位選択バージョンのみ。リポジトリのさまざまなバージョンで利用可能なパッケージの場合、固定優先順位によってパッケージが区別されます。リポジトリの同じバージョンで使用可能なパッケージには該当しません。次に、次の機能を適用します。複数のリポジトリが同じバージョンを提供している場合は、リストされた最初のバージョンが優先されます。。これは、ハッシュが一致しない場合、特定のハッシュでインストールされたパッケージが同じバージョンのリポジトリパッケージに置き換えられるという別の機能と組み合わされますapt
(これにはQ&Aがありますが、次のものを探しています)。これまでではありません)。
これらのすべての結果は、JammyのバージョンがDebian stableの現在のバージョンと完全に一致するPop!_OS(デフォルトのUbuntu)によって提供されるすべてのパッケージがapt
Debianバージョンに置き換えられたと見なされることです。なぜダウングレードされたと識別されるのかわかりません。
これを続行するには、多くのPop!_OSパッケージをDebianの「同等のパッケージ」に置き換える必要があります。これはうまくいくかもしれませんが、使用されているライブラリの微妙な違いによって問題が発生する可能性があります。 。完全にテストされていない設定で終了します。
これをキャンセルするには、を削除しsid.list
てリポジトリを更新してから、「ダウングレード」したパッケージを明示的に再インストールする必要があります。
sudo apt reinstall alsa-topology-conf
答え2
Steven Kitに感謝します
確かに、スティーブンジッタ答えは選択された答えです。
しかし、OPとして私は私の特定の問題を解決するために特定の詳細を追加しました(他の人が興味を持っている場合に備えて)。
Stephenが親切で忍耐強く指摘したように、文書化はうまくいっていますが、正しく理解または読めませんでした。
購入するパッケージを選択するプロセスは2段階で行われます。
- 優先順位によって取得するバージョンが決まります。
- これで、
apt
特定のバージョンを一覧表示する最初のリポジトリを取得できます。/etc/apt/sources.list
まずファイルで探します。- 次に、
/etc/apt/sources.list.d
dirを見て、ディレクトリ内のファイルを語彙順に並べ替えます(デフォルトではデフォルト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
ここはUbuntuのジェイミー買戻契約が明記されています。
トラブルシューティング - 回答
質問で説明した特定のシナリオを解決するために、私のソリューションは、パッケージ内のパッケージが常に最後に選択される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
。
簡単に言えば、私は(過去の経験に基づいて)システムをハッキングしなければならないと思いました。
しかし、繰り返しますが、私は仕事を破るときに最もよく学びます。それは素晴らしい教訓であり、時間をかけて読んで答えてくださった方々に感謝します。