システムをアップグレードできるようにPPAをパージする前に、PPAバージョンにアップグレードしたメサパッケージがいくつかあります。バージョンの違いはわずかです(技術的には同じです。ライブラリの1セットのみがgitからのものであり、他は最終バージョンです)。
Synaptic、apt-get、またはaptitudeを使用してダウングレードしようとすると、依存関係の地獄に投げ込まれます。
パッケージを手動で(おそらく1つずつ)ダウングレードし、依存パッケージを(それが理にかなっている場合)完了するまでマークする方法はありますか?
追伸この質問: apt-getでパッケージをダウングレードする方法 は少し異なり、この状況を解決しません。
私は以前これで遊んだことはありませんが、トラブルを引き起こす依存関係のバージョンをhold
(またはlock
)にすることをお勧めします。このようにapt
には可能なソリューションの数が制限されており、他のパッケージをダウングレードしようとしても混乱しないでしょう。
他に何も機能しない場合は、この回答で提案されている手動のアプローチを取ることができます: apt-getを使用してパッケージをダウングレードする方法 。基本的に、必要な.deb
パッケージを手動でダウンロードしてから、下位レベルのdpkg
とその強力な引数の1つである--ignore-depends
、--force-depends
、--force-depends-version
、または--force-all
です。
上記と同じ精神で、--force-downgrade
引数があります:
downgrade(*): Install a package, even if newer version of
it is already installed.
Warning: At present dpkg does not do any dependency
checking on downgrades and therefore will not warn you if
the downgrade breaks the dependency of some other pack‐
age. This can have serious side effects, downgrading
essential system components can even make your whole sys‐
tem unusable. Use with care.
しかし、これはman dpkg
を読んでいることと、あなたが何をするかを理解していることを前提としています:
Warning: These options are mostly intended to be used by
experts only. Using them without fully understanding
their effects may break your whole system.
エラー:数字で始まるバージョン番号ではありません および Javaの古いバージョンをインストールする方法 および liquid 2.2のようなパッケージの古いバージョンをインストールする方法)を参照してください。 2? の例:
Sudo dpkg --force-downgrade -i your_mesa_package.deb
また、 依存関係をインストールせずにパッケージをインストールするにはどうすればよいですか? (適切な警告とともに)の例を参照してください。
Sudo dpkg --force-all -i your_mesa_package.deb
さらに別のアプローチは、equivs
パッケージ(およびおそらくわずかに異なる名前)を使用して、ダミーの.deb
パッケージを作成することです。次に、ダミーパッケージをインストールすると、関連する依存関係を維持したまま「true」パッケージを削除してから、古いバージョンをインストールできます。これがどのように機能するかはわかりませんが、詳細についてはこの関連スレッドを確認してください: 依存関係を削除せずにdebを削除する方法 。
最初にapt-mark
を使用して、ターゲットパッケージのすべての依存関係をマークできます(推奨される/推奨されるものも)システムに手動インストールとしてインストールされますそれを行った後、apt-get
が明示的にバージョンに言及しているソフトウェアの以前のバージョンをインストールします。
ターゲットパッケージの依存関係、推奨パッケージ、推奨パッケージを一覧表示するには:
apt-cache show <target-package-name>
パッケージを手動インストールとしてマーク:
Sudo apt-mark manual <package-name(s)>
(これをすべての依存関係に使用し、推奨および提案します。)
ターゲットパッケージを削除します。
Sudo apt-get remove <target-package-name>
ダウングレード/アップグレードできるパッケージバージョンのリストを表示するには、次を使用します。
apt-cache policy <target-package-name>
必要なパッケージのターゲットバージョンをインストールします。
Sudo apt-get install <target-package-name>=<target-package-version-number>
または
Sudo apt-get -t=<target release> install <target-package-name>
PS。 dependencies/recommended/suggestedパッケージのリスト、つまりapt-mark
でマークされるパッケージが大きい場合、apt-cache show <target-package-name>
でパッケージ化された出力の目的のリストを任意のファイルに保存します/path/to/foo
と言い、次のようなコンボでapt-mark
を使用します。
cat /path/to/foo | xargs -imarkthese Sudo apt-mark manual markthese
パッケージのアップストリームバージョンにアップグレードしてからダウングレードすることを決定するという苦痛を経験しました。これは、メンテナーのプライベートリポジトリを介して行われました。私の場合、これは最新のsystemd 233バージョン(まだリリースされていない)を試すことについてでした。
重要なのは、ダウングレードする必要があるすべてのパッケージを指定する必要があることを理解することです。あなたがこれを正しく行えば、チャンスはあなたが望むことをするでしょう。何かを見逃した場合、aptはアクションによって多くのパッケージが削除されることを通知します。実際に実行する前に、「-s」フラグを使用してダウングレードを試してください。
したがって、実行する必要がある手順は次のとおりです。
1)アップストリームにアップグレードされたすべての依存関係をリストします(状況が異なる場合は、他のキーワードを使用します)。
dpkg -l|grep upstream
これにより、アップストリームバージョン番号付きのパッケージのリストが表示されます。
2)各パッケージの正しい安定バージョンをリストします。
for i in libnss-resolve:AMD64 libsystemd0:AMD64 libpam-systemd:AMD64 libsystemd0:i386 libudev1:AMD64 libudev1:i386 systemd systemd-sysv udev; do apt-cache show $i; done|grep Version
3)すべてのダブルチェックが良好であること:
apt -s --allow-downgrades --no-remove --reinstall install libnss-resolve:AMD64=232-21ubuntu5 libsystemd0:AMD64=232-21ubuntu5 libpam-systemd:AMD64=232-21ubuntu5 libsystemd0:i386=232-21ubuntu5 libudev1:AMD64=232-21ubuntu5 libudev1:i386=232-21ubuntu5 systemd=232-21ubuntu5 systemd-sysv=232-21ubuntu5 udev=232-21ubuntu5
0 to upgrade, 0 to newly install, 9 to downgrade, 0 to remove and 0 not to upgrade.
(--reinstallが必要かどうかはわかりませんが、これは私がやったことです)
4)-sを削除して実行します。
apt --allow-downgrades --no-remove --reinstall install libnss-resolve:AMD64=232-21ubuntu5 libsystemd0:AMD64=232-21ubuntu5 libpam-systemd:AMD64=232-21ubuntu5 libsystemd0:i386=232-21ubuntu5 libudev1:AMD64=232-21ubuntu5 libudev1:i386=232-21ubuntu5 systemd=232-21ubuntu5 systemd-sysv=232-21ubuntu5 udev=232-21ubuntu5