一部の Debian リポジトリでは、「改良された」パッケージがたくさんあります。これでリポジトリを無効にしたので、/etc/apt/sources.list.d
利用可能なすべてのパッケージに「改善された」すべてのパッケージを再インストールしたいと思います。 grepではパッケージのリストをうまく得ることができますが、
apt-get install --reinstall \
$(dpkg-query -Wf '${Version}\t${Package}\n' | grep SOMEREPO | awk '{print $2}' )
そのパッケージをダウンロードできないことを報告します。もちろん、現在のバージョンでは不可能です。--reinstall --downgrade
拒絶されるapt
。ダウングレードする唯一の方法は、特定のバージョンの名前を指定することです(作成するにははるかに面倒なスクリプトが必要です)。一括バッグ)。
私が見落としたことはありますか?たぶん資格はそれを行うことができますか?
修正する:通過できることを知っています決定した(本当にありがとう、モード!)しかし、実際には解決策ではありません。とても大変で、私は気にしません。ダウングレードの具体的な情報源について。現在アクティブなソースから利用可能なバージョンにダウングレードしたいです。
アップデート2:Debian派生製品(MX Linux)を使用しているので、ダウングレードは以下から可能です。
- Debian スポイラー
buster-backports
- ディストリビューション
https://mirrors.*/mx/MX-Packages/mx/repo/
答え1
ピンの優先順位は、/etc/apt/preferences
または以下の新しいファイルに追加することです/etc/apt/preferences.d
。
Package: *
Pin: release a=*
Pin-Priority: 1001
apt upgrade
ダウングレードを意味しても、既知のインストール済みパッケージの最新バージョンをインストールします。apt
その後、現在設定されているリポジトリのパッケージのみが知られているので、目的のapt update
効果を得ることができます。
答え2
これが私が思いついたものです:
apt install $(apt-show-versions | grep newer | awk '{print $1}' | while read pkg; do ver="$(apt-cache madison "$pkg" | head -n1 | awk -F'|' '{gsub("\\s", "", $2); print $2}')"; printf "%s=%s\n" "$pkg" "$ver"; done)
仕組みは次のとおりです。
apt-show-versions | grep newer | awk '{print $1}'
ダウングレードする必要があるパッケージのリストを決定するために使用されます。host ~ # apt-show-versions|grep newer libapache2-mod-php:all 2:8.3+94+0~20240205.51+debian11~1.gbp6faa2e newer than version in archive libapache2-mod-php8.2:amd64 8.2.18-1+0~20240411.52+debian11~1.gbp91aa2d newer than version in archive [...]
各パッケージの最新バージョンを確認するには
apt-cache madison
(解析が簡単な選択肢のようです)を使用してください。apt-cache policy
host ~ # apt-cache madison libapache2-mod-php libapache2-mod-php | 2:8.2+93~iservbpo11+1 | https://update.iserv.eu/debian bullseye-stable/main amd64 Packages libapache2-mod-php | 2:7.4+76 | http://deb.debian.org/debian bullseye/main amd64 Packages
pkg=ver
APTにこの特定のバージョンのパッケージをインストールするように指示する各パッケージの文字列を構成し、これらのすべての文字列libapache2-mod-php=2:8.2+93~iservbpo11+1
をapt install
。
答え3
後で参照できるようにあなたの言う通りに、Debian部門...強烈なスクリプトの後:
ps=$(for p in $(dpkg-query -Wf '${Version}\t${Package}\n' | grep REPO | awk '{print $2}'); do
apt --quiet list $p | grep -v /now | grep / | awk '{print $1}' | head -1
done)
# this still leaves some /oldstable,oldstable broken versions
apt install --reinstall $(echo "$ps" | cut -f1 -d,)
お勧めしません。システムが簡単な作業を妨げると迷惑です。