spice-client && virt-viewer等在Ubuntu16.04(x64)下的編譯安裝的一些問題

源碼下載地址:
https://www.spice-space.org/download.html
spice-protocol: https://www.spice-space.org/download/releases/spice-protocol-0.12.15.tar.bz2
spice-gtk-0.35: https://www.spice-space.org/download/gtk/spice-gtk-0.35.tar.bz2
usbredir-0.8: https://www.spice-space.org/download/usbredir/usbredir-0.8.0.tar.bz2
virt-viewer-8.0: https://virt-manager.org/download/sources/virt-viewer/virt-viewer-8.0.tar.gz


注:以下流程未安裝gstreamer。
如需安裝gstreamer,則安裝如下:

sudo apt-get install libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools

如果編譯時提示找不到gstreamer,則需要:

sudo apt install libgstreamer-plugins-base1.0-dev

如果無法安裝,可能需要修改或者添加apt的安裝源。


編譯spice-server

這邊也順手寫一下spice-server在CentOS下的編譯安裝吧。

獲取、修改源碼

wget https://www.spice-space.org/download/releases/spice-server/spice-0.14.1.tar.bz2

install deps && config && make,缺啥包你們自己補吧
注意,這裏沒有添加gstreamer的支持,你可以自己不上gstreamer的相關包,然後–enable-gstreamer=yes

yum install spice-protocol
yum install glib2 glib2-devel
yum install pixman pixman-devel
yum install celt051 celt051-devel
yum install openssl openssl-devel
yum install libjpeg-turbo libjpeg-turbo-devel
yum install opus opus-devel
yum install cyrus-sasl cyrus-sasl-devel lz4 lz4-devel usbredir*
./configure --sysconfdir=/etc --localstatedir=/var --libdir=/usr/lib64 --enable-gtk-doc-pdf=no --enable-gtk-doc-html=no --enable-celt051 --enable-manual=no --enable-gstreamer=no
make -j8


#for spice-protocol

  1. cd spice-protocol-0.12.15/
  2. ./configure --prefix=/usr --libdir=/usr/lib 或者lib64
  3. make
  4. sudo make install

#for spice-gtk-0.35

安裝依賴包:

apt install libpixman-1-dev libssl-dev libgtk-3-dev libjpeg-turbo8-dev libopus-dev liblz4-dev libpulse-dev libsasl2-dev libcacard-dev usbredir* intltool

config:

./configure --prefix=/usr --libdir=/usr/lib --enable-gtk-doc-html=no --enable-usbredir=yes

> > --enable-celt051 可要可不要
> > --enable-gstaudio=yes --enable-gstvideo=yes 可要可不要

如果報錯:

/usr/local/lib/libusbredirhost.so: undefined reference to `libusb_set_option’

則卸載usbredir:

sudo apt remove libusbredirparser1
下列軟件包將被【卸載】:
libusbredirhost-dev libusbredirhost1 libusbredirparser-dev
libusbredirparser1

如果報錯:

checking for USBREDIR… no
configure: error: usbredir support explicitly requested, but some required packages are not available

則需要編譯安裝usbredir:

  1. tar xvjf usbredir-0.8.0.tar.bz2
  2. cd usbredir-0.8.0/
  3. ./configure
    或者 ./configure --prefix=/usr --libdir=/usr/lib (建議用這個)

此時報錯:

checking for LIBUSB… no
configure: error: Package requirements (libusb-1.0 >= 1.0.9) were not met:

No package ‘libusb-1.0’ found

然後:

sudo apt install libusb-1.0-0-dev

報錯:

下列軟件包有未滿足的依賴關係:
libusb-1.0-0-dev : 依賴: libusb-1.0-0 (= 2:1.0.20-1) 但是 2:1.0.22-2 正要被安裝
        推薦: libusb-1.0-doc 但是它將不會被安裝
E: 無法修正錯誤,因爲您要求某些軟件包保持現狀,就是它們破壞了軟件包間的依賴關係。

解決辦法: 使用aptitude降級 或者 dpkg -i 安裝libusb-1.0-0-dev_1.0.22-2_amd64.deb

  1. sudo apt-get install aptitude
  2. sudo aptitude install libusb-1.0-0=2:1.0.20-1
  3. sudo apt install libusb-1.0-0-dev

然後繼續編譯安裝usbredir-8.0


#for virt-viewer-8.0

./configure --prefix=/usr --libdir=/usr/lib --without-gtk-vnc --without-ovirt


tips:

在使用過程中,有個小細節需要注意。就是如果使用spice-gtk的spicy,全屏模式下是通過 shift + F12來退出全屏。
而virt-viewer,編譯成功之後,生成的可執行文件名字是remote-viewer,就算是走spice協議,也無法通過 shift + F12來退出全屏,而是通過屏幕頂部的懸浮按鈕。

究其原因,因爲remote-viewer和spicy實際上是調用libspice-client-gtk-3.0.so和libspice-client-glib-2.0.so,在此基礎上分別單獨實現的gtk程序,二者的實現方法有點區別。
具體區別,後面有空再講。哈哈哈哈哈

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章