32 bit makineye 64 bit .deb dosyası nasıl yüklenir?


17

Ubuntu 14.04'üm var. Kısa süre önce Viber'i indirdim . Viber .deb dosyası 64 bit mimariye sahiptir. Bilgisayarıma yüklemek istiyorum, ancak bilgisayarım sadece 32 bit'i destekliyor.

Koşu çıkışı lscpuaşağıdaki gibidir:

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 bit desteklemediğinden nasıl emin olabilirsiniz? 64 bit programlar çalıştırmanız gerekiyorsa 64 bit işletim sistemi yüklemeniz gerekir.
muru

Bazı yazılımların bu işi yaptığını duydum ...
Sorduğum

VM'leri kullanmanız gerekecek: askubuntu.com/questions/180761/…
muru

lscpuTerminalde çalışmanın çıktısı nedir ?
αғsнιη

7
Evet, sistem olup 64 bit yetenekli ve gereken yeniden bu soruna içine çalışacaktır, çünkü ilk fırsatta yeniden yükleyin ve daha da acı, daha sonra başa olacaktır.
Michael Hampton

Yanıtlar:


22

Donanımınızın 64 bit'i desteklemesi şartıyla, aşağıdakileri yapar:

CPU çalışma modları: 32 bit, 64 bit

ve paket çok amaçlı kullanım için hazırlandı, bu da doğru:

 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

Uygulamayı çalıştırmanız gereken paketin bağımlılığı olan gerekli 64-bit kitaplıkları ve ikili dosyaları sanal sıfır performans etkisi ile yükleyebilirsiniz. Benim durumumda, paketi gayet iyi kurdum:

$ 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) ...

Ve sonra sorun yaşamaya başladı ...

Paket yöneticileri, paketlerine herhangi bir bağımlılık belirtmemeleri gerektiğine karar verdiler,

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

aslında ihtiyaç duydukları:

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

bu yüzden manuel olarak eksik olan kütüphaneleri bulmalı ve kurmalısınız ! Doğru araçları biliyorsanız bu kolaydır. apt-fileburada da kullanışlı geliyor http://packages.ubuntu.com işlevselliği " Paket içeriğinde arama" da iyi geliyor. Ama devam ettim ve onları aradım:

Bu dosyalar sistemime zaten yüklenmiş, sadece paket adını kopyalamanız gerekiyor, iki nokta üst üste ile biten amd64. Paket adlarını şu şekilde kopyalamanız gerekir:

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

Bunları kullanarak yoktu, hangi kullanarak elde 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-filebana 64-bit paketleri vermek için bir alay oldu, bu yüzden sudo apt-file -a amd64 update64-bit dosya listesine sahip olmaya zorlamak zorunda kaldım.

Şimdi yukarıdakilerin ne olduğunu açıklayayım:

  • ldd /path/to/binary: bir ikili dosyayı okur ve gerekli kitaplıkların, sembollerin vb. neler olduğunu söyler.
  • dpkg -S: hangi paketlerin belirli bir kurulu dosya sağladığını araştırır.
  • awk, sedve grep: metin akışını yalnızca ilginç parçaları işlemek veya istenen çıktıyı göstermek için değiştiriyorlar.
  • |, $(...): Birincisi bir komutun çıktısını diğerine geçirmeme izin verir ve daha sonra ana komutlar yürütülmeden önce bir komutu yürütmeme / değerlendirmeme izin verir.

TL; dr sadece şu paketleri kur:

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 bit çekirdeği de kurmanız gerekir.


root @ umar: / home / umar / Masaüstü # sudo dpkg -i viber.deb dpkg: hata işleme arşivi viber.deb (--install): paket mimarisi (amd64) sistemle eşleşmiyor (i386) İşleme sırasında hatalarla karşılaşıldı: viber.deb
Umar Mukthar

@AUmarMukthar sudo dpkg --add-architecture amd64.
Braiam

Emrini denedim. Başka ilerleme yok
A Umar Mukthar

2
"64 bit çekirdeği de kurmanız gerekebilir." - bu mümkün değil,% 100 kesin. 32 bitlik bir çekirdek, 64 işlem ortamı kurmak için gerekenlere sahip değildir.
Mat


11

32 bit işletim sistemine yalnızca 64 bit arkı destekleyen bir yazılım yüklemek mümkün değildir, bunun tersi doğrudur. 64 bit bir yazılım yüklemek için, 64 bit ve 64 bit işletim sistemini destekleyen bir donanıma ihtiyacınız olacaktır.

Ayrıca, 64 Bit işletim sistemini Sanal makine olarak yalnızca 32 bit mimariyi destekleyen bir donanıma kurmanın mümkün olmadığını belirtmek isterim. 64 Bit sanal makineler oluşturmak için donanımınızın sanallaştırma desteği ile birlikte 64 Bit mimariyi desteklemesi gerekir.


1
Herhangi bir mimariden birini kurabileceğiniz gibi 32 bit makineye 64 bit vm yükleyebilirsiniz, örneğin qemu'ya bakın. Ancak olağanüstü yavaş olacağını unutmayın.
Vality

@Vality Yanıtınız iyi görünüyor. Cevabı daha da geliştirebilir misiniz?
Bir Umar Mukthar

@AUmarMukthar Bu kadar kullanışlı mıyım? Hala eksikse lütfen yorum yapın ve onu geliştirip geliştiremeyeceğimi göreceğim.
Vality

10

Hakkında doğru olmadığını söylemeliyim

bilgisayarım sadece 32 bit'i destekliyor

lscpuUbuntu sürümünüzü çalıştırmanın çıktısına göre 32 bit iken Sisteminiz 64 bit uygulamayı destekleyebiliyorsa 64 bit uygulama yüklemek isterseniz 64 bit Ubuntu OS yüklemeniz gerekir. aşağıdaki satırlara bakın:

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

İndirme ve yüklemek yüklemek sonra 64 bit Ubuntu 14.04.1 ve Viber sıra.


Bu doğru yaparsam ben şimdiye kadar yüklü diğer uygulamaları kaybedersiniz .. Yani sadece bir çözüm arıyorum. Herhangi bir bilgi için teşekkürler. Çabalarınız için +1
A Umar Mukthar

10

64 bit yazılımları, 32 bit donanıma sahip bir makineye dinamik çeviriyi kullanarak x86 hedefinde diyelim ARM yazılımını çalıştırabileceğiniz şekilde yükleyebilirsiniz.

Temel olarak, qemu gibi bir yazılım , programlar ve bilgisayarınız arasında oturur ve AMD64 komutundan x86'ya (muhtemelen i686) bir tanesine (muhtemelen çok ciddi bir performans isabetiyle) tamamen önlenebilir).

Ubuntu kullandığınız düşünüldüğünde, bunu nasıl ayarlayacağınız konusunda mükemmel bir belgelere sahipsiniz . Temel olarak iki seçenekten birine sahipsiniz, programı kendi çekirdeği ile tam bir 64 bit VM ortamında çalıştırabilirsiniz veya burada istediğini düşündüğüm kullanıcı alanı görselleştirme, bu thunking kullanıyor (yaygın olduğunu düşünmüyorum Bugünlerde thunking denir, ancak yeni kelimeyi unutun) kendi çekinizi kullanabilmeniz için 64 bit'ten 32 bit'e kadar sistem çağrılarını çevirmek için.

Şimdi kılavuz bunu benden daha iyi açıklıyor, ancak kısaca qemu ve qemu-kvm-extras-static paketleri kurmanız ve ardından 64 bit programınız için bir ortam ve kütüphaneler kurmak için qemu-debootstrap'i kullanmanız gerekiyor. Daha sonra binfmt_misc ve statik qemu yorumlayıcısını (qemu-arch-static, sizin durumunuzda muhtemelen x86_64, x64 veya AMF64) kullanmanız gerekir.

Bununla birlikte, CPU'nuz 64 bit talimatları destekliyor gibi görünüyor, bu nedenle 64 bit ubuntu yüklemeniz mümkün olabilir, bir AMD64 makinesinde herhangi bir emülasyon çalıştırma x86 kodu olmadan yapabilirsiniz ve bunu yapabiliyorsanız daha kolay olabilir, Öte yandan qemu ve mimari öykünme dünyasını keşfetmek istiyorsanız (daha sonra bir program için inşa edilmiş bir program alırsanız ARM ... daha sonra elinize gelebilir) Bir telefon için inşa edilmiş bir şey gibi ARM) devam etmenizi öneririm ama dikkat edin , işler iyi çalışmadan önce bazen biraz uğraşmak veya hata ayıklamak gerekir.


5
Bu tür "dinamik çeviri" sanallaştırma acı verici bir şekilde yavaş olacaktır . İlk etapta 64 bit bir sisteme sahip olduğu için, sadece 64 bit bir işletim sistemi kurmak en iyisi olacaktır.
Michael Hampton

@MichaelHampton Yavaş olacağını biliyorum ve gerçekten de 64 bit işletim sistemi ile daha iyi olabileceğini de belirtmiştim, ancak aynı zamanda sorulan soruya cevap verecek bir cevap vermek istedim.
Vality

Ben "performans hit" ne kadar yavaş olacağını yeterince açıkladı düşünmüyordu. :)
Michael Hampton

@MichaelHampton True. Şimdi mutlu? ;)
Vality

Evet, şimdi beğendim. :)
Michael Hampton


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.