วิธีการติดตั้งไฟล์ 64- บิต .deb บนเครื่อง 32- บิต?


17

ฉันมี Ubuntu 14.04 ฉันเพิ่งดาวน์โหลดViber ไฟล์ Viber .deb มีสถาปัตยกรรม 64 บิต ฉันต้องการติดตั้งบนคอมพิวเตอร์ของฉัน แต่คอมพิวเตอร์ของฉันรองรับเพียง 32 บิตเท่านั้น

เอาต์พุตของการรันlscpuมีดังนี้:

Architecture: i686
CPU op-mode(s): 32-bit, 64-bit 
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1 
Core(s) per socket: 2 
Socket(s): 1 
Vendor ID: GenuineIntel 
CPU family: 6 
Model: 23 
Stepping: 10 
CPU MHz: 2800.000 
BogoMIPS: 5586.12 
Virtualization: VT-x 
L1d cache: 32K 
L1i cache: 32K 
L2 cache: 2048K

3
คุณแน่ใจได้อย่างไรว่ามันไม่รองรับ 64- บิต? หากคุณต้องเรียกใช้โปรแกรม 64 บิตคุณจะต้องติดตั้งระบบปฏิบัติการ 64 บิต
muru

ฉันได้ยินมาว่าซอฟต์แวร์บางตัวทำงานอย่างนั้น ... นั่นคือสิ่งที่ฉันถาม
A Umar Mukthar

คุณจะต้องใช้ VMs: askubuntu.com/questions/180761/…
muru

ผลลัพธ์ของการทำงานlscpuใน Terminal คืออะไร?
αғsнιη

7
ใช่ระบบของคุณคือความสามารถ 64- บิตและคุณควรติดตั้งใหม่ในโอกาสแรกเนื่องจากคุณจะพบปัญหานี้อีกครั้งและจะยิ่งเจ็บปวดมากขึ้นในการจัดการในภายหลัง
Michael Hampton

คำตอบ:


22

โดยมีเงื่อนไขว่าฮาร์ดแวร์ของคุณรองรับ 64- บิตซึ่ง:

CPU op-mode: 32- บิต, 64- บิต

และแพคเกจก็พร้อมที่จะใช้ multiarch ซึ่งก็เป็นจริง:

 dpkg -I viber.deb
 new debian package, version 2.0. <--- here
 size 57046082 bytes: control archive=8024 bytes.
       0 bytes,     0 lines      0                    
    1210 bytes,    29 lines      control              
    9475 bytes,    33 lines   *  copyright            
    7404 bytes,    85 lines      md5sums              
      39 bytes,     2 lines   *  postinst             #!/bin/bash
     800 bytes,    35 lines   *  preinst              #!/bin/bash
     500 bytes,    24 lines   *  prerm                #!/bin/bash
 Package: viber
 Version: 4.2.2.6
 Section: non-free/net
 Priority: extra
 Architecture: amd64 <---- and here

คุณสามารถติดตั้งไลบรารี 64- บิตและไบนารีที่จำเป็นซึ่งขึ้นอยู่กับแพ็คเกจ (ซึ่งไม่เกี่ยวกับเรื่องนั้นในภายหลัง) ที่คุณต้องใช้แอพพลิเคชั่นโดยมีผลกระทบต่อประสิทธิภาพของศูนย์เสมือน ในกรณีของฉันฉันเพิ่งติดตั้งแพคเกจก็ดี:

$ sudo dpkg --add-architecture amd64
## adding 64-bits architecture package, in my system I didn't need to
## but it's likely you have
$ sudo apt-get update # this downloads the package list for amd64 arch
$ sudo dpkg -i viber.deb
Selecting previously unselected package viber.
(Reading database ... 268703 files and directories currently installed.)
Preparing to unpack viber.deb ...
Unpacking viber (4.2.2.6) ...
Setting up viber (4.2.2.6) ...
Processing triggers for hicolor-icon-theme (0.13-1) ...
Processing triggers for gnome-menus (3.13.3-1) ...
Processing triggers for mime-support (3.56) ...
Processing triggers for desktop-file-utils (0.22-1) ...

แล้วก็เริ่มมีปัญหา ...

ผู้จัดการแพ็คเกจตัดสินใจว่าพวกเขาไม่ควรแสดงรายการการพึ่งพาสำหรับแพ็คเกจของตน

 Installed-Size: 141336
 Conflicts: Viber (<< 4.2.2.6)
 Replaces: Viber (<< 4.2.2.6)
 Maintainer: Viber Media Inc <support@viber.com>

ซึ่งพวกเขาต้องการจริง:

ldd /opt/viber/Viber | grep 'not found'
    libXcomposite.so.1 => not found
    libxslt.so.1 => not found
    libxml2.so.2 => not found
    libgstreamer-0.10.so.0 => not found
    libgstapp-0.10.so.0 => not found
    libgstbase-0.10.so.0 => not found
    libgstinterfaces-0.10.so.0 => not found
    libgstpbutils-0.10.so.0 => not found
    libgstvideo-0.10.so.0 => not found
    libsqlite3.so.0 => not found

ดังนั้นคุณต้องค้นหาและติดตั้งไลบรารีที่ขาดหายไป ด้วยตนเอง! นี่เป็นเรื่องง่ายถ้าคุณรู้เครื่องมือที่ถูกต้อง apt-fileมีประโยชน์ที่นี่เช่นกันฟังก์ชันการทำงานhttp://packages.ubuntu.com "ค้นหาเนื้อหาของแพ็คเกจ" ก็ใช้ได้เช่นกัน แต่ฉันไปข้างหน้าและค้นหาพวกเขา:

amd64ไฟล์เหล่านี้จะถูกติดตั้งอยู่แล้วในระบบของฉันคุณจะต้องคัดลอกชื่อแพคเกจหนึ่งก่อนลำไส้ใหญ่ที่ลงท้ายด้วย คุณควรคัดลอกชื่อแพ็คเกจตามที่:

dpkg -S $(ldd /opt/viber/Viber | awk '{print $3}' | grep -vP 'not|viber')
libc6:amd64: /lib/x86_64-linux-gnu/libpthread.so.0
libc6:amd64: /lib/x86_64-linux-gnu/libdl.so.2
libc6:amd64: /lib/x86_64-linux-gnu/librt.so.1
libstdc++6:amd64: /usr/lib/x86_64-linux-gnu/libstdc++.so.6
libc6:amd64: /lib/x86_64-linux-gnu/libm.so.6
libgcc1:amd64: /lib/x86_64-linux-gnu/libgcc_s.so.1
libc6:amd64: /lib/x86_64-linux-gnu/libc.so.6
libx11-6:amd64: /usr/lib/x86_64-linux-gnu/libX11.so.6
libxext6:amd64: /usr/lib/x86_64-linux-gnu/libXext.so.6
zlib1g:amd64: /lib/x86_64-linux-gnu/libz.so.1
libgl1-mesa-glx:amd64: /usr/lib/x86_64-linux-gnu/libGL.so.1
libxrender1:amd64: /usr/lib/x86_64-linux-gnu/libXrender.so.1
libglib2.0-0:amd64: /lib/x86_64-linux-gnu/libglib-2.0.so.0
libglib2.0-0:amd64: /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
libxcb1:amd64: /usr/lib/x86_64-linux-gnu/libxcb.so.1
libglapi-mesa:amd64: /usr/lib/x86_64-linux-gnu/libglapi.so.0
libxdamage1:amd64: /usr/lib/x86_64-linux-gnu/libXdamage.so.1
libxfixes3:amd64: /usr/lib/x86_64-linux-gnu/libXfixes.so.3
libx11-xcb1:amd64: /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1
libxcb-glx0:amd64: /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0
libxcb-dri2-0:amd64: /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0
libxcb-dri3-0:amd64: /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0
libxcb-present0:amd64: /usr/lib/x86_64-linux-gnu/libxcb-present.so.0
libxcb-sync1:amd64: /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1
libxshmfence1:amd64: /usr/lib/x86_64-linux-gnu/libxshmfence.so.1
libxxf86vm1:amd64: /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1
libdrm2:amd64: /usr/lib/x86_64-linux-gnu/libdrm.so.2
libpcre3:amd64: /lib/x86_64-linux-gnu/libpcre.so.3
libffi6:amd64: /usr/lib/x86_64-linux-gnu/libffi.so.6
libxau6:amd64: /usr/lib/x86_64-linux-gnu/libXau.so.6
libxdmcp6:amd64: /usr/lib/x86_64-linux-gnu/libXdmcp.so.6

ฉันไม่ได้ติดตั้งสิ่งเหล่านี้ซึ่งฉันได้รับโดยใช้ldd /opt/viber/Viber | grep 'not found' | awk '{printf "%s$\n", $1}' | apt-file search -x -a amd64 -f - | sed 's/\:/:amd64:/':

$ ldd /opt/viber/Viber | grep 'not found' | awk '{printf "%s$\n", $1}' | apt-file search -x -a amd64 -f - | sed 's/\:/:amd64:/'
libgstreamer-plugins-base0.10-0:amd64: /usr/lib/x86_64-linux-gnu/libgstapp-0.10.so.0
libgstreamer-plugins-base0.10-0:amd64: /usr/lib/x86_64-linux-gnu/libgstinterfaces-0.10.so.0
libgstreamer-plugins-base0.10-0:amd64: /usr/lib/x86_64-linux-gnu/libgstpbutils-0.10.so.0
libgstreamer-plugins-base0.10-0:amd64: /usr/lib/x86_64-linux-gnu/libgstvideo-0.10.so.0
libgstreamer0.10-0:amd64: /usr/lib/x86_64-linux-gnu/libgstbase-0.10.so.0
libgstreamer0.10-0:amd64: /usr/lib/x86_64-linux-gnu/libgstreamer-0.10.so.0
libsqlite3-0:amd64: /usr/lib/x86_64-linux-gnu/libsqlite3.so.0
libxcomposite1:amd64: /usr/lib/x86_64-linux-gnu/libXcomposite.so.1
libxml2:amd64: /usr/lib/x86_64-linux-gnu/libxml2.so.2
libxslt1.1:amd64: /usr/lib/x86_64-linux-gnu/libxslt.so.1

apt-fileเป็นแซวที่จะให้แพคเกจ 64 บิตให้ฉันดังนั้นฉันต้องทำsudo apt-file -a amd64 updateเพื่อบังคับให้มีรายชื่อไฟล์ 64 บิต

ตอนนี้ให้ฉันอธิบายสิ่งข้างต้นทั้งหมด:

  • ldd /path/to/binary: อ่านไบนารีและบอกคุณว่าไลบรารีสัญลักษณ์และอื่น ๆ ที่จำเป็นคืออะไร
  • dpkg -S: ค้นหาแพ็คเกจที่ให้ไฟล์ที่ติดตั้งเฉพาะ
  • awk, sedและgrep: กำลังแก้ไขกระแสข้อความเพื่อประมวลผลเฉพาะส่วนที่น่าสนใจหรือแสดงผลลัพธ์ที่ต้องการ
  • |, $(...) : อันแรกอนุญาตให้ฉันไพพ์เอาต์พุตของคำสั่งไปยังคำสั่งอื่น, และในภายหลังอนุญาตให้ฉันเรียกใช้ / ประเมินคำสั่งก่อนที่คำสั่งหลักจะถูกเรียกใช้งาน

TL; dr เพียงแค่ติดตั้งแพ็คเกจเหล่านี้:

sudo dpkg --add-architecture amd64 ## adding 64-bits architecture package
sudo apt-get update
sudo apt-get install libgstreamer-plugins-base0.10-0:amd64 libgstreamer-plugins-base0.10-0:amd64 libgstreamer-plugins-base0.10-0:amd64 libgstreamer-plugins-base0.10-0:amd64 libgstreamer0.10-0:amd64 libgstreamer0.10-0:amd64 libsqlite3-0:amd64 libxcomposite1:amd64 libxml2:amd64 libxslt1.1:amd64 libc6:amd64 libdrm2:amd64 libffi6:amd64 libgcc1:amd64 libgl1-mesa-glx:amd64 libglapi-mesa:amd64 libglib2.0-0:amd64 libpcre3:amd64 libstdc++6:amd64 libx11-6:amd64 libx11-xcb1:amd64 libxau6:amd64 libxcb1:amd64 libxcb-dri2-0:amd64 libxcb-dri3-0:amd64 libxcb-glx0:amd64 libxcb-present0:amd64 libxcb-sync1:amd64 libxdamage1:amd64 libxdmcp6:amd64 libxext6:amd64 libxfixes3:amd64 libxrender1:amd64 libxshmfence1:amd64 libxxf86vm1:amd64 zlib1g:amd64

คุณต้องติดตั้งเคอร์เนล 64 บิต


root @ umar: / home / umar / Desktop # sudo dpkg -i viber.deb dpkg: ข้อผิดพลาดในการประมวลผลไฟล์เก็บถาวร viber.deb (- ติดตั้ง): สถาปัตยกรรมแพ็กเกจ (amd64) ไม่ตรงกับระบบ (i386) พบข้อผิดพลาดขณะประมวลผล: viber.deb
Umar Mukthar

sudo dpkg --add-architecture amd64@AUmarMukthar
Braiam

ฉันลองคำสั่งของคุณ ไม่มีความคืบหน้าเพิ่มเติม
A Umar Mukthar

2
"เป็นไปได้ที่คุณต้องติดตั้งเคอร์เนล 64 บิตเช่นกัน" - ไม่น่าจะเป็นไปได้ แต่แน่นอน 100% เคอร์เนล 32 บิตไม่มีสิ่งที่ต้องทำในการตั้งค่าสภาพแวดล้อมกระบวนการ 64
Mat


11

ไม่สามารถติดตั้งซอฟต์แวร์ที่รองรับเพียง 64 bit arch บนระบบปฏิบัติการ 32 บิตในขณะที่ reverse เป็นจริง ในการติดตั้งซอฟต์แวร์ 64 บิตคุณจะต้องมีฮาร์ดแวร์ที่รองรับระบบปฏิบัติการ 64 บิตและ 64 บิตที่ทำงานอยู่ด้านบน

นอกจากนี้ฉันอยากจะพูดถึงว่ามันเป็นไปไม่ได้ที่จะติดตั้ง 64 บิต OS เป็นเครื่องเสมือนบนฮาร์ดแวร์ที่รองรับสถาปัตยกรรม 32 บิตเท่านั้น ฮาร์ดแวร์ของคุณควรสนับสนุนสถาปัตยกรรม 64 บิตพร้อมกับการสนับสนุนการจำลองเสมือนเพื่อสร้างเครื่องเสมือน 64 บิต


1
คุณสามารถติดตั้ง 64 บิต vm บนเครื่อง 32 บิตเช่นเดียวกับที่คุณสามารถติดตั้งหนึ่งในสถาปัตยกรรมใด ๆ ดูqemuเช่น โปรดทราบว่ามันจะช้าเป็นพิเศษ
Vality

@Vality คำตอบของคุณน่าจะดี คุณช่วยปรับปรุงคำตอบให้ดีขึ้นได้ไหม
Umar Mukthar

@ AUmarMukthar ฉันว่ามีประโยชน์เลยเหรอ? หากยังขาดอยู่โปรดแสดงความคิดเห็นและฉันจะดูว่าฉันสามารถปรับปรุงได้หรือไม่
Vality

10

ฉันต้องบอกว่าคุณไม่จริงเกี่ยวกับ

คอมพิวเตอร์ของฉันรองรับเฉพาะ 32 บิต

ตามผลลัพธ์ของการใช้งานlscpuUbuntu รุ่นที่ติดตั้งเป็น 32 บิตในขณะที่ระบบของคุณสามารถรองรับแอปพลิเคชัน 64 บิตหากคุณต้องการติดตั้งแอปพลิเคชัน 64 บิตคุณต้องติดตั้ง Ubuntu OS 64 บิต ดูบรรทัดด้านล่างนี้:

Architecture: i686              # <-- your kernel is 32 bit (32 bit Ubuntu)
CPU op-mode(s): 32-bit, 64-bit  # <-- your cpu can handle 32 or 64 bit instructions
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1 
Core(s) per socket: 2 
Socket(s): 1 
Vendor ID: GenuineIntel 
CPU family: 6 
Model: 23 
Stepping: 10 
CPU MHz: 2800.000 
BogoMIPS: 5586.12 
Virtualization: VT-x 
L1d cache: 32K 
L1i cache: 32K 
L2 cache: 2048K

ดาวน์โหลดและติดตั้ง Ubuntu 64 บิต 14.04.1 แล้วติดตั้งViberเช่นกัน


ถูกต้องถ้าฉันทำฉันจะสูญเสียแอปพลิเคชันอื่น ๆ ที่ติดตั้งไปแล้ว .. ดังนั้นฉันเท่านั้นที่กำลังค้นหาวิธีแก้ปัญหา ๆ ขอบคุณสำหรับข้อมูลของคุณ +1 สำหรับความพยายามของคุณ
Umar Mukthar

10

คุณสามารถติดตั้งซอฟต์แวร์ 64 บิตบนเครื่องที่สร้างด้วยฮาร์ดแวร์ 32 บิตในลักษณะเดียวกับที่คุณสามารถรันซอฟต์แวร์ ARM บนเป้าหมาย x86 โดยใช้การแปลแบบไดนามิก

โดยทั่วไปซอฟต์แวร์ชิ้นหนึ่งเช่นqemuอยู่ระหว่างโปรแกรมและคอมพิวเตอร์ของคุณทำการแปลจากชุดคำสั่ง AMD64 ไปเป็น x86 (อาจเป็น i686) หนึ่งชิ้น (ด้วยประสิทธิภาพที่รุนแรงมากซึ่งเป็นที่ยอมรับในกรณีของคุณ หลีกเลี่ยงได้โดยสิ้นเชิง)

ให้คุณใช้ Ubuntu คุณมีเอกสารที่ยอดเยี่ยมเกี่ยวกับวิธีการตั้งค่านี้ชิ้นส่วนของเอกสารเกี่ยวกับวิธีการตั้งค่านี้โดยทั่วไปคุณมีหนึ่งในสองตัวเลือกคุณสามารถเรียกใช้โปรแกรมในสภาพแวดล้อม VM 64 บิตที่สมบูรณ์พร้อมเคอร์เนลของตัวเองหรือสิ่งที่ฉันคิดว่าคุณต้องการที่นี่คือการสร้างภาพพื้นที่ผู้ใช้ซึ่งใช้ thunking (ฉันไม่คิดว่ามันเป็นเรื่องปกติ เรียกว่า thunking วันนี้ แต่ลืมคำใหม่) เพื่อแปลการโทรของระบบจาก 64 บิตเป็น 32 บิตเพื่อให้คุณสามารถใช้เคอร์เนลของคุณเอง

ตอนนี้คู่มืออธิบายสิ่งนี้ดีกว่าฉัน แต่ในระยะสั้นคุณต้องติดตั้ง qemu และแพ็คเกจ qemu-kvm-extras-static จากนั้นใช้ qemu-debootstrap เพื่อตั้งค่าสภาพแวดล้อมและไลบรารีสำหรับโปรแกรม 64 บิตของคุณ จากนั้นคุณต้องใช้ binfmt_misc และตัวแปลแบบคงที่ qemu (qemu-arch-static ในกรณีของคุณอาจเป็น x86_64, x64 หรือ AMF64) เพื่อเรียกใช้โปรแกรมของคุณภายในสภาพแวดล้อม

โปรดทราบว่าอย่างไรก็ตาม CPU ของคุณดูเหมือนจะรองรับคำสั่ง 64 บิตดังนั้นจึงอาจเป็นไปได้สำหรับคุณที่จะติดตั้ง Ubuntu แบบ 64 บิตคุณสามารถทำได้โดยไม่ต้องใช้รหัสจำลอง x86 ในเครื่อง AMD64 และถ้าคุณสามารถทำได้ ถ้าคุณต้องการค้นพบ qemu และโลกของการจำลองสถาปัตยกรรม (อาจเข้ามาภายหลังหากคุณได้รับโปรแกรมที่สร้างขึ้นเพื่อพูด ... ARM เช่นสิ่งที่สร้างขึ้นสำหรับโทรศัพท์) ฉันขอแนะนำให้คุณไปข้างหน้า แต่ระวัง บางครั้งบางสิ่งบางอย่างก็เล่นซอหรือดีบั๊กเล็กน้อยก่อนที่มันจะทำงานได้ดี


5
การเรียงลำดับของ "การแปลไดนามิก" การทำงานแบบเสมือนนี้จะช้าเจ็บปวด และเนื่องจากเขามีระบบ 64 บิตในตอนแรกมันจะเป็นการดีที่สุดที่จะติดตั้งระบบปฏิบัติการ 64 บิต
Michael Hampton

@MichaelHampton ฉันรู้ว่ามันจะช้าและได้ตั้งข้อสังเกตว่าแน่นอนฉันยังได้ตั้งข้อสังเกตว่าเขาอาจจะดีกว่าด้วยระบบปฏิบัติการ 64 บิต แต่ฉันก็ต้องการที่จะให้คำตอบที่จะตอบคำถามที่ถาม
Vality

ฉันไม่คิดว่า "การเข้าชมที่มีประสิทธิภาพ" อธิบายอย่างเพียงพอว่ามันจะช้าแค่ไหน :)
Michael Hampton

@MichaelHampton True ตอนนี้มีความสุข? ;)
Vality

ใช่ตอนนี้ฉันชอบมัน :)
Michael Hampton

1

อ่านเกี่ยวกับแอปพลิเคชัน 32 บิต (x86) และ 64 บิต:
http://www.techsupportalert.com/content/32-bit-and-64-bit-explained.htm

บางครั้งอาจเป็นไปได้ว่าแอปพลิเคชันหรือแพคเกจเดียว [ไฟล์. deb หนึ่งไฟล์] ทำหน้าที่เป็นทั้งสองอย่างหลังการติดตั้ง
เช่นx86 app on x86 OSและx64 app on x64 OS


x86 application on x64 OSนอกจากนี้ยังเป็นไปได้ติดตั้ง
αғsнιη

-1

หากคุณใช้ระบบ 32 บิตให้ใช้

sudo dpkg --force-architecture -i viber.deb

ลิงค์: วิธีการติดตั้ง Viber บน Ubuntu 13.10, 32 บิต


ที่จริงแล้วก็ใช้งานไม่ได้เช่นกัน ดาวน์โหลด viber สำหรับ windows และติดตั้งกับไวน์ได้ผลสำหรับฉัน
สแตน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.