012 Linux网易云音乐移植安装详解(以centos7、Fedora27为例)

参考文章:
centos7安装网易云音乐
http://blog.csdn.net/u010526125/article/details/72526694

结合rpm,rpm2cpio,cpio提取rpm包的特定文件
http://blog.csdn.net/cloud_ll/article/details/20709515

关于libstdc++.so.6这个库与网易云音乐版本不兼容问题
 https://segmentfault.com/a/1190000006863994

测试安装过版本:

1.0.0--16.04--x86.64:netease-cloud-music_1.0.0_amd64_ubuntu16.04.deb

1.0.0-2--14.04--x86.64:netease-cloud-music_1.0.0-2_amd64_ubuntu14.04.deb

1.1.0--16.04--x86.64:netease-cloud-music_1.1.0_amd64_ubuntu.deb

备注:

针对centos7:在虚拟机中1.0.0--ubuntu16.04--x86.64运行最流畅,1.1.0--ubuntu16.04--x86.64因为需要使用vlc所以运行起来卡顿。

针对fedora27:只能安装1.1.0--ubuntu16.04--x86.64,其他两个版本所需glib库太老了,在fedora27上会有错误。

正文:
一、安装环境
cat /etc/redhat-release

centos:CentOS Linux release 7.4.1708 (Core) 

fedora :Fedora release 27 (Twenty Seven)

二、下载 1.0.0-ubuntu16.04版( netease-cloud-music_1.0.0_amd64_ubuntu16.04.deb) 
各版本下载链接,其他版本自己拼接:
http://s1.music.126.net/download/pc/netease-cloud-music_1.0.0_amd64_ubuntu14.04.deb
http://s1.music.126.net/download/pc/netease-cloud-music_1.0.0_amd64_ubuntu16.04.deb
http://s1.music.126.net/download/pc/netease-cloud-music_1.0.0-2_amd64_ubuntu14.04.deb
http://s1.music.126.net/download/pc/netease-cloud-music_1.0.0-2_amd64_ubuntu16.04.deb
http://d1.music.126.net/dmusic/netease-cloud-music_1.1.0_amd64_ubuntu.deb

三、解压
mkdir netease-cloud-music
mv netease-cloud-music_1.0.0_amd64_ubuntu16.04.deb  netease-cloud-music/
cd netease-cloud-music
ar -xv netease-cloud-music_1.0.0_amd64_ubuntu16.04.deb
tar Jxvf data.tar.xz

四、安装
  sudo cp -rvf usr/   /

五、设置chrome-sandbox 权限: sudo chmod 4755 /usr/lib/netease-cloud-music/chrome-sandbox 

注:1.1.0-16.04版本:neteasecloud-music_1.1.0_amd64_ubuntu.deb不需要此步。


六、添加音频解码库有关第三方源(Fedora27不需要此步骤)

1)elrepo (提供最新内核等)
sudo rpm -Uvh http://elrepo.org/linux/elrepo/el7/x86_64/RPMS/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
#yum --enablerepo=elrepo-extras --enablerepo=elrepo-testing --enablerepo=elrepo-kernel  install elrepo-release

2)epel   (提供10000多个额外拓展包)
sudo rpm -Uvh  http://mirror.centos.org/centos/7/extras/x86_64/Packages/epel-release-7-9.noarch.rpm

sudo rpm -Uvh  http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm

3)nux-dextop  (有人把其他所须相关的软体全放在这个rpm包面)
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64//nux-dextop-release-0-5.el7.nux.noarch.rpm

注:
1)ls -al  /etc/yum.repos.d/   或  yum repolist (查看已安装的源,用来确定epel, elrepo, nux-dextop 是否正确安装),

2)想添加其他源、或其他发行版、或其他版本、或以上地址失效,请前往:https://pkgs.org/,选择你的发行版和系统版本,即可看到相关的源,选择一个源进入,点击各个xxx.noarch.rpm的详情页,找到 Install Howto 项即可看到最新安装方法。


七、安装音视频解码器和qt库

安装音视频解码器:

sudo yum -y install gstreamer1-libav gstreamer1-plugins-bad-freeworld gstreamer1-plugins-base-tools gstreamer1-plugins-ugly gstreamer1-plugins-bad-free gstreamer1-plugins-good gstreamer1-plugins-base gstreamer1  gstreamer-plugins-good gstreamer-plugins-bad gstreamer-plugins-ugly


安装qt库 (构建图形界面)
sudo yum install qt5-qtbase-gui qt5-qtx11extras qt5-qtmultimedia


八、解决未满足依赖

1)查看相关依赖

查看所需全部依赖:ldd  /usr/lib/netease-cloud-music/netease-cloud-music   #  注:1.1.0-16.04是   ldd  /usr/bin/netease-cloud-music

查看未满足的依赖:ldd  /usr/lib/netease-cloud-music/netease-cloud-music | grep "not found"  #注fedora27因为我安装过Gnome桌面和KDE桌面,依赖都装完了,所以没有结果。
执行结果:
/bin/netease-cloud-music: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found(required by /bin/../lib/netease-cloud-music/lib/libcef.so)
/bin/netease-cloud-music: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found(required by /bin/../lib/netease-cloud-music/lib/libcef.so)
/bin/netease-cloud-music: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found(required by /bin/../lib/netease-cloud-music/lib/libcef.so)/bin/netease-cloud-music:libXss.so.1 => not found


2)解决:libXss.so.1 => not found
前往:https://pkgs.org   搜索 libXss.so.1
看到它来自:  libXScrnSaver-1.2.2-6.1.el7.i686.rpm 这个包,点击进详情页面,可以找到下载方式(在Download下),安装方式(在Install Howto 下),及该包包含的文件(在Files下)。然后使用Install Howto中推荐方式安装它:
 yum install libXScrnSaver

3)解决:/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found类似问题:
网易云音乐,有道字典在CentOS Linux release 7.2.1511 下不能运行的问题
原因:由于开发人员使用的更高版本的gcc,而centos7上面使用的gcc和对应的动态链接库版本过低
解决方式 一:下载高版本的gcc进行编译安装(我使用此法,安装的是gcc7.2.0。)
具体方法:http://blog.csdn.net/qq_15304853/article/details/78941264  或者  https://segmentfault.com/a/1190000006863994
解决方式二:升级libstdc++.so.6和glibc

1、升级libstdc++.so.6
前往:https://pkgs.org   搜索 libstdc++.so.6,注意要的是64位的软件包。
找到centos7中相关包: libstdc++-4.8.5-16.el7_4.1.i686.rpm,属于gcc4.8.5,进入软件包详情页,找到 Provides项 ,查看到包含标准库版本为:libstdc++.so.6(GLIBCXX_3.4.19),同时Files项中包含文件如下:
/usr/lib/libstdc++.so.6
/usr/lib/libstdc++.so.6.0.19

不包含`GLIBCXX_3.4.21',达不到要求,重新搜索,在 fedora27发行版里找到一个含有libstdc++.so.6高版本的软件包:libstdc++-7.2.1-2.fc27.x86_64.rpm

找到 Provides项 ,查看到包含标准库版本为:libstdc++.so.6(CXXABI_1.3)(64bit) 到 libstdc++.so.6(GLIBCXX_3.4.24)(64bit),含有3.4.20、3.4.21版本,满足要求。

下载:libstdc++-7.2.1-2.fc27.x86_64.rpm

下载地址(在Download里包名上右键:复制链接地址):http://dl.fedoraproject.org/pub/fedora/linux/releases/27/Everything/x86_64/os/Packages/l/libstdc++-7.2.1-2.fc27.x86_64.rpm

下载方式一:curl -C  -O  http://dl.fedoraproject.org/pub/fedora/linux/releases/27/Everything/x86_64/os/Packages/l/libstdc++-7.2.1-2.fc27.x86_64.rpm

下载方式二:wget  -C   http://dl.fedoraproject.org/pub/fedora/linux/releases/27/Everything/x86_64/os/Packages/l/libstdc++-7.2.1-2.fc27.x86_64.rpm

提取软件包中libstdc++.so.6:rpm2cpio ./libstdc++-5.3.1-6.fc22.x86_64.rpm | cpio -id
升级替换原来版本:

sudo cp usr/lib64/libstdc++.so.6.0.21 /usr/lib64/

sudo ln -sf /usr/lib64/libstdc++.so.6.0.21 /usr/lib64/libstdc++.so.6


2、升级glibc
前往:https://pkgs.org   搜索 glibc,找到 Fedora27(因为Fedora上软件都是最新的,而它的最高版本是27) 提供的64位版本:glibc-2.26-15.fc27.x86_64.rpm.

下载:wget  http://dl.fedoraproject.org/pub/fedora/linux/releases/27/Everything/x86_64/os/Packages/g/glibc-2.26-15.fc27.x86_64.rpm

安装:yum install ./glibc-2.26-15.fc27.x86_64.rpm

出现依赖错误,无法安装。

解决方法:百度glibc,找到最新版源码:glibc-2.26.tar.xz,地址https://ftp.gnu.org/gnu/glibc/glibc-2.26.tar.xz。然后下载、编译、安装:

wget  https://ftp.gnu.org/gnu/glibc/glibc-2.26.tar.xz

tar -xvf  glibc-2.26.tar.xz
cd glibc-2.18/
mkdir build
cd build
../configure --prefix=/usr 
make  && sudo make install

4)1.1.0-16.04版本还有以下:

1、/bin/netease-cloud-music: /lib64/libdbus-1.so.3: no version information available (required by /bin/../lib/netease-cloud-music/lib/libcef.so)

注:可忽略,不影响使用。

2、libvlc.so  => not found 问题。

解决方式:

centos7:yum install vlc  --skip-broken

Dedora27:

sudo rpm -Uvh http://download1.rpmfusion.org/free/fedora/releases/27/Everything/x86_64/os/Packages/r/rpmfusion-free-release-27-1.noarch.rpm
sudo dnf  install vlc


九、运行:

root用户无法使用,以root身份启动时会无法出现界面。不知原因。

非root用户运行: netease-cloud-music
运行效果:                      

                              


十、创建启动的快捷方式
sudo vim /usr/share/applications/netease-cloud-music.desktop 
需要修改Icon图标路径,和Exec可执行命令路径,修改内容如下:
Icon=/usr/share/icons/hicolor/scalable/apps/netease-cloud-music.svg
Exec=/usr/bin/netease-cloud-music  %U
修改文件的权限:sudo chmod 744 /usr/share/applications/netease-cloud-music.desktop
修改、保存、退出后可以在应用程序中看到启动图标


十一、卸载方法:

sudo rm -rvf /usr/bin/netease-cloud-music  sudo rm -rvf /usr/lib/netease-cloud-music/ sudo rm -rvf /usr/share/doc/netease-cloud-music/ sudo rm -rvf  /usr/share/icons/hicolor/scalable/apps/netease-cloud-music.svg sudo rm -rvf /usr/share/applications/netease-cloud-music.desktop