Author Topic: meshmixer on ubuntu 15.10  (Read 7634 times)

elaser

  • Newbie
  • *
  • Posts: 2
    • View Profile
meshmixer on ubuntu 15.10
« on: January 17, 2016, 01:32:40 PM »
I'm really looking forward to try out this free software but I have problem installing it, the deb have some dependencies for old boost lib and some other packages are not present in the repository, I guess an updated version will come out soon right?
here is the log:
$ dpkg -i meshmixer_2.9_amd64.deb
(Lettura del database... 202639 file e directory attualmente installati.)
Preparativi per estrarre meshmixer_2.9_amd64.deb...
Estrazione di meshmixer (2.9) su (2.9)...
dpkg: problemi con le dipendenze impediscono la configurazione di meshmixer:
 meshmixer dipende da libboost-date-time1.54.0; comunque:
  Il pacchetto libboost-date-time1.54.0 non è installato.
 meshmixer dipende da libboost-filesystem1.54.0; comunque:
  Il pacchetto libboost-filesystem1.54.0 non è installato.
 meshmixer dipende da libboost-system1.54.0; comunque:
  Il pacchetto libboost-system1.54.0 non è installato.
 meshmixer dipende da libboost-thread1.54.0; comunque:
  Il pacchetto libboost-thread1.54.0 non è installato.
 meshmixer dipende da libcgal10; comunque:
  Il pacchetto libcgal10 non è installato.
 meshmixer dipende da libkml0; comunque:
  Il pacchetto libkml0 non è installato.
 meshmixer dipende da libsuperlu3 (>= 3.0+20070106); comunque:
  Il pacchetto libsuperlu3 non è installato.

dpkg: errore nell'elaborare il pacchetto meshmixer (--install):                                                                                                                                                                                   
 problemi con le dipendenze - lasciato non configurato                                                                                                                                                                                             
Elaborazione dei trigger per mime-support (3.58ubuntu1)...                                                                                                                                                                                         
Si sono verificati degli errori nell'elaborazione:                                                                                                                                                                                                 
 meshmixer                                                                                                                                                                                                                                         
$ aptitude search libboost-date
p   libboost-date-time-dev                                                                                            - set of date-time libraries based on generic programming concepts (default version)                                         
p   libboost-date-time-dev:i386                                                                                       - set of date-time libraries based on generic programming concepts (default version)                                         
p   libboost-date-time1.58-dev                                                                                        - set of date-time libraries based on generic programming concepts                                                           
p   libboost-date-time1.58-dev:i386                                                                                   - set of date-time libraries based on generic programming concepts                                                           
i   libboost-date-time1.58.0                                                                                          - set of date-time libraries based on generic programming concepts                                                           
p   libboost-date-time1.58.0:i386                                                                                     - set of date-time libraries based on generic programming concepts                                                           
$ aptitude search libboost-filesystem
p   libboost-filesystem-dev                                                                                           - filesystem operations (portable paths, iteration over directories, etc) in C++ (default version)                           
p   libboost-filesystem-dev:i386                                                                                      - filesystem operations (portable paths, iteration over directories, etc) in C++ (default version)                           
p   libboost-filesystem1.58-dev                                                                                       - filesystem operations (portable paths, iteration over directories, etc) in C++                                             
p   libboost-filesystem1.58-dev:i386                                                                                  - filesystem operations (portable paths, iteration over directories, etc) in C++                                             
i   libboost-filesystem1.58.0                                                                                         - filesystem operations (portable paths, iteration over directories, etc) in C++                                             
p   libboost-filesystem1.58.0:i386                                                                                    - filesystem operations (portable paths, iteration over directories, etc) in C++                                             
$ aptitude search libboost-system
p   libboost-system-dev                                                                                               - Operating system (e.g. diagnostics support) library (default version)                                                     
p   libboost-system-dev:i386                                                                                          - Operating system (e.g. diagnostics support) library (default version)                                                     
p   libboost-system1.58-dev                                                                                           - Operating system (e.g. diagnostics support) library                                                                       
p   libboost-system1.58-dev:i386                                                                                      - Operating system (e.g. diagnostics support) library                                                                       
i   libboost-system1.58.0                                                                                             - Operating system (e.g. diagnostics support) library                                                                       
p   libboost-system1.58.0:i386                                                                                        - Operating system (e.g. diagnostics support) library                                                                       
$ aptitude search libboost-thread
p   libboost-thread-dev                                                                                               - portable C++ multi-threading (default version)                                                                             
p   libboost-thread-dev:i386                                                                                          - portable C++ multi-threading (default version)                                                                             
p   libboost-thread1.58-dev                                                                                           - portable C++ multi-threading                                                                                               
p   libboost-thread1.58-dev:i386                                                                                      - portable C++ multi-threading                                                                                               
i   libboost-thread1.58.0                                                                                             - portable C++ multi-threading                                                                                               
p   libboost-thread1.58.0:i386                                                                                        - portable C++ multi-threading                                                                                               
$ aptitude search libcgal10
$ aptitude search libkml0
$ aptitude search libsuperlu3

AlecTaylor

  • Newbie
  • *
  • Posts: 1
    • View Profile
Re: meshmixer on ubuntu 15.10
« Reply #1 on: January 18, 2016, 07:24:47 AM »
Solution for 15.10 x64:

Code: [Select]
sudo apt-get install gdebi
sudo gdebi ~/Downloads/libboost-date-time1.54.0_1.54.0-4ubuntu3_amd64.deb
sudo gdebi ~/Downloads/libboost-system1.54.0_1.54.0-4ubuntu3_amd64.deb
sudo gdebi ~/Downloads/libboost-filesystem1.54.0_1.54.0-4ubuntu3_amd64.deb
sudo gdebi ~/Downloads/libboost-thread1.54.0_1.54.0-4ubuntu3_amd64.deb
sudo gdebi ~/Downloads/libcgal10_4.2-5ubuntu1_amd64.deb
sudo gdebi ~/Downloads/libkml0_1.3.0~r864-2_amd64.deb
sudo gdebi ~/Downloads/libsuperlu3_3.0+20070106-3_amd64.deb
sudo gdebi ~/Downloads/meshmixer_2.9_amd64.deb

All *.deb files can be found at http://packages.ubuntu.com/trusty/amd64/{}/download.

BTW: This is obviously a terrible hack, as these old packages could have security and bugginess issues. Autodesk: update your deb! - kthxbye
« Last Edit: January 18, 2016, 07:27:01 AM by AlecTaylor »

frankv

  • Newbie
  • *
  • Posts: 6
    • View Profile
Re: meshmixer on ubuntu 15.10
« Reply #2 on: January 22, 2016, 04:30:27 AM »
Thanks for that... got all the libboost packages, but drew a blank with libgcal10 -- I could only find v11. Similarly couldn't find libml0 and only v4 of libsuperlu. :(

@Alec, can you give links where to find those packages?

MagWeb

  • Administrator
  • Hero Member
  • *****
  • Posts: 1192
    • View Profile
Re: meshmixer on ubuntu 15.10
« Reply #3 on: January 22, 2016, 03:00:05 PM »
Not using Linux: But meanwhile a new Meshmixer 3.0 was released...
I'm just a user as you are. Being no Autodesk employee: I do not know where this road will lead to, nor do I claim to've all stuff got right.

frankv

  • Newbie
  • *
  • Posts: 6
    • View Profile
Re: meshmixer on ubuntu 15.10
« Reply #4 on: January 22, 2016, 11:25:32 PM »
But v3.0 for Linux isn't available for download :( The Linux download button takes you to v2.9.


RMS

  • meshmixer founder
  • Administrator
  • Hero Member
  • *****
  • Posts: 1238
    • View Profile
    • gradientspace
Re: meshmixer on ubuntu 15.10
« Reply #5 on: January 23, 2016, 04:10:45 PM »
Sorry, but we do not have a 3.0 for linux yet. It will hopefully come soon. Linux is a spare-time project for us, and to be frank, it requires a huge amount of effort compared to windows or OSX. Builds of meshmixer from 5 years ago still run fine on Windows 10, but on Linux this is never the case.

The constantly-changing dependencies are a nightmare. We currently have the situation where math library A depends on an old version of math library B, which is no longer available to install in 15.10. We do not have the expertise to port library A ourselves, and it is long-abandoned by its maintainer. So now we have to statically-compile in both old versions of libraries A and B. Which means hours spent figuring out how to build them. And so on.

Anyway, I am hoping to find time for this soon. In the meantime, my apologies.

created meshmixer - now starting gradientspace - meshmixer consulting available http://www.gradientspace.com/consulting

Patola

  • Newbie
  • *
  • Posts: 14
    • View Profile
Re: meshmixer on ubuntu 15.10
« Reply #6 on: January 26, 2016, 11:16:21 AM »
There is a recipe for deb packages where you can easily change the dependencies:

make some temporary directory, e.g. /tmp/meshmixer (and considering the meshmixer package to be in ~/Downloads):

Code: [Select]
mkdir /tmp/meshmixer
cd /tmp/meshmixer
dpkg-deb --extract ~/Downloads/meshmixer_2.9_amd64.deb .
dpkg --control ~/Downloads/meshmixer_2.9_amd64.deb
vi DEBIAN/control
==> change dependencies to: libavahi-compat-libdnssd1 (>= 0.6.16), libblas3, libboost-date-time1.58.0, libboost-filesystem1.58.0, libboost-system1.58.0, libboost-thread1.58.0, libc6 (>= 2.14), libcgal11v5, libgcc1 (>= 1:4.1.1), libgl1-mesa-glx | libgl1, libglu1-mesa | libglu1, libgmp10, libkmlbase1, liblapack3, libqt4-network (>= 4:4.8.0), libqt4-opengl (>= 4:4.8.0), libqt4-script (>= 4:4.5.3), libqt4-xml (>= 4:4.5.3), libqtcore4 (>= 4:4.7.0~beta1), libqtgui4 (>= 4:4.8.0), libqtwebkit4, libstdc++6 (>= 4.8.1), libsuperlu4, libxerces-c3.1, zlib1g (>= 1:1.2.0)
Code: [Select]
cd ..
dpkg --build meshmixer
dpkg-name meshmixer.deb
However, after I was able to make it install successfully by changing the dependencies, it wouldn't run because a different symbol in liboost-filesystem:
Code: [Select]
meshmixer: symbol lookup error: meshmixer: undefined symbol: _ZN5boost10filesystem11path_traits7convertEPKwS3_RSsRKSt7codecvtIwc11__mbstate_tE
However if we use boost 1.54 version and fix the other dependencies according to this recipe, I think it might work.

Patola

  • Newbie
  • *
  • Posts: 14
    • View Profile
Re: meshmixer on ubuntu 15.10
« Reply #7 on: January 26, 2016, 11:21:12 AM »
Sorry, but we do not have a 3.0 for linux yet. It will hopefully come soon. Linux is a spare-time project for us, and to be frank, it requires a huge amount of effort compared to windows or OSX. Builds of meshmixer from 5 years ago still run fine on Windows 10, but on Linux this is never the case.

The constantly-changing dependencies are a nightmare. We currently have the situation where math library A depends on an old version of math library B, which is no longer available to install in 15.10. We do not have the expertise to port library A ourselves, and it is long-abandoned by its maintainer. So now we have to statically-compile in both old versions of libraries A and B. Which means hours spent figuring out how to build them. And so on.

Anyway, I am hoping to find time for this soon. In the meantime, my apologies.

Sir, thank you very much for the heads-up, but that is exactly why you should open-source meshmixer!  ;D
You would have no worries with versioning or libraries. You just add features and compile and interested people and integrators make it into a nicely functional package! And you could even get patches for features, bug fixes and such.
And btw, do you realise you have the same initials as the man who started the whole "free (as in free speech, not free beer) software" thing? That is Richard Matthew Stallman.

frankv

  • Newbie
  • *
  • Posts: 6
    • View Profile
Re: meshmixer on ubuntu 15.10
« Reply #8 on: January 26, 2016, 01:25:27 PM »
There is a recipe for deb packages where you can easily change the dependencies:
[snip]
However if we use boost 1.54 version and fix the other dependencies according to this recipe, I think it might work.

I tried this with boost 1.54... here's my Depends line
Code: [Select]
Depends: libavahi-compat-libdnssd1 (>= 0.6.16), libblas3, libboost-date-time1.54.0, libboost-filesystem1.54.0, libboost-system1.54.0, libboost-thread1.54.0, libc6 (>= 2.14), libcgal11v5, libgcc1 (>= 1:4.1.1), libgl1-mesa-glx | libgl1, libglu1-mesa | libglu1, libgmp10, libkmlbase1, liblapack3, libqt4-network (>= 4:4.8.0), libqt4-opengl (>= 4:4.8.0), libqt4-script (>= 4:4.5.3), libqt4-xml (>= 4:4.5.3), libqtcore4 (>= 4:4.7.0~beta1), libqtgui4 (>= 4:4.8.0), libqtwebkit4, libstdc++6 (>= 4.8.1), libsuperlu4, libxerces-c3.1, zlib1g (>= 1:1.2.0)

 But it still doesn't work.  When I try to run meshmixer I got

Code: [Select]
frank@lounge15:/tmp$ meshmixer &
[1] 5108
frank@lounge15:/tmp$ meshmixer: error while loading shared libraries: libsuperlu.so.3: cannot open shared object file: No such file or directory
^C
[1]+  Exit 127                meshmixer
f

Browsing this forum found a fix for that:
Code: [Select]
sudo ln -s /usr/lib/x86_64-linux-gnu/libsuperlu.so.4 /usr/lib/x86_64-linux-gnu/libsuperlu.so.3
But the next issue is
Code: [Select]
meshmixer: error while loading shared libraries: libminizip.so.0: cannot open shared object file: No such file or directory


RMS

  • meshmixer founder
  • Administrator
  • Hero Member
  • *****
  • Posts: 1238
    • View Profile
    • gradientspace
Re: meshmixer on ubuntu 15.10
« Reply #9 on: January 28, 2016, 02:09:36 PM »
Sorry, but Meshmixer is owned by Autodesk Corporation, open-sourcing it is not going to happen.

Although Meshmixer is free, many of the internal algorithms/etc have been under development for 10+ years and are used in other Autodesk products that cost many thousands of dollars. It is not possible to give these away.
created meshmixer - now starting gradientspace - meshmixer consulting available http://www.gradientspace.com/consulting

Patola

  • Newbie
  • *
  • Posts: 14
    • View Profile
Re: meshmixer on ubuntu 15.10
« Reply #10 on: February 04, 2016, 03:04:03 AM »
Sorry, but Meshmixer is owned by Autodesk Corporation, open-sourcing it is not going to happen.

Although Meshmixer is free, many of the internal algorithms/etc have been under development for 10+ years and are used in other Autodesk products that cost many thousands of dollars. It is not possible to give these away.

I appreciate the response, but I think you got the wrong idea about open-source. The exact same statements can be made of most if not all commercial-grade open-source software, from libreoffice to firefox, from Blender to JBoss, from GIMP to FreeCAD, from Inkscape to Virtualbox, from JFS2 to LVM2... Having huge, sophisticated, complex algorithms is not per se a good reason for closing the source - quite the contrary, complex systems can benefit a lot from the idea of "given enough eyeballs, all bugs are shallow". All these software took real programmers decades of hard labour to develop too. It is just that the commercial strategy for leveraging it is different, and it is not actually much different from closed but free of charge software like meshmixer currently is. So, it would be a small but significant step to open the source of meshmixer and watch it grow away from budget problems or personnel allocation from autodesk. I guess it would instantly multiply its user base and make it much more successful, stable and useful.

Open your mind. Autodesk already open-sourced an entire SLA 3D Printer (the Ember printer) and even a 3d printer resin. I do not think narrow perspective should win there. Meshmixer would be the perfect software to go along this train ride.

Open source it not about giving away. It's all about exchange. You get community and code back and you unencumber yourself from ungrateful tasks like porting to different linux distros

Patola

  • Newbie
  • *
  • Posts: 14
    • View Profile
Re: meshmixer on ubuntu 15.10
« Reply #11 on: February 05, 2016, 12:37:44 AM »
Hi, I just created a new topic with a detailed recipe teaching how to use LXC to install meshmixer on *ANY* linux in an ubuntu 14.04 lightweight container, with GPU acceleration and everything. Would a moderator that is following this thread be so kind as to approve my topic? Last time I tried creating a new topic on this same forum even after two months the new topic was not approved.

Patola

  • Newbie
  • *
  • Posts: 14
    • View Profile
Re: meshmixer on ubuntu 15.10
« Reply #12 on: February 05, 2016, 10:39:19 AM »
Ok... I am posting this in this thread so that people are informed, but moderators, PLEASE accept it as new topic (it is awaiting approval) because it will be easier to answer to doubts this way.
=============================================================================

Hi, people, if you follow my posts you'll know that I was struggling to get meshmixer working in my Ubuntu 15.10 and even tried to 'hack' into the package to change its dependencies.

I just found out a method that allows me to use it in my computer in whichever version of Ubuntu I am, and I would like to share.

The way to accomplish that is by using the lightweight virtualization solution "LXC", based in containers. So you just need lxc installed on your distro and then you need to install a container with Ubuntu 14.04 64-bits in it, set up necessary conditions for display and then install Ubuntu.

I borrowed from two guides from Stéphane Graber, this one and this one. I skipped the pulseaudio part, since meshmixer does not use sound.

After I installed LXC, I just created a trusty tahr (Ubuntu LTS 14.04) container from the templates:

Code: [Select]
sudo lxc-create -n ubuntu1404 -t ubuntu -- --release trusty
After LXC took its time to download and install Ubuntu and set up the 'ubuntu' user, I changed its configuration, from outside the container, to allow for GUI redirection (note: the container by default in Ubuntu resides under /var/lib/lxc/your_container_name (in my case, /var/lib/lxc/ubuntu1404). You better ensure there is enough space since it can take a couple gigabytes (took 3 in my installation).

Note: wherever a ubuntu1404 appears, change for your container name.

Then I proceeded to edit its configuration (I use vi, you might change for your favorite text editor here):

Code: [Select]
sudo vi /var/lib/lxc/ubuntu1404/config
And added the following, at the end of the file:

Code: [Select]
lxc.mount.entry = /dev/dri dev/dri none bind,optional,create=dir
lxc.mount.entry = /tmp/.X11-unix tmp/.X11-unix none bind,optional,create=dir
lxc.mount.entry = /dev/video0 dev/video0 none bind,optional,create=file

lxc.cgroup.devices.allow = c 195:* rwm

I started the container. It gives you a prompt, and that is the way we will get to it to run meshmixer when it's ready:

Code: [Select]
sudo lxc-start -n ubuntu1404 -F
Enter login ubuntu / password ubuntu at the prompt.
You will have to uninstall lightdm / gdm / kdm because its startup script removes the all-important file /tmp/.X11-unix/X0 which is an unix socket for communicating with the graphics subsystem. You will also have to prevent the initialization cleaning of /tmp because it also removes this file.
And, as a bonus, you might want to add the i386 architecture, since it comes unconfigured by default.
You will need to add some stuff to ~/.bashrc and also add yourself to the 'video' group.

Code: [Select]
sudo apt-get --purge remove gdm kdm lightdm
sudo dpkg --add-architecture i386
sudo apt-get update
sudo sed -i '/^#TMPTIME.*/TMPTIME=60/' /etc/default/rcS
echo -e '\n# For X11 to work\nexport DISPLAY=:0.0\nexport QT_X11_NO_MITSHM=1\nexport GNOME_DESKTOP_SESSION_ID=this_is_deprecated' >> ~/.bashrc
sudo adduser ubuntu video

Now, install some opengl software just so that it has the necessary libraries to render everything correctly. You also need to install the very same libraries that make GPU acceleration work in your system. In my case, I installed nvidia-libopencl1-340 and nvidia-340. Let's also download gdebi and wget, to download and install meshmixer.

Code: [Select]
sudo apt-get install nvidia-libopencl1-340 nvidia-340 glmark2 mesa-utils wget gdebi xterm
sudo apt-get clean
wget https://s3.amazonaws.com/autodesk-meshmixer/meshmixer/amd64/meshmixer_2.9_amd64.deb

You might want to stop your lxc after that and reboot the host, since from its first invocation it erased your /tmp/.X11-unix/X0. From a terminal outside lxc:

Code: [Select]
sudo lxc-stop -n ubuntu1404
After rebooting and starting your lxc again, having logged in, proceed to install meshmixer with its dependencies:

Code: [Select]
sudo gdebi meshmixer_2.9_amd64.deb
cd ~/Documents
wget https://meshmixer.s3.amazonaws.com/meshmixer.zip
unzip meshmixer.zip && rm meshmizer.zip

It's done. You can start meshmixer through the terminal now but you might want to test the graphical subsystem and acceleration before. The programs xterm, glxinfo and glmark2 will help you with that. Try them in sequence:
Code: [Select]
xterm
glxinfo
glmark2
meshmixer

This recipe can easily be generalized for whatever software you need to run in a specific version of Ubuntu.

Please let me know if you have any problems! I hope to have told you all the steps I have taken, although I skipped the "banging the head on the wall" part.