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패키지 이름이 패키지 이름과 정확히 일치하지 않으면 표현식 .에 또는 가 포함되어 있지 않더라도 ?패키지 이름을 정규식으로 사용하려고 시도합니다 *.

관련 정보