Shadowsocks-libev: Binary releases?

Created on 14 Mar 2017  ·  36Comments  ·  Source: shadowsocks/shadowsocks-libev

Is there any plan to offer binary releases for common platforms (e.g. Linux x64)?

question wontfix

All 36 comments

Thanks!

Debian and Ubuntu dists seem to be outdated. Any way to get latest version binaries?

I think @rogers0 is already working on this. It should take a while to get the code review passed.

If I understand you correctly, the code review is for the latest version to get into the official dists, right? I don't think it addresses the needs to stay up-to-date because both Debian and Ubuntu have the concept of stable vs testing repos. Latest releases will land in testing/unstable repo, and won't be available to normal dists on stable repo.

I'm wondering if it is possible to use the GitHub Releases page to automatically release pre-built binaries for common platforms for each Git tag. For example, is it possible to get the result from Travis CI build?

It would be very troublesome to release binaries for a project like shadowsocks-libev due to the dependency hell. My suggestion is to try docker instead: https://hub.docker.com/r/easypi/shadowsocks-libev/tags/

The dependency hell is exactly the reason why I'm thinking about binary releases because it's just too much for end users to deal with the build process.

I was using the Docker release on Linux servers, which is quite convenient on platforms like hyper.sh. But getting Docker to work on ordinary VPS is another haunting task. Also it lacks build for other platforms like OpenWRT, BSD and macOS because Docker is Linux-only.

Therefore I'm wondering if it might be better to use Docker to build for OpenWRT/Linux/macOS and release the prebuilt binaries in GitHub Release page. Does Travis CI support build for those platforms?

OpenWRT is especially troublesome because of the diversity of its hardware support.

OpenWRT-shadowsocks is maintained here: https://github.com/shadowsocks/openwrt-shadowsocks

Binaries for OpenWRT are released like this: https://github.com/shadowsocks/openwrt-shadowsocks/releases/tag/v3.0.3

@rogers0 has written a script to build shadowsocks-libev from source and resolve the dependency automatically for Debian and Ubuntu distributions: https://github.com/shadowsocks/shadowsocks-libev/blob/master/scripts/build_deb.sh

Nice! So could we use the script by @rogers0 to build binary releases and put them into the GitHub Release page?

This is not a trivial task actually. At least 8 packages we should provide, for different distributions like Ubuntu 14.04, 16.04, Debian 7, 8 and different platforms like 386/x86_64.

And I believe installing from source is always the best choice for a Linux user.

What's the difference between binary release for Debian 7 and 8? I thought it would be identical.

I found the docker project provides debian packages:

https://github.com/EasyPi/docker-shadowsocks-libev#deploy-without-docker

In order provide binary releases, should have an auto-building system first. Wonder if there already have this kinds of solutions out there.

@riobard Maybe @rogers0 can help to explain the details. I think the key difference is the different versions of shared libraries on different distributions.

Yeah, we definitely need @rogers0's input to see if it is feasible. Most likely we need statically-linked binaries to be dist-independent.

What's the difference between binary release for Debian 7 and 8? I thought it would be identical.

@riobard quite different due to library dependency:

  • libc version
  • gcc version
  • libsodium version
  • whether there're libcork / libcorkipset in official repo
    etc..

@rogers0 Thanks for the response! I have several questions:

  1. Is library dependency still a problem if we statically compile?
  2. Are dynamically linked libraries required if we release it thru Debian/Ubuntu's official repos?
  3. How does it work on dists using source release? E.g. ArchLinux?
  4. What about macOS?

I'd appreciate if you could explain a bit more in detail. Thanks again! :)

@riobard Debian don't recommend static linked package, because it's not maintainable.
each package should fix its own issue (security or not), and other depended package can benefit without rebuilding. If not, there's no way we get to know when to rebuild.

Sorry, I don't know things about ArchLinux or macOS. Maybe other developer can help you.

How does it work on dists using source release? E.g. ArchLinux?

Source releases should not have the delay problem.

What about macOS?

Homebrew solves the dependencies. shadowsocks-libev is compiled in a mixed-link mode. Only libraries already in homebrew would be linked dynamically, IIRC.

It's also a problem to me. I attempted build binary package with all the dependencies static link but failed some days before.

@riobard You can get the latest OpenWRT binary package from http://openwrt-dist.tonylee.name/

And now, I build the binary package from Docker and package all the dependencies(Linux dd ss-server). Running the ss-server with the LD_LIBRARY_PATH be exported when I migrate to a new server. It works fine, but there will be very nice to provide static linked binary package 🍻.

I think it is possible to provide binary packages , just like how torproject distribute tor-browser. see https://www.torproject.org/download/download.html.en

by the way, i am continuing shadowsocks-libuv project, renamed to minisocks , and it provides linux and windows binary under the build directory. https://github.com/zhou0/minisocks/tree/master/build/bin

Please consider binary for ubnt Edge Router Light 3

If you really want it happen, please build it yourself and then ask someone to host the binary.
for building, you also need to figure out:

  • build script
  • infrastructure to run the script (and let others trust your build, e.g. reproducible build, etc..)

Docker will work, host on the github like https://github.com/xtaci/kcptun/releases.

We all trust the repo owners🍺. But need someone to contribute the build scripts.

is it ok to replace libsodium with 1.0.12 in the old one in v2.6.2/libsodium ?

@imelme I already made the build script for kcptun.
see scripts/build_deb.sh

Windows user would like to chime in here. Hopefully there will be binary release for Windows, at the very least just ss-local.exe only to make things easier for those who want to use cli client but not python. I had to go through hell just to compile the latest 3.0.5 on my Windows box. Compiling the old ss-libev was much easier long ago when I can use my linux box to cross compile. Unfortunately it's not the case anymore.

@ohohohoo Actually, shadowsocks-libev doesn't support Windows anymore. Try this one instead: https://github.com/shadowsocks/go-shadowsocks2

So, shadowsocks-libev won't provide binary releases. Build it from source code or try downstream maintainers' binary releases.

I managed to build shadowsocks libev 3.0.6 with cygwin64 (a nightmare), if anyone wants to try... https://mega.nz/#!F1FF3AjI!LQB4LnSC-elcOK-CG01dLIeNYL7286Q2h1ZpbD95eJ0

@tiliarou mysocks https://github.com/zhou0/mysocks supports native build on windows.

@zhou0 any binary already built ? What are the steps to build ? (I'm just a beginner in make/configure etc...)

@tiliarou it is a cmake based project. You can generate visual studio solutions files using cmake. You can also open the kdevelop project file using kdevelop for windows.

Looks like a very heavy build environment to setup :( I understood I need windows 10 SDK which is around 3-4 Go, + cmake +kdevelop +vb binaries and other visual studio tools...
Or can I just use kdevelop without additional files ?

@tiliarou no, CMake generates "real" .vcproj files on windows, so Visual Studio will build your project like any normal Visual Studio project. There are no makefiles involved. you dont need anything else. If using Kdevelop, you need to config mingw environment for it.

Sorry for bother you all.

Actually, shadowsocks-libev doesn't support Windows anymore. Try this one instead: https://github.com/shadowsocks/go-shadowsocks2

@madeye Since now ss-libev suports Windows, could you please consider to provide binaries for Windows users? There are third-party build now (
For Windows users, https://github.com/DDoSolitary/shadowsocks-libev-win/archive/release-x86_64.zip may help.) But a offical release is more reliable.

me too is there bin client for download?

Was this page helpful?
0 / 5 - 0 ratings

Related issues

jzp820927 picture jzp820927  ·  3Comments

qianguozheng picture qianguozheng  ·  4Comments

zhfreal picture zhfreal  ·  4Comments

yuhaiyang picture yuhaiyang  ·  4Comments

piscesmk2013 picture piscesmk2013  ·  4Comments