一半君的总结纸

听话只听一半君

CentOS 6.3 x64下无root权限”乱搞”编译pidgin 2.10.7和pidgin-lwqq Attempt 2 Succeeded

上次乱搞失败后不死心,遂继续乱搞,这次终于成功了

  1. 正常方式编译pidgin
    去官网下载source,然后

    # 我后来把--prefix改成了我想装的地方了,不然不知道怎么改plugins的路径
    # 因为公司机器各种依赖packages都没有,我又没权限装,只好都禁用了
    ./configure --disable-screensaver --disable-gtkspell --disable-vv --disable-meanwhile --disable-avahi --disable-nm --prefix=/usr/tmp/tmp/pidgin-2.10.7-install
    make
    make install
    
  2. 乱搞方式编译pidgin-lwqq
    官网说明,进行如下操作

    git clone https://github.com/xiehuc/pidgin-lwqq.git
    cd pidgin-lwqq
    git submodule init
    git submodule update
    mkdir build
    cd build
    cmake ..
    make
    # 因为我没root权限,所以只好随便“装”到一个地方,然后再自己拷到pidgin的目录里
    make install DESTDIR=/usr/tmp/tmp/pidgin-lwqq-install
    
    • 在cmake ..的时候,可能会看到如下的错误:
      libpurple version:Package purple was not found in the pkg-config search path.
      Perhaps you should add the directory containing `purple.pc'
      to the PKG_CONFIG_PATH environment variable
      No package 'purple' found
      

      此时可以

      setenv PKG_CONFIG_PATH /usr/tmp/tmp/pidgin-2.10.7-install/lib/pkgconfig
      

      这个目录里已经有一些pc文件了,可以对照着其他的自己瞎凑一个purple.pc出来

    • 如果看到如下错误提示:
      -- checking for module 'mozjs185'
      --   package 'mozjs185' not found
      

      rpm.pbone.net搜可以知道这个文件在叫做js-devel的package里,显然公司机器没有安装,而我又没权限装,这里我采取的办法是把家里vmware workstation里装的centos 6.3里的libmozjs185.so等一些文件拷到/usr/tmp/tmp/pidgin-2.10.7-install/lib,然后

      setenv PKG_CONFIG_PATH /usr/tmp/tmp/pidgin-2.10.7-install/lib/pkgconfig:{$PKG_CONFIG_PATH}
      

      然后也拼凑一个mozjs185.pc存到上面的pkgconfig目录下

      然后cmake ..就没有错误的完成了,可以看到如下提示:

      /usr/tmp/tmp/pidgin-2.10.7-install/share/
      ===============================================
      -- With Libev (Option)     : NO
      -- Native Language Support : true
      -- Install Path            : /usr/tmp/tmp/pidgin-2.10.7-install/lib/purple-2
      ===============================================
      -- Configuring done
      -- Generating done
      -- Build files have been written to: /usr/tmp/tmp/pidgin-lwqq/build
      
    • 我忘记是哪一步需要autoconf213 package了,我的系统里没有,但是我又没有权限装,所以:去到 http://ftp.gnu.org/gnu/autoconf/ 下载 source,然后编译
      加到相应的LD_LIBRARY_PATH路径下,或者复制到lib目录里之后make的时候会看到如下错误提示:

      Linking C shared module libwebqq.so
      /usr/bin/ld: cannot find -lpurple
      collect2: ld returned 1 exit status
      make[2]: *** [src/libwebqq.so] Error 1
      make[1]: *** [src/CMakeFiles/webqq.dir/all] Error 2
      make: *** [all] Error 2
      

      我记得好像是打开了/usr/tmp/tmp/pidgin-lwqq/build/src/CMakeFiles/webqq.dir/link.txt 把-lpurple -lmozjs185都删掉,然后加上-L/usr/tmp/tmp/pidgin-2.10.7-install/lib,当然我把libmozjs185.so.1.0等一些需要的文件都复制到那里了

    • make的时候还有可能出现错误提示:
      /usr/tmp/tmp/pidgin-lwqq/src/js.c:5:19: error: jsapi.h: No such file or directory
      /usr/tmp/tmp/pidgin-lwqq/src/js.c:8: error: expected specifier-qualifier-list before ‘JSRuntime’
      /usr/tmp/tmp/pidgin-lwqq/src/js.c:13: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘global_class’
      ...
      

      解决方法是乱搞,去rpm.pbone.net下载js-devel for fedora15(因为他和centos6.3是一个时代的,内核版本相近?)的package,然后直接解开

      rpm2cpio js-devel-1.8.5-6.fc15.x86_64.rpm | cpio -idmv
      

      把include目录里js下的header files统统拷到pidgin-2.10.7/include下 然后就过了

  3. 最后使用 make install DESTDIR=/usr/tmp/tmp/pidgin-lwqq-install 之后,去安装目录里一顿乱拷,把文件都复制到pidgin-2.10.7-install目录下的相应目录即可
    我这样编译出来以后,又把pidgin整个目录拷到了别的地方, 显然我不能把他放在/usr/tmp/tmp里,可是发现他总是去/usr/tmp/tmp/pidgin-2.10.7-install/lib/purple-2下面找插件,不知道怎么改,所以我又重compile了一遍,在configure的时候就把–prefix设到了我想装的但是又有权限写入的地方,(但是这样一来我就不知道要如何复制给别人用了)

ps: 我还compile了pidgin-gnome-keyring插件,这样才不会把密码明文保存在~/.purple/accounts.xml里

效果图:

pidgin

2013/11/08:

edit: 因为单人聊天发不出去图了,所以试了下dev branch,,需要libev,和libev-devel, 同上下载source后编译,复制header files 到include目录下,.pc文件到pkgconfig目录下,.so文件到lib目录下,即可编译成功,依然发不出去图….

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: