Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Question: Deploy TeamViewer #18

Open
probonopd opened this issue Aug 12, 2020 · 2 comments
Open

Question: Deploy TeamViewer #18

probonopd opened this issue Aug 12, 2020 · 2 comments

Comments

@probonopd
Copy link

probonopd commented Aug 12, 2020

Here is a challenge that is not 100% directly related to this repository but maybe you know how this could be solved.

I am trying to bundle TeamViewer 9 as an AppImage. It comes as a deb but has dependencies on 32bit libraries that are no longer available on recent systems, so it is a worthwhile candidate for making an AppImage.

Now, TeamViewer comes with its own version of WINE which may or may not be patched in special ways. In any case, I would like to use the TeamViewer WINE because that one is what it had been tested with.

Do you think it is possible to make an AppImage using LD_PRELOAD trickery for TeamViewer 9 using the WINE it comes with?

Here is the deb:
https://dl.teamviewer.com/download/version_9x/teamviewer_linux_x64.deb

There is also a tar.gz which supposedly is portable, but it too requires 32-bit libraries (which are no longer available for recent versions of Ubuntu):

https://community.teamviewer.com/t5/Knowledge-Base/Download-TeamViewer-8-and-9/ta-p/78348#toc-hId-414996891

me@host:~$ cat ./Desktop/teamviewer9/logfiles/startup.log

(...)

FONTCONFIG_FILE: fonts_portable.conf
/home/me/Desktop/teamviewer9/tv_bin/script/tvw_exec: line 34: /home/me/Desktop/teamviewer9/tv_bin/wine/bin/wineserver: No such file or directory
/home/me/Desktop/teamviewer9/tv_bin/script/tvw_profile: line 124: /home/me/Desktop/teamviewer9/tv_bin/wine/bin/wine: No such file or directory
/home/me/Desktop/teamviewer9/tv_bin/script/tvw_profile: line 124: /home/me/Desktop/teamviewer9/tv_bin/wine/bin/wine: No such file or directory
/home/me/Desktop/teamviewer9/tv_bin/script/tvw_profile: line 124: /home/me/Desktop/teamviewer9/tv_bin/wine/bin/wine: No such file or directory
/home/me/Desktop/teamviewer9/tv_bin/script/tvw_profile: line 124: /home/me/Desktop/teamviewer9/tv_bin/wine/bin/wine: No such file or directory

me@host:~$ sudo apt-get install ia32-libs
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package ia32-libs is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
  lib32ncurses5 lib32z1

E: Package 'ia32-libs' has no installation candidate
@sudo-give-me-coffee
Copy link
Owner

These apps has very bad practices to detect libc, is not possible to use LD_PRELOAD or calling glibc directly, instead we need to chroot on a environment, a recipe that "generally" make these apps work is:

The AppRun looks like this:

#!/bin/sh

export HERE="$(dirname "$(readlink -f "${0}")")"
export WORKING_DIR=$("${HERE}/usr/bin/busybox" mktemp -d)
# This is required to avoid "pid X: terminated with signal 11"
export PROOT_NO_SECCOMP=1

"${HERE}/usr/bin/unionfs" -o cow "${HERE}"=RW:/=RW ${WORKING_DIR}

#   Is needed to pass a hard coded full path of program
"${HERE}/usr/bin/proot" -R "${WORKING_DIR}" /path/to/app
RESULT=${?}

# Umount and exit
fusermount -zu "${WORKING_DIR}"
rm -rf "${WORKING_DIR}"

exit ${?}

Essentially, we need to embed unionfs, busybox and proot on AppDir/AppImage

@probonopd
Copy link
Author

probonopd commented Aug 22, 2020

Wow @sudo-give-me-coffee that sounds quite tricky. Did you get this TeamViewer to run in the end? If so, I'd be very interested in step-by-step instructions and/or the resulting working AppImage. Thanks. This project rocks 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants