Client: Make a console only version of the owncloud client

Created on 7 Jan 2013  路  18Comments  路  Source: owncloud/client

I have a linux server that I would like to use owncloud with. However I do not have X installed and do not wish to install X to configure owncloud.

Enhancement

Most helpful comment

It'd be nice to have a compact headless terminal client.

All 18 comments

since pyowncloud doesn't anymore work with recent versions of ocsync, this bug shall be re-opened.
I'm facing the same problem. I want to build mirall command line only without any qt stuff, how can i do it?

The command line tool is called owncloudcmd and is delivered with the client, see also https://github.com/owncloud/mirall/blob/master/doc/owncloudcmd.rst

It uses "qt stuff" as you call it tough, but that wont change and should not be a problem.

For me qt stuff is a big problem. I want to have a nice clean setup and be able to sync certain folders with certain servers which do not have any X library available so qt stuff does not work so no owncloudcmd because it requires lots of X library's so please make just like dropbox/seafile a command line only client. So please reopen this ticket or I just create a new one.

@blackcobra1973 Every aspect of the client is written with "the Qt stuff". But Qt is not a gui-only toolkit. Anyway, For now there is owncloudcmd.

Yes and my customer who I am preparing the POC's for has a requirement for a full command line version without all the x stuff that come in with QT. So I have a feeling they will cancel the POC for owncloud and the decision will happen between dropbox/bittorent sync/seafile.

And yes owncloudcmd is full of X stuff: ldd /usr/bin/owncloudcmd
linux-vdso.so.1 => (0x00007fff28fec000)
libowncloudsync.so.0 => /lib64/libowncloudsync.so.0 (0x00007fb6f7974000)
libQtWebKit.so.4 => /lib64/libQtWebKit.so.4 (0x00007fb6f5605000)
libQtXmlPatterns.so.4 => /lib64/libQtXmlPatterns.so.4 (0x00007fb6f4fbd000)
libQtGui.so.4 => /lib64/libQtGui.so.4 (0x00007fb6f42e1000)
libQtDBus.so.4 => /lib64/libQtDBus.so.4 (0x00007fb6f4062000)
libQtXml.so.4 => /lib64/libQtXml.so.4 (0x00007fb6f3e1e000)
libQtSql.so.4 => /lib64/libQtSql.so.4 (0x00007fb6f3bde000)
libQtNetwork.so.4 => /lib64/libQtNetwork.so.4 (0x00007fb6f3896000)
libQtCore.so.4 => /lib64/libQtCore.so.4 (0x00007fb6f33ab000)
libocsync.so.0 => /usr/lib64/owncloud/libocsync.so.0 (0x00007fb6f3191000)
librt.so.1 => /lib64/librt.so.1 (0x00007fb6f2f88000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fb6f2d84000)
libsqlite3.so.0 => /lib64/libsqlite3.so.0 (0x00007fb6f2acf000)
libqtkeychain.so.0 => /lib64/libqtkeychain.so.0 (0x00007fb6f28ab000)
libneon.so.27 => /lib64/libneon.so.27 (0x00007fb6f2680000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fb6f2379000)
libm.so.6 => /lib64/libm.so.6 (0x00007fb6f2076000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fb6f1e60000)
libc.so.6 => /lib64/libc.so.6 (0x00007fb6f1a9f000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fb6f1882000)
libXrender.so.1 => /lib64/libXrender.so.1 (0x00007fb6f1678000)
libjpeg.so.62 => /lib64/libjpeg.so.62 (0x00007fb6f1423000)
libpng15.so.15 => /lib64/libpng15.so.15 (0x00007fb6f11f7000)
libwebp.so.4 => /lib64/libwebp.so.4 (0x00007fb6f0fa7000)
libxslt.so.1 => /lib64/libxslt.so.1 (0x00007fb6f0d68000)
libz.so.1 => /lib64/libz.so.1 (0x00007fb6f0b51000)
libgio-2.0.so.0 => /lib64/libgio-2.0.so.0 (0x00007fb6f07f5000)
libgstapp-0.10.so.0 => /lib64/libgstapp-0.10.so.0 (0x00007fb6f05e9000)
libgstinterfaces-0.10.so.0 => /lib64/libgstinterfaces-0.10.so.0 (0x00007fb6f03d6000)
libgstpbutils-0.10.so.0 => /lib64/libgstpbutils-0.10.so.0 (0x00007fb6f01b2000)
libgstvideo-0.10.so.0 => /lib64/libgstvideo-0.10.so.0 (0x00007fb6eff95000)
libgstbase-0.10.so.0 => /lib64/libgstbase-0.10.so.0 (0x00007fb6efd40000)
libgstreamer-0.10.so.0 => /lib64/libgstreamer-0.10.so.0 (0x00007fb6efa57000)
libgobject-2.0.so.0 => /lib64/libgobject-2.0.so.0 (0x00007fb6ef808000)
libgmodule-2.0.so.0 => /lib64/libgmodule-2.0.so.0 (0x00007fb6ef603000)
libgthread-2.0.so.0 => /lib64/libgthread-2.0.so.0 (0x00007fb6ef401000)
libxml2.so.2 => /lib64/libxml2.so.2 (0x00007fb6ef098000)
libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007fb6eed6e000)
libfontconfig.so.1 => /lib64/libfontconfig.so.1 (0x00007fb6eeb32000)
libfreetype.so.6 => /lib64/libfreetype.so.6 (0x00007fb6ee88d000)
libQtOpenGL.so.4 => /lib64/libQtOpenGL.so.4 (0x00007fb6ee58c000)
libGL.so.1 => /lib64/libGL.so.1 (0x00007fb6ee325000)
libXext.so.6 => /lib64/libXext.so.6 (0x00007fb6ee113000)
libX11.so.6 => /lib64/libX11.so.6 (0x00007fb6eddd4000)
libSM.so.6 => /lib64/libSM.so.6 (0x00007fb6edbcc000)
libICE.so.6 => /lib64/libICE.so.6 (0x00007fb6ed9af000)
libXi.so.6 => /lib64/libXi.so.6 (0x00007fb6ed79f000)
libXrandr.so.2 => /lib64/libXrandr.so.2 (0x00007fb6ed595000)
libXfixes.so.3 => /lib64/libXfixes.so.3 (0x00007fb6ed38e000)
libXcursor.so.1 => /lib64/libXcursor.so.1 (0x00007fb6ed183000)
libXinerama.so.1 => /lib64/libXinerama.so.1 (0x00007fb6ecf80000)
libdbus-1.so.3 => /lib64/libdbus-1.so.3 (0x00007fb6ecd37000)
libssl.so.10 => /lib64/libssl.so.10 (0x00007fb6ecacb000)
libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007fb6ec6e6000)
/lib64/ld-linux-x86-64.so.2 (0x00007fb6f7c70000)
libgnutls.so.28 => /lib64/libgnutls.so.28 (0x00007fb6ec3d5000)
libpakchois.so.0 => /lib64/libpakchois.so.0 (0x00007fb6ec1ce000)
libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007fb6ebf83000)
libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007fb6ebca3000)
libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007fb6eba6e000)
libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007fb6eb869000)
libproxy.so.1 => /lib64/libproxy.so.1 (0x00007fb6eb648000)
libexpat.so.1 => /lib64/libexpat.so.1 (0x00007fb6eb41e000)
libffi.so.6 => /lib64/libffi.so.6 (0x00007fb6eb215000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fb6eaff0000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fb6eadd5000)
liborc-0.4.so.0 => /lib64/liborc-0.4.so.0 (0x00007fb6eab52000)
liblzma.so.5 => /lib64/liblzma.so.5 (0x00007fb6ea92d000)
libglapi.so.0 => /lib64/libglapi.so.0 (0x00007fb6ea706000)
libXdamage.so.1 => /lib64/libXdamage.so.1 (0x00007fb6ea503000)
libX11-xcb.so.1 => /lib64/libX11-xcb.so.1 (0x00007fb6ea300000)
libxcb-glx.so.0 => /lib64/libxcb-glx.so.0 (0x00007fb6ea0e6000)
libxcb-dri2.so.0 => /lib64/libxcb-dri2.so.0 (0x00007fb6e9ee1000)
libxcb.so.1 => /lib64/libxcb.so.1 (0x00007fb6e9cbf000)
libXxf86vm.so.1 => /lib64/libXxf86vm.so.1 (0x00007fb6e9ab9000)
libdrm.so.2 => /lib64/libdrm.so.2 (0x00007fb6e98ad000)
libuuid.so.1 => /lib64/libuuid.so.1 (0x00007fb6e96a7000)
libp11-kit.so.0 => /lib64/libp11-kit.so.0 (0x00007fb6e9485000)
libtasn1.so.6 => /lib64/libtasn1.so.6 (0x00007fb6e9270000)
libnettle.so.4 => /lib64/libnettle.so.4 (0x00007fb6e903f000)
libhogweed.so.2 => /lib64/libhogweed.so.2 (0x00007fb6e8e18000)
libgmp.so.10 => /lib64/libgmp.so.10 (0x00007fb6e8ba0000)
libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007fb6e8992000)
libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007fb6e878e000)
libmodman.so.1 => /lib64/libmodman.so.1 (0x00007fb6e8585000)
libpcre.so.1 => /lib64/libpcre.so.1 (0x00007fb6e8324000)
libXau.so.6 => /lib64/libXau.so.6 (0x00007fb6e811f000)
libfreebl3.so => /lib64/libfreebl3.so (0x00007fb6e7ea2000)

Which I and my customer do not need on their servers.

Yes, there's still a bit of X dependencies left in libsync, which should go to a libsyncgui. Unfortunantely we cannot make this priority for us right now. We do welcome patches though and we are happy to assist.

No problem for me. I not have the time to go into the code and sort it out. I will inform my customer that this is no priority for you and that the only valuable choices are Dropbox for Business, Bittorrent Sync and Seafile they all 3 have a full client (daemon like) version ready as command line sollution.

@blackcobra1973 go ahead

It'd be nice to have a compact headless terminal client.

@jsl303 Your comment got ten upvotes. I don't understand why.

I was able to sync my files with this command:

owncloudcmd -s --non-interactive -u myuser -n mydir http://example.com/owncloud/remote.php/webdav

And a .netrc which looks like this:

===> cat ~/.netrc 
machine example.com
    login myuser
    password abc

Why do you search for a compact headless terminal client?

@guettli Well maybe if you want to use it not just for on a desktop but also on servers. Then it can be very usefully to not have to install all the GUI Crap..

@blackcobra1973
What is the problem if you have to install some GUI crap? Yes, I agree: it could be more minimal. But does it really hurt to have some useless bytes installed on a server?

@guettli For business it is a problem and many times, deal breaker ;/

@482378 This doesn't answer @guettli question. Specifically, what is the issue? For what applications is it a deal breaker and why?

@relshire the issue specifically is with pulling in hundreds of megabytes of dependencies on GUI libraries on servers where they don't belong and are otherwise not needed.

Two main problems caused by that are a) space issues (which translate into unacceptably slow provisioning, for example), especially relevant for VMs and containers and b) vastly increased attack surface. The only software that doesn't suffer from security issues is the one that doesn't exist.

These might not be valid concerns for a typical desktop workstation, but they often play critical role in business setting. I feel a bit weird this has to be explained like this, but, apparently, it was an honest question, so hope it helps.

+1 here, it would be great to have a console only client without depending on QT. Right now I need to reinvent the wheel with rsync and friends. Thanks!

And another point to @zyv list of advantages of non-existing software: you also have to build it. On my low-end gentoo server box qtwebclient takes dozens on hours of compilation time.

Was this page helpful?
0 / 5 - 0 ratings