私のローカルDebianインストールにアップグレードが完了しない問題があります。
Operating System: Debian GNU/Linux buster/sid
Kernel: Linux 4.12.0-1-686-pae
Architecture: x86
apt upgrade -f
問題を解決しようとしましたが、dpkg --configure lilypond-data
何をしても次のメッセージが表示されます。
Setting up lilypond-data (2.18.2-8) ...
Running mktexlsr /usr/share/texlive/texmf-dist...
mktexlsr: Updating /var/lib/texmf/ls-R-TEXLIVEDIST...
mktexlsr: Done.
ln: failed to create symbolic link 'lilypond/user': File exists
dpkg: error processing package lilypond-data (--configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
lilypond-data
E: Sub-process /usr/bin/dpkg returned an error code (1)
私が実行すると、dpkg --remove --force-remove-reinstreq --dry-run lilypond-data
次のようになります。
dpkg: dependency problems prevent removal of lilypond-data:
lilypond depends on lilypond-data (= 2.18.2-8).
dpkg: error processing package lilypond-data (--remove):
dependency problems - not removing
Errors were encountered while processing:
lilypond-data
答え1
一般的なアプローチは、(シェルスクリプトで)失敗した行を/var/lib/dpkg/info/lilypond-data.postinst
見つけることです。ln
次に、原因を特定して修正します(たとえば、rm
既存のリンクを介して、または最悪の場合はpostinstを編集するなど)。もちろん、バグを報告してください。
他の人がすでにこれを行っていない場合 - 参照エラー871631。そしてバグが修正されました。不安定なバージョンから2.18.2-9をインポートしてインストールするだけです。
(これは重要なレッスンを与えます。修正方法を考える前にバグ追跡システムをチェックしてください...)
また:apt-listbugsをインストールしたいかもしれません。
答え2
このセクションでは重要な内容を説明します。
ln: failed to create symbolic link 'lilypond/user': File exists
dpkg: error processing package lilypond-data (--configure):
subprocess installed post-installation script returned error exit status 1
インストール後にスクリプトが失敗しました。これは、安定バージョンから古いバージョンを正しく処理するように構成されていないためです。
Debianパッケージには2つのコンポーネントがあります。
.tar.gz
ルートディレクトリに抽出された一般(または類似)ファイルのアーカイブ- スクリプトをインストールして実行今後そして後ろにファイル抽出。
したがって、パッケージのインストールは次のようになります。
- パッケージによって実行されるプレインストールスクリプト
- パッケージアーカイブがルートディレクトリに抽出されます。
- インストール後のスクリプトの実行
削除プロセスは似ていますが、削除前のスクリプトと削除後のスクリプトがあります。
あなたの場合、パッケージのアップグレード後にスクリプトの呼び出し順序が少し複雑になりましたが、それは深刻ではありません。
彼らの観点から見ると、新しいパッケージのインストール後のスクリプトは何らかの理由で実行されません。したがって、システムに抽出されました。
開発ディストリビューションなので、手動で問題を解決するのは難しい作業ではありません。
以前のインストール後にスクリプトを編集します。
vi /var/lib/dpkg/info/lilypond-data.postinst
リンクを作成できない場所を見つけてリンクを許可してもらいます。
次に、次を実行します。
dpkg --configure -a
やりたいことをします。 (うまくいかない場合は心配せず、もう一度編集してもう一度やり直してください。)