64ビットシステムに32ビットパッケージをインストールすると、重要な64ビットパッケージの削除に関する警告が表示されるのはなぜですか?

64ビットシステムに32ビットパッケージをインストールすると、重要な64ビットパッケージの削除に関する警告が表示されるのはなぜですか?

32ビットライブラリをインストールしようとすると、apt-get install liblua5.2:i386aptは必要な多くの64ビットパッケージが削除されることを警告します。そのうちのいくつかは32ビット版に置き換えられますが、一部はそうではありません。

32ビットパッケージと64ビットパッケージは並列に動作する必要はありませんか?システムはUbuntu 14.04 64-bitで、kde-plasma-desktop、kde-workspace、build-essential、gcc-4.8などの必須パッケージは削除される予定です。

これはパッケージとその依存関係のデザインバグですか?

The following packages will be REMOVED
  build-essential cpp cpp-4.8 g++ g++-4.8 gcc gcc-4.8 gcc-4.8-multilib
  gcc-multilib kde-plasma-desktop kde-workspace kde-workspace-bin libbonobo2-0
  libbonoboui2-0 libgnome2-0 libgnome2-bin libgnome2-perl libgnomeui-0
  libidl-common libidl0 liblua5.2-rrd-dev liblua5.2-rrd0 liborbit2 librrd4
  libtool php5-dev shutter x11-apps x11-session-utils x11-xserver-utils

フル出力:

The following extra packages will be installed:
  gcc-4.8-base gcc-4.8-base:i386 lib32asan0 lib32atomic1 lib32gcc-4.8-dev
  lib32gomp1 lib32itm1 lib32quadmath0 libasan0 libatomic1 libc6-dev:i386
  libdbi1:i386 libgcc-4.8-dev libgfortran3 libgomp1 libitm1 libquadmath0
  libreadline-dev:i386 libreadline6-dev:i386 librrd4:i386 libstdc++-4.8-dev
  libstdc++6 libstdc++6:i386 libtinfo-dev:i386 libtsan0 libx32asan0
  libx32atomic1 libx32gcc-4.8-dev libx32gomp1 libx32itm1 libx32quadmath0
  linux-libc-dev linux-libc-dev:i386
Suggested packages:
  glibc-doc:i386 manpages-dev:i386 libstdc++-4.8-doc
Recommended packages:
  gcc:i386 c-compiler:i386 ttf-dejavu:i386 ttf-bitstream-vera:i386
The following packages will be REMOVED
  build-essential cpp cpp-4.8 g++ g++-4.8 gcc gcc-4.8 gcc-4.8-multilib
  gcc-multilib kde-plasma-desktop kde-workspace kde-workspace-bin libbonobo2-0
  libbonoboui2-0 libgnome2-0 libgnome2-bin libgnome2-perl libgnomeui-0
  libidl-common libidl0 liblua5.2-rrd-dev liblua5.2-rrd0 liborbit2 librrd4
  libtool php5-dev shutter x11-apps x11-session-utils x11-xserver-utils
The following NEW packages will be installed
  libc6-dev:i386 libdbi1:i386 liblua5.2-0:i386 liblua5.2-0-dbg:i386
  liblua5.2-dev:i386 liblua5.2-rrd-dev:i386 liblua5.2-rrd0:i386
  libreadline-dev:i386 libreadline6-dev:i386 librrd4:i386 libtinfo-dev:i386
  linux-libc-dev:i386
The following packages will be upgraded:
  gcc-4.8-base gcc-4.8-base:i386 lib32asan0 lib32atomic1 lib32gcc-4.8-dev
  lib32gomp1 lib32itm1 lib32quadmath0 libasan0 libatomic1 libgcc-4.8-dev
  libgfortran3 libgomp1 libitm1 libquadmath0 libstdc++-4.8-dev libstdc++6
  libstdc++6:i386 libtsan0 libx32asan0 libx32atomic1 libx32gcc-4.8-dev
  libx32gomp1 libx32itm1 libx32quadmath0 linux-libc-dev
26 to upgrade, 12 to newly install, 30 to remove and 316 not to upgrade.
Need to get 12.1 MB of archives.
After this operation, 73.3 MB disk space will be freed.
Do you want to continue? [Y/n] 

ベストアンサー1

試してみてください。パッケージapt-get install liblua5.2-0:i386がない、とをインストールしようとしています。パッケージは削除を引き起こしたパッケージです。liblua5.2apt-get install liblua5.2:i386liblua5.2-dev:i386liblua5.2-0-dbg:i386liblua5.2-0:i386-dev

指定されたパッケージ名のマニュアル.の。が含まれているため、検索拡張が発生します。apt-get

与えられた式に一致するパッケージがなく、式に '.'、 '?'または、「*」のいずれかが含まれている場合は、POSIX正規表現と見なされ、データベース内のすべてのパッケージ名に適用されます。次に、すべての一致をインストール(または削除)します。一致は部分文字列で行われるため、「lo.*」は「how-lo」および「lowest」と一致します。これを避けるには、「^」または「$」文字を使用して正規表現を固定するか、より具体的な正規表現を作成します。

したがって、以下を実行してこれを回避できます。

apt-get install ^liblua5.2:i386$

(正しく失敗しました)。この規則は明らかに一般的な適用性があります。apt-getパッケージ名がパッケージ名と正確に一致しない場合、式にまたはが.含まれていなくても、?パッケージ名を正規表現として使用しようとします*

おすすめ記事