Does PlayOnLinux work with Trisquel 8?
- Login o registrati per inviare commenti
I noticed that on PlayOnLinux' download page: https://www.playonlinux.com/en/download.html
There is noe "xenial" version of the Ubuntu package.
I remember when I was installing Wine through their own website people here on this forum told me (mason if I remember correctly) that I needed to add the "xenial" repository, and not trusty.
Here I am on PlayOnLinux' website trying to install PlayOnLinux and notice that there is noe xenial version, only trusty.
Does this mean that PlayOnLinux is incompatible with Trisquel 8?
> Here I am on PlayOnLinux' website trying to install PlayOnLinux and
> notice that there is noe xenial version, only trusty.
>
> Does this mean that PlayOnLinux is incompatible with Trisquel 8?
It means that the binary they provide was compiled for Ubuntu 14.04, on which Trisquel 7 is based. That does not necessarily mean that it won't work on Ubuntu 16.04/Trisquel 8. Try it, and if it doesn't work you can always build it yourself.
> you can always build it yourself
How do I do that?:)
> How do I do that?:)
Rather than only telling you how, I'm going to walk you through the problem solving process by which I figured out how. You'll notice that I don't really know what I'm doing. I just try things, figure out why they didn't work, fix the problem, and repeat until everything works. I suggest you learn to do this approach too. You can get pretty far with it.
---------- begin walkthrough ----------
First we need a copy of the source code. We will use git to make a clone of the repository on our machine.
$ sudo apt install git
$ cd path/to/somewhere
$ git clone https://github.com/PlayOnLinux/POL-POM-4
This creates a directory called POL-POM-4. Let's see what's inside
$ cd POL-POM-4
$ ls
I notice there is a directory called bin.
$ ls bin
check_dd_amd64.bz2 check_dd_x86.bz2
After we build the program, binaries should appear here. I also see something called Makefile. A makefile tells GNU Make how to build the program. Let's try using make now.
$ make
We get an error:
./src/check_direct_rendering.c:33:19: fatal error: GL/gl.h: No such file or directory
Looks like the development libraries for opengl are required and I don't have them installed. Let's fix that and try again.
$ sudo apt install libgl1-mesa-dev
$ make
No errors. Let's see what's in bin now.
$ ls bin
check_dd_amd64.bz2 check_dd_x86.bz2 playonlinux playonlinux-check_dd playonlinux-pkg
Looks good. Now we'll use 'make install' to install the program.
$ sudo make install
cp: cannot stat './bin/{playonlinux,playonlinux-pkg}': No such file or directory
Huh. What's './bin/{playonlinux,playonlinux-pkg}'? Let's find out:
$ echo ./bin/{playonlinux,playonlinux-pkg}
./bin/playonlinux ./bin/playonlinux-pkg
This is called brace expansion. './bin/{playonlinux,playonlinux-pkg}' is short for './bin/playonlinux ./bin/playonlinux-pkg', but somebody isn't figuring that out. The problem is that the makefile does not specify which shell to use, and we are defaulting to one that doesn't support brace expansion. To fix this, add
SHELL=/bin/bash
at the top of Makefile and try again.
$ sudo make install
That worked! Now let's try to run the program.
$ playonlinux
No module named wxversion
Crap. Let's see if there's something we can install called wxversion.
$ apt-cache search wxversion
python-wxversion - API for selecting the wxPython version to use
Cool. We'll take it.
$ sudo apt install python-wxversion
$ playonlinux
I get a bunch more messages about missing stuff related to Python and wx. I'm getting impatient at this point, so I install all packages that begin with 'python-wx'
$ sudo apt install python-wx*
$ playonlinux
I now get a popup saying "PlayOnLinux cannot find cabextract
You need to install it to continue"
Okay.
$ sudo apt install cabextract
$ playonlinux
I get three similar popups, the first two telling me that I need things from icoutils and the third telling me I need wine. The program actually launches now, but it probably won't work without those dependencies.
$ sudo apt install icoutils wine
$ playonlinux
Finally, the program launches with no errors.
> Rather than only telling you how, I'm going to walk you through the problem solving process by which I figured out how. You'll notice that I don't really know what I'm doing. I just try things, figure out why they didn't work, fix the problem, and repeat until everything works. I suggest you learn to do this approach too. You can get pretty far with it.
Nice!
> First we need a copy of the source code. We will use git to make a clone of the repository on our machine.
$ sudo apt install git
$ cd path/to/somewhere
$ git clone https://github.com/PlayOnLinux/POL-POM-4
This I understand.
> I notice there is a directory called bin.
Aha, so "bin"-folder are what to look for when building?
> After we build the program, binaries should appear here.
Well aren't there already something there? "check_dd_amd64.bz2 check_dd_x86.bz2"?
> I also see something called Makefile. A makefile tells GNU Make how to build the program. Let's try using make now.
Aha :)
> We get an error:
./src/check_direct_rendering.c:33:19: fatal error: GL/gl.h: No such file or directory
Well I got something slightly different:
gcc -O2 ./src/check_direct_rendering.c -o ./bin/playonlinux-check_dd -lGL -lX11
make: gcc: Command not found
Makefile:47: recipe for target 'build' failed
make: *** [build] Error 127
But I searx'd "make: gcc: Command not found". Someone suggested to install gcc, so I did.
Now $ make gives me:
gcc -O2 ./src/check_direct_rendering.c -o ./bin/playonlinux-check_dd -lGL -lX11
./src/check_direct_rendering.c:31:22: fatal error: X11/Xlib.h: No such file or directory
compilation terminated.
Makefile:47: recipe for target 'build' failed
make: *** [build] Error 1
Which still isn't quite like the error message you get. But very close. The main thing here seems be this: "fatal error: X11/Xlib.h: No such file or directory", but that tells me nothing. Now I am lost. Stranded on an island.
But anyway, let's suppose I got the same error message as you up to this point:
I still can't fathom how you from this message: "./src/check_direct_rendering.c:33:19: fatal error: GL/gl.h: No such file or directory"
are like: "Oh yeah totally. Looks like the development libraries for opengl are required and I don't have them installed. Let's fix that and try again.
$ sudo apt install libgl1-mesa-dev" :P
Haha, but anyway. Don't interpret this as a token of ungratefulness. I really do appreciate the effort you put in this walkthrough for me. But because of factors I suppose neither you or me could've known about, it doesn't "walk me all the way through".
But maybe ... maybe perhaps you are able to solve the error I got?
If not: that's okay! :) Thank you anyway
Never mind, I searx'd "fatal error: X11/Xlib.h: No such file or directory", and someone suggested to install libx11-dev.
Now $ make gives me:
gcc -O2 ./src/check_direct_rendering.c -o ./bin/playonlinux-check_dd -lGL -lX11
./src/check_direct_rendering.c:33:19: fatal error: GL/gl.h: No such file or directory
compilation terminated.
Makefile:47: recipe for target 'build' failed
make: *** [build] Error 1
Which still isn't quite like yours, but the main fatal error is the same, so I'll try to continue from here :) I'll be back!
Continuation:
> No errors. Let's see what's in bin now.
$ ls bin
check_dd_amd64.bz2 check_dd_x86.bz2 playonlinux playonlinux-check_dd playonlinux-pkg
Same as me :)
> Looks good. Now we'll use 'make install' to install the program.
Allright, so after one has done "$ make" one does "$ make install", noted.
> cp: cannot stat './bin/{playonlinux,playonlinux-pkg}': No such file or directory
That's strange. I got something rather different:
install -d /usr/bin
install -d /usr/libexec
install: cannot change permissions of ‘/usr/libexec’: No such file or directory
Makefile:58: recipe for target 'install' failed
make: *** [install] Error 1
But I noticed the word "permission" was used there so I tried "$ sudo make install" which gave me:
With the same "cp: cannot stat './bin/{playonlinux,playonlinux-pkg}': No such file or directory" as you! :)
> Huh. What's './bin/{playonlinux,playonlinux-pkg}'? Let's find out:
$ echo ./bin/{playonlinux,playonlinux-pkg}
./bin/playonlinux ./bin/playonlinux-pkg
Cool :)
> This is called brace expansion. './bin/{playonlinux,playonlinux-pkg}' is short for './bin/playonlinux ./bin/playonlinux-pkg',
Nice :)
> but somebody isn't figuring that out.
Well I don't blame them :P
> The problem is that the makefile does not specify which shell to use, and we are defaulting to one that doesn't support brace expansion. To fix this, add
SHELL=/bin/bash
at the top of Makefile and try again.
Wait what?? "which shell to use"? "and we are defaulting to one"?
Hold on five seconds mister fast dude.
According to wikipedia (https://en.wikipedia.org/wiki/Shell_%28computing%29) a shell is "a user interface for access to an operating system's services. In general, operating system shells use either a command-line interface (CLI) or graphical user interface (GUI), depending on a computer's role and particular operation. It is named a shell because it is the outermost layer around the operating system kernel."
So here I am in my GUI shell, typing commands in my CLI shell trying to install a program. But the program's "makefile" doesn't specify "which shell to use"? Which of who? How many shells is there to choose from? Aren't we in a CLI shell now? Inside a GUI shell? I am soooooooo confused here.
"and we are defaulting to one" ... I ... I what? How? When?
In this context, a shell is the command interpreter. Usually it's bash.
You can find out which shell you're using.
echo $SHELL
Oh, okay :)
So a terminal can use many different "programs" (shells) to interpret the commands? Any the different "programs" (shells) work in different ways.
Can an analogy be a car with an engine running on diesel and a car with an engine running gasoline (haha I searx'd "gasoline" and look at wikipedia's picture https://en.wikipedia.org/wiki/Gasoline)?
Which you have a car (terminal) having an engine (shell) that runs on either gasoline or diesel or something else (bash, /bin/bash or something else)?
But in contrast to the car which has an engine (shell) that can only use on type of fuel (for example only bash). The terminal (the car) can swap out the engine (shell) if we specifically need diesel (/bin/bash) to get to a certain location?
But most of the time the terminal (the car) just defaults to a certain shell (engine) even though we are trying to feed it the incompatible fuel?
Historically, shells have evolved and grown out of earlier shells by adding new features or have been developed from scratch because of license considerations. You need a way to pass commands and interact with the kernel and other programs, so the shell is out there to take care of that. Modern graphical user interfaces have mostly hidden the shell from the user. Some systems are headless, so you use the shell from another computer like a laptop connected to a serial interface or remotely.
By the way, you can temporarily change to another shell by typing the name of the shell.
'bash'
'dash'
You'll see how the prompt changes to another symbol or string.
Interesting indeed.
Anyway, do you happen to know what mason means when he says:
"The problem is that the makefile does not specify which shell to use, and we are defaulting to one that doesn't support brace expansion. To fix this, add
SHELL=/bin/bash
at the top of Makefile and try again."?
I guess there's a makefile that you need to edit.
Makefile is a text file. He means to add that as a new line at the top of it. The new line suggested explicitly makes it use GNU bash.
I see :)
Thank you for stopping by onpon4.
> The new line suggested explicitly makes it use GNU bash.
When I am i the POL-POM-4 directory and run "$ make" or "$ make install", what exactly am I telling the terminal to do? Am I telling it to do something with the Makefile?
Bash is a type of shell: put it wherever you want in your car but it must be one single piece. Originally, UNIX had sh (the Bourne Shell) to interpret commands. It was quite limited. That why many other command line interpreters (aka "shells") were developed to replace it (while keeping the compatibility with sh): GNU Bash but also zsh, ksh, tcsh, etc. Brace expansion is the kind of more advanced features some of these shells added.
Continuation 2:
> "To fix this, add
SHELL=/bin/bash
at the top of Makefile and try again.
$ sudo make install
That worked! Now let's try to run the program."
When I did that I got this output: https://pastebin.com/iBQcPakF
To me that doesn't look the regular "it worked" message. Usually when I am installing something the terminal goes "these new packages will be installed Y/n?" and maybe some loading etc. But allright, I'll go along :)
> That worked! Now let's try to run the program.
$ playonlinux
No module named wxversion
When I did "$ playonlinux" I got this: https://pastebin.com/haPf3EJ6
and the program actually launched. I don't know if the program launched for you at this point, but yeah it doesn't look right with the "Gtk-Message: Failed to load module "canberra-gtk-module"
Gtk-Message: Failed to load module "topmenu-gtk-module"" messages.
I searx'd "Gtk-Message: Failed to load module "canberra-gtk-module"
Gtk-Message: Failed to load module "topmenu-gtk-module" and what do you know, there is a package called "canberra-gtk-module". So I installed that I tried again, and got: https://pastebin.com/RsqasTuB
The same message, but now without the "Gtk-Message: Failed to load module "canberra-gtk-module"". So I searx'd "Gtk-Message: Failed to load module "topmenu-gtk-module"" and the first result is this: https://ubuntu-mate.community/t/gtk-message-failed-to-load-module-topmenu-gtk-module/4964
I was not able to extract something clear from that thread. But I followed one of the persons' suggestion to go and search for "topmenu-gtk" in synaptic package manager. There I found "topmenu-gtk-common", "topmenu-gtk2" and topmenu-gtk3". All of them not installed. So I just installed them all.
I run "$ playonlinux" once again and the terminal outputs this: https://pastebin.com/fsKY8eFT
and the program launches yet again. This seems kind of nice to me. I don't like the "/usr/bin/playonlinux: line 1: -e: command not found" line though. I don't know what that supposed to mean.
But the program launches though ! :)
Hi, with supreme guidance from mason and other (and some searxing) PlayOnLinux was successfully installed by building it. Thank you to all the helpful contributions.
> Hi, with supreme guidance from mason and other (and some searxing)
> PlayOnLinux was successfully installed by building it. Thank you to
> all the helpful contributions.
Congrats! I can see from your posts that you are learning and getting the hang of this.
> Aha, so "bin"-folder are what to look for when building?
Yes, when you see a 'bin' folder you can expect the binaries to be created there.
> Well aren't there already something there? "check_dd_amd64.bz2
> check_dd_x86.bz2"?
Yes, but a .bz2 file is a compressed file[1], unlikely to be an executable binary. You may be used to executable binaries having an .exe (in Windows) or .app (in macOS) filename extension. In GNU/Linux they typically have no filename extensions, which is why the extensionless files that appeared in bin after running make were a good sign.
> I still can't fathom how you from this message:
> "./src/check_direct_rendering.c:33:19: fatal error: GL/gl.h: No such
> file or directory"
>
> are like: "Oh yeah totally. Looks like the development libraries for
> opengl are required and I don't have them installed. Let's fix that
> and try again.
You caught me. :) I did kind of gloss over that point. I'll explain more thoroughly.
Files with a ".h" filename extension[2] are header files in C or C++. Put simply, they are used to include other code in your code. If you see a missing .h file when building, it usually means that the program you are building is looking for a library that you don't have installed. Having played around with OpenGL[3] in the past, I recognized GL/gl.h and knew what to install. If I hadn't, I would have done what you did with X11/Xlib.h, which is search to find out what you need to include. You can also often use 'apt-cache search' or Synaptic to narrow down the possibilities. For example, I see X11/Xlib.h and know that I want the development files (dev) for a library (lib) having to do with X11 (x11) so I search
$ apt-cache search lib dev x11
look at the output, and guess that 'libx11-dev' is the most likely candidate.
> Wait what?? "which shell to use"? "and we are defaulting to one"?
It seems like you understand this better now thanks to onpon4 and loldier's explanations.
> When I am i the POL-POM-4 directory and run "$ make" or "$ make
> install", what exactly am I telling the terminal to do? Am I telling
> it to do something with the Makefile?
When you run the program GNU Make by typing 'make', it looks for a makefile telling it what to do. If you take a look at Makefile you'll see blocks of instructions that begin with 'clean:', 'build:', and 'install:' When you just run 'make' it assumes you just want to build the program, so it follows the instructions under 'build'. When you run 'make install' it understands that you also want to install the program, so it follows the instructions under 'install:' as well. If you look at the 'install' instructions you'll see this line:
cp ./bin/{playonlinux,playonlinux-pkg} $(bindir)/
This is the line that the shell was having trouble with, which is why 'make install'wasn't working. Until we specified a different shell.
[1] https://en.wikipedia.org/wiki/Bzip2
[2] https://en.wikipedia.org/wiki/Include_directive#C/C++
[3] https://en.wikipedia.org/wiki/OpenGL
[4] https://en.wikipedia.org/wiki/GTK%2B
:)
When you run the program GNU Make by typing 'make', it looks for a makefile telling it what to do.
Detailing a little more:
'make' not being a directive of the shell, the shell assumes it must be a separate program and searches in the directories listed in the PATH variable (type 'echo $PATH' to print its content) for a file named "make". It finds it in /usr/bin and runs it (passing to it the space-separated arguments following "make", e.g., "install"). Then, 'make' looks for a makefile, etc.
Now how do I completely uninstall it after I've built it?
I think everything is in your home folder. Since you compiled it from git sources, it must be removed by hand. Remove the respective folder and its contents, files and binaries. Look for dot-files (something like .playonlinux). They are hidden files or directories. Remove them as well.
In terminal, 'ls -a' shows dot-files (hidden files and directories). Caja has a setting to toggle to show hidden items in your home folder or root hierarchy.
> Now how do I completely uninstall it after I've built it?
From the makefile, it looks like each file either is named or is in a directory named something with "playonlinx" or "PlayOnLinux" as a substring, so that's what we'd need to get rid of.
First lets get rid of our clone of the repository.
$ cd path/to/wherever/you/cloned/the/repository
$ rm -rf POL-POM-4/
'rm' means 'remove'. The '-rf' is necessary to remove directories.
Next cd into your root (top-level) directory
$ cd /
and search for all files and directories containing "playonlinux" or "PlayOnLinux"
$ sudo find -iname "*playonlinux*"
'sudo' is to avoid getting getting messages of the form "find: *: Permission denied". 'find' is the command we are running. '-iname' says to search filenames and directory names ignoring case ('-name' without the 'i' would make it case-sensitive). "*playonlinux*" is the string we're looking for. The '*' before and after 'playonlinux' means that anything can come before or after 'playonlinux' in the name, as long as 'playonlinux' is in there somewhere. The output should be a bunch of file names and locations.
In order to easily delete all of these at once, we're going to turn the whole list of them into a variable: '$(sudo find -iname "*playonlinux*"). To see what this looks like, run
$ echo $(sudo find -iname "*playonlinux*")
You should see the same files and directories as before, but printed all on one line. Finally, we will remove them all with
$ sudo rm -rf $(sudo find -iname "*playonlinux*")
Please copy/pase that line exactly so that you don't accidentally remove anything else.
Now run
$ sudo find -iname "*playonlinux*"
again and you'll see that the files are all gone.
This is incredibly cool! :D thank you so much for this!
One question though: what about files/directories that is part of the playonlinux program but does not contain "playonlinux" in its name?
> One question though: what about files/directories that is part of the
> playonlinux program but does not contain "playonlinux" in its name?
If there were any then this would be a more complicated task, but looking at the makefile I don't think there are.
While I definitely see the value in sharing CLI knowledge and skills, I think it's important to start with a link to a disclaimer along the lines of:
"On a desktop GNU-Linux system like Trisquel, installing software using anything other than the package manager (via apt-get or a GUI like Synaptic or Add/ Remove Applications), and especially compiling programs from source code, can result in a number of things you may not expect, including but not limited to:
* programs that don't run correctly, or at all
* problems identifying and installing dependencies; all the other programs that the program you are trying to install needs to run correctly
* having to manually update to newer versions if and when they become available (apt-get update will not help you here)
* having to manually uninstall the program if you no longer want it (apt-get remove and apt-get purge will not help you here)
* security vulnerabilities, and /or race condition bugs, introduced into your system due to a lack of testing of programs you've manually installed with the distro you're using
When installing software that is not included in the default repositories of the distro you're using, it's best to test the program on a clone system on a separate partition, or another computer, running the same version of the same distro. This makes it less likely that you will bork your main system, and more likely that you will be able to connect to the net to seek advice on how to fix any problems you run into.
Finally, when using a 100% free code distro like Trisquel (or Parabola or any of the others endorsed by the FSF), installing software from PPAs, or from the web, or compiling from source, can result in proprietary software being introduced into your system."
Is there a page on the wiki communicating something along these lines? If not, I will create one, and anyone is welcome to improve the text.
There are only small warning notices on https://trisquel.info/en/wiki/how-software-installation-trisquel-different-windows and https://trisquel.info/en/wiki/installing-packages-without-internet-connection
Instead, there could be a link to a whole document page with the text you suggest.
I think this is a great idea.
> Finally, when using a 100% free code distro like Trisquel (or
> Parabola or any of the others endorsed by the FSF), installing
> software from PPAs, or from the web, or compiling from source, can
> result in proprietary software being introduced into your system."
This part is especially important. I try to remember to mention it whenever I help someone add a PPA, but it would be great to have something to link to along with the other points you raise.
> Is there a page on the wiki communicating something along these
> lines? If not, I will create one, and anyone is welcome to improve
> the text.
That would be awesome, thank you.
On a side note, I know this has been said a hundred times, but whoever used the downvote button on my posts, stop doing that. That button was added to mark spam and rule-breaking posts, not disagreement. I disagree with its existence, but as long as it's there, please do not abuse it. You can express your disagreement by posting a reply.
What if I feel that your comments are spam?
What if I feel that your comments are spam?
Feel free to feel but it ain't so. Onpon4, in my books, is one of the most proficient contributors to this forum. You should pay attention to what she has to say.
> but it ain't so.
Why? Why not?
You are both saying things like "things is great", "this is bad" like you are some sort of authority. Please be more specific and explaining.
Spam definition:
Person A: I want this.
Person B: Try this.
Person C: Why do want this? This is not point.
Person A/B: Person A (and perhaps) others want this because of X.
Person C: But just use Z.
Person A/B: But X seems a little bit cooler, let's talk about that.
Person C: No, there is no point.
etc etc etc
A = me
B = people suggesting solutions
C = you
and perhaps others* (typo)
> What if I feel that your comments are spam?
onpon4 makes many posts here that have helped people, including you, so if her comments seem unreasonable to you I'd ask her to clarify what she means instead of dismissing them. I think this is just a miscommunication resulting from the nuance that PlayOnLinux supports proprietary games while being libre itself. Calmstorm suggested a libre version of PlayOnLinux. Since PlayOnLinux itself is already libre, the only way to make it "more" libre would be to remove support for proprietary games. onpon4's point is that since the only use for PlayOnLinux is to play proprietary games, removing support for proprietary games would make it useless. She wasn't saying that it is useless in its current form.
Using free software like Wine or PlayOnLinux to play a proprietary game is certainly better than using Windows, which is why we helped you install it. Gradual migration from proprietary software to free software can be the right strategy for many people. Gradual change is most effective when you take every opportunity to take the next steo. Without abandoning the games you are used to, I encourage you to also look at onpon4's list of libre games, as well the games she has made, if you haven't already. She and others work very hard to enrich the world of libre gaming, and I hope that their efforts will reduce gamers' dependence on proprietary games.
> Since PlayOnLinux itself is already libre, the only way to make it "more" libre would be to remove support for proprietary games. onpon4's point is that since the only use for PlayOnLinux is to play proprietary games, removing support for proprietary games would make it useless.
Exactly.
The way I see your behaviour is that you are comming into posts and comments and just comments negative things.
I have a suggestion for you :
Look at the titles in the forum, do you see a title where you can contribute to thread topic or help the OP, please contribute.
If you see nothing you can contribute with, or if you think all the posts are meaningless. Ask OP: "why do you want this, OP?"
That way you may learn something and you are spreading good vibe.
- Login o registrati per inviare commenti