AnemoneLabs / unmessage

Privacy enhanced instant messenger
GNU General Public License v3.0
43 stars 7 forks source link

Install Troubleshooting #5

Open HulaHoopWhonix opened 7 years ago

HulaHoopWhonix commented 7 years ago

Hi. I ran into a showstopper when following the install steps. Let me know if you need more info.

PS. Also please add python-pip package to the Debian deps needed.

Related error:

 Running setup.py (path:/tmp/pip-build-kM1hTa/PyNaCl/setup.py) egg_info for package PyNaCl

    Installed /tmp/pip-build-kM1hTa/PyNaCl/cffi-1.9.1-py2.7-linux-i686.egg
    Traceback (most recent call last):
      File "<string>", line 17, in <module>
      File "/tmp/pip-build-kM1hTa/PyNaCl/setup.py", line 259, in <module>
        "Programming Language :: Python :: 3.5",
      File "/usr/lib/python2.7/distutils/core.py", line 111, in setup
        _setup_distribution = dist = klass(attrs)
      File "/usr/lib/python2.7/dist-packages/setuptools/dist.py", line 266, in __init__
        _Distribution.__init__(self,attrs)
      File "/usr/lib/python2.7/distutils/dist.py", line 287, in __init__
        self.finalize_options()
      File "/usr/lib/python2.7/dist-packages/setuptools/dist.py", line 301, in finalize_options
        ep.load()(self, ep.name, value)
      File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2190, in load
        ['__name__'])
    ImportError: No module named setuptools_ext
    Complete output from command python setup.py egg_info:

Installed /tmp/pip-build-kM1hTa/PyNaCl/cffi-1.9.1-py2.7-linux-i686.egg

Traceback (most recent call last):

  File "<string>", line 17, in <module>

  File "/tmp/pip-build-kM1hTa/PyNaCl/setup.py", line 259, in <module>

    "Programming Language :: Python :: 3.5",

  File "/usr/lib/python2.7/distutils/core.py", line 111, in setup

    _setup_distribution = dist = klass(attrs)

  File "/usr/lib/python2.7/dist-packages/setuptools/dist.py", line 266, in __init__

    _Distribution.__init__(self,attrs)

  File "/usr/lib/python2.7/distutils/dist.py", line 287, in __init__

    self.finalize_options()

  File "/usr/lib/python2.7/dist-packages/setuptools/dist.py", line 301, in finalize_options

    ep.load()(self, ep.name, value)

  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2190, in load

    ['__name__'])

ImportError: No module named setuptools_ext

----------------------------------------
Cleaning up...
Command python setup.py egg_info failed with error code 1 in /tmp/pip-build-kM1hTa/PyNaCl
Storing debug log for failure in /root/.pip/pip.log
felipedau commented 7 years ago

Hi @HulaHoopWhonix, thanks for trying it out!

That is not clear in the docs, but PyNaCl and unMessage require newer pip and setuptools. Unfortunately the packages for jessie/main are old. I just ran this command in a fresh workstation vm:

user@host:~$ aptitude show python-pip python-setuptools
Package: python-pip               
State: not installed
Version: 1.5.6-5
Priority: optional
Section: python
Maintainer: Debian Python Modules Team <python-modules-team@lists.alioth.debian.org>
Architecture: all
Uncompressed Size: 481 k
Depends: ca-certificates, python-colorama, python-distlib, python-html5lib, python-pkg-resources, python-requests, python-setuptools
         (>= 0.6c1), python-six, python, python:any (< 2.8), python:any (>= 2.7.5-5~)
Recommends: build-essential, python-dev-all (>= 2.6), python-wheel
Description: alternative Python package installer
 pip is a replacement for easy_install, and is intended to be an improved Python package installer.  It integrates with virtualenv,   
 doesn't do partial installs, can save package state for replaying, can install from non-egg sources, and can install from version    
 control repositories.                                                                                                                
Homepage: http://www.pip-installer.org/                                                                                               

Tags: admin::package-management, devel::lang:python, devel::packaging, implemented-in::python, role::program                          

Package: python-setuptools                                                                                                            
State: not installed                                                                                                                  
Version: 5.5.1-1                                                                                                                      
Priority: optional                                                                                                                    
Section: python                                                                                                                       
Maintainer: Matthias Klose <doko@debian.org>                                                                                          
Architecture: all                                                                                                                     
Uncompressed Size: 770 k                                                                                                              
Depends: python:any (>= 2.7), python:any (< 2.8), python-pkg-resources (= 5.5.1-1)                                                    
Conflicts: python-distribute (< 0.7)                                                                                                  
Replaces: python-distribute (< 0.6.6)                                                                                                 
Provides: python-distribute, python2.7-setuptools                                                                                     
Description: Python Distutils Enhancements                                                                                            
 Extensions to the python-distutils for large or complex distributions.                                                               
Homepage: https://pypi.python.org/pypi/setuptools                                                                                     

Tags: devel::lang:python, implemented-in::python, interface::commandline, role::plugin, use::configuring

apt-get install python-pip python-setuptools won't solve the problem and pip install --upgrade pip is wrong because it should not manage packages it did not install :/

The tests we ran did install those packages we listed on the README file with the package manager:

build-essential gcc libffi-dev python-dev tor python-tk

However, we manually installed pip (which automatically installs setuptools) and these are the current versions:

user@host:~$ pip list | egrep 'pip|setuptools'
pip (9.0.1)
setuptools (34.1.0)

We definitely need to clarify the docs, I'm not sure what is the best solution. We either have to ask users to use jessie/testing or to manually install pip. I honestly think both make the UX bad, but IMO manually installing pip seems a bit better than asking users to change apt settings. What do you think?

P.S Were you able to install it after all?

HulaHoopWhonix commented 7 years ago

Got it working :) I'll be sure to get pip manually.

Suggestions for GUI naming:

Copy Identitiy/Copy Key become merged under a Manage My Identity menu

Copy Peer -> My Contacts

Some ideas for the long term future (I can open tickets if you're interested):

Overall you're off to a great start and I can't wait to see what you have in store.

rxcomm commented 7 years ago

I've created a docker image for unMessage. Details are at https://github.com/rxcomm/unmessage-client. The docker image is based on Debian jessie.

The reason I mention that here is because when creating the docker image, I install pip using the https://bootstrap.pypa.io/get-pip.py script. That seems like a possible solution to this issue as well.

For details, see the docker file at https://github.com/rxcomm/unmessage-client/blob/master/src/unmessage-client/Dockerfile#L13.

felipedau commented 7 years ago

On Fri, Feb 03, 2017 at 08:53:33AM -0800, HulaHoopWhonix wrote:

Got it working :) I'll be sure to get pip manually.

Great, thanks!

Suggestions for GUI naming:

Copy Identitiy/Copy Key become merged under a Manage My Identity menu

Copy Peer -> My Contacts

Cool, that's a good idea. The GUI is extremely simple because I do not like Tkinter and wanted to use some kind of WebUI because it is much more powerful than Tkinter and because it is possible to make apps look good (I do not remember @rxcomm's opinion about this). Once we have a decision about that we will start to add more features to the GUI.

Some ideas for the long term future (I can open tickets if you're interested):

  • File transfers

  • VoIP using TCP latency tolerant codecs like those in mumble. That would be huge.

Absolutely! I hope that will not be too hard to implement. We tried to focus on getting packets exchanged so that many features like these can be built on top of that.

  • Allow unmessage-cli and unmessage-gui to run at the same time (I think there was a vague error with this). The cli interface is very useful - I imagine it can be used to remotely interact with bots/automated helpers added as contacts that react to certain woords send via unmessage.

Can can you give me an example about running them at the same time? It is currently possible to do that as long each UI manages a different peer. Would you like to use more than one UI for the same peer? Also, it would be great to know more about the error if you are able to reproduce it.

Yes, most of the features are implemented first on the CLI because it is very easy to do so, differently from the GUI (forms have to be created, etc).

There is currently a "remote mode" in the CLI (enabled with -r) that we use for tests only. That will tell unMessage to parse every message received that starts with a / and run a command. For example, alice sends the following message to bob: /msg charlie hello!. As bob is runnig the CLI with the remote mode enabled, his unMessage will send hello! to charlie. (If alice was also using the CLI, she would have to escape the /: \/msg charlie hello!. That feature was added just for testing purposes and is very dangerous, but it should be possible to make bots to work similarly. Thanks for the suggestion!

  • Perhaps add natural language verification scheme of prettyEasyprivacy to verify contact keys instead of random alphanumeric keys: https://prettyeasyprivacy.com/ Enigmail is integrating this recently.

Cool! That is certainly a great improvement!

Overall you're off to a great start and I can't wait to see what you have in store.

Thanks @HulaHoopWhonix! This repo is pretty new and I still have to create tickets for ideas we had before it was created, so once I'm on that I can create the tickets you suggested, but please feel free to open as many tickets as you want!

Thank you very much!

felipedau commented 7 years ago

On Fri, Feb 03, 2017 at 09:22:00AM -0800, rxcomm wrote:

I've created a docker image for unMessage. Details are at https://github.com/rxcomm/unmessage-client. The docker image is based on Debian jessie.

The reason I mention that here is because when creating the docker image, I install pip using the https://bootstrap.pypa.io/git-pip.py script. That seems like a possible solution to this issue as well.

For details, see the docker file at https://github.com/rxcomm/unmessage-client/blob/master/src/unmessage-client/Dockerfile#L13

That's very interesting! That's a great portable solution (for any kind of app really).

HulaHoopWhonix commented 7 years ago

Tkinter and wanted to use some kind of WebUI because it is much more powerful than Tkinter and because it is possible to make apps look good

Don't worry about making the GUI look good. I was just thinking about how noobs perceive the naming of menus. WebUIs are fundamentally unsecure, susceptible to CSRF and XSS attacks so other soltuions are best IMHO.

It is currently possible to do that as long each UI manages a different peer.

Ok good to know. That's what I meant. No need to interact simultaneously with different interafces with the same peer.

Yes, most of the features are implemented first on the CLI because it is very easy to do so, differently from the GUI (forms have to be created, etc).

Of course. Take your time. Thanks again :)

felipedau commented 7 years ago

Hi! I think I created tickets for everything we discussed here. Please, let me know if I missed something.

I am going to leave this one open as we still have to improve the installation instructions.

On Sat, Feb 04, 2017 at 05:40:04AM -0800, HulaHoopWhonix wrote:

WebUIs are fundamentally unsecure, susceptible to CSRF and XSS attacks so other soltuions are best IMHO.

You are right, but there must be a way to make secure apps with those. I created #18 so we can discuss that.

Thanks @HulaHoopWhonix!

HulaHoopWhonix commented 7 years ago

Hi! I think I created tickets for everything we discussed here.

Yeah you got it.

I'll post there anything interesting relevant to these new tickets.