web-dev-qa-db-ja.com

Ubuntu 12.04 Libreofficeの更新によりソフトウェアの更新が中断される

本日(2014年8月16日)、最新の更新を適用した後、Libreoffice-baseは "no diversion"エラーのためにアップグレードを完了せず、postrmスクリプトが壊れているようです。

すべてのPPAリポジトリをオフにし、「Sudo dpkg --configure -a」、「Sudo apt-get autoremove」、および「Sudo rm -fR/var/cache/apt」を実行してクリーンなスレートを作成しましたが、役に立つまた、問題のあるファイルの名前を.bakに変更しようとしました。

何か案は?

最新の試行の出力:

$ Sudo apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  iw crda wireless-crda wireless-regdb
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
  libreoffice-base
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 6,748 kB disk space will be freed.
Do you want to continue [Y/n]? y
(Reading database ... 221883 files and directories currently installed.)
Removing libreoffice-base ...
No diversion 'diversion of /usr/lib/libreoffice/share/basic/dialog.xlc to /usr/lib/libreoffice/share/basic/dialog.xlc.noaccess by libreoffice-base', none removed.
No diversion 'diversion of /usr/lib/libreoffice/share/basic/script.xlc to /usr/lib/libreoffice/share/basic/script.xlc.noaccess by libreoffice-base', none removed.
/var/lib/dpkg/info/libreoffice-base.postrm: 31: /var/lib/dpkg/info/libreoffice-base.postrm: Syntax error: end of file unexpected (expecting "fi")
dpkg: error processing libreoffice-base (--remove):
 subprocess installed post-removal script returned error exit status 2
Errors were encountered while processing:
 libreoffice-base
E: Sub-process /usr/bin/dpkg returned an error code (1)
2
mtb-cliff

このバグは報告されました here 。要するに、/ var/lib/dpkg/info/libreoffice-base.postrmスクリプトに構文エラーがあり、それが壊れています。

これは、マシン上の問題を修正するために行ったもので、nadrach here でも提案されました。その破損したスクリプトを編集用に開きます。

Sudo gedit /var/lib/dpkg/info/libreoffice-base.postrm

ファイルを編集します。

#!/bin/sh

set -e


if [ "$1" = remove -o "$1" = abort-install -o "$1" = disappear ]; then
dpkg-divert --package $DPKG_MAINTSCRIPT_PACKAGE --remove --rename \
--divert /usr/lib/libreoffice/share/basic/dialog.xlc.noaccess \
/usr/lib/libreoffice/share/basic/dialog.xlc
dpkg-divert --package $DPKG_MAINTSCRIPT_PACKAGE --remove --rename \
--divert /usr/lib/libreoffice/share/basic/script.xlc.noaccess \
/usr/lib/libreoffice/share/basic/script.xlc
fi
if [ "$1" = abort-upgrade ] && dpkg --compare-versions "$2" lt dpkg --compare-versions "$2" lt 1:4.3.0~beta1-1; then
dpkg-divert --package $DPKG_MAINTSCRIPT_PACKAGE --remove --rename \
--divert /usr/lib/libreoffice/share/basic/dialog.xlc.noaccess \
/usr/lib/libreoffice/share/basic/dialog.xlc
dpkg-divert --package $DPKG_MAINTSCRIPT_PACKAGE --remove --rename \
--divert /usr/lib/libreoffice/share/basic/script.xlc.noaccess \

この行をここに配置:/usr/lib/libreoffice/share/basic/script.xlc

fi

    # Automatically added by dh_installmenu

if [ -x "`which update-menus 2>/dev/null`" ]; then update-menus ; fi
# End automatically added section


exit 0

ファイルを保存し、更新を実行します。この修正により、まだ問題は発生していません。


Davidが指摘したように、これを適用した後、すべてが正常に戻る前に壊れたパッケージを修正する必要があるかもしれません。

Sudo apt-get -f install
3
Tanel Mae

問題のあるエラーを取り除くことができましたが、libreoffice-baseにアクセスできませんでした。私は通常、代わりにMySqlを使用するので、今はそれなしで生きることができます。私がやった方法は、ルート「gksu nautilus」としてnautilusウィンドウを開き、postrmファイルが存在するディレクトリに移動し、「/ var/lib/dpkg/info」でテキストの「libreoffice-base.postrm」を開いたエディターと2番目のブロックを完全にコメントアウト( 'fi'まで)-'if ["$ 1" = abort-upgrade] && dpkg --compare-versions "$ 2" lt dpkg --compare-versions "$ 2" lt 1:4.3.0〜beta1-1;その後」。ファイルを保存してから、「Sudo apt-get install libreoffice-base」を実行すると、次の結果が生成されました。

パッケージリストの読み取り中...完了依存ツリーの構築
状態情報の読み取り中...完了libreoffice-baseはすでに最新バージョンです。次のパッケージは自動的にインストールされ、不要になりました。iw crda wireless-crda wireless-regdb「apt-get autoremove」を使用してそれらを削除します。次のパッケージが削除されます。libreoffice-base0がアップグレードされ、0が新しくインストールされ、1が削除され、0がアップグレードされていません。 1完全にインストールまたは削除されていません。この操作の後、6,748 kBのディスク領域が解放されます。続行しますか[Y/n]? y(データベースを読み込んでいます... 221883ファイルとディレクトリが現在インストールされています。)libreoffice-baseを削除しています...流用なし '/usr/lib/libreoffice/share/basic/dialog.xlcの/ usr/lib/libreoffice/shareへの流用/basic/dialog.xlc.noaccess by libreoffice-base '、削除なし。 「/usr/lib/libreoffice/share/basic/script.xlcの/usr/lib/libreoffice/share/basic/script.xlc.noaccessによるlibreoffice-baseによる転換」なし、削除なし。メニューのトリガーの処理...

Baseを再インストールしようとすると、依存関係について不平を言いますが、識別されたファイルはすべて必要な最新バージョンです。変だ。しかし、少なくともパッケージを再度更新してインストールできます。

0
mtb-cliff