davesteele / cloudprint-service

Debian packaging for the Python cloudprint proxy utility
GNU General Public License v3.0
71 stars 4 forks source link

Install problem on Raspberry Pi 2 #35

Closed umpire7777777 closed 9 years ago

umpire7777777 commented 9 years ago

When running the install, I get this response sudo apt-get install cloudprint cloudprint-service

The following packages have unmet dependencies: cloudprint : Depends: python-daemon (>= 2.0) but it is not going to be installed cloudprint-service : Depends: systemd but it is not going to be installed

I read a comment about forcing, but I'm not sure exactly what to do, or if it fits this situation. What do I need to do to install this?

Thanks

Raspberry Pi info pi@raspberrypi ~ $ uname -a Linux raspberrypi 3.18.11-v7+ #781 SMP PREEMPT Tue Apr 21 18:07:59 BST 2015 armv7l GNU/Linux

davesteele commented 9 years ago

The latest versions of cloudprint-* have two new features - OAuth2 authentication, which is now required by Google, and 'systemd' support. Systemd is the new way to run services, and is supported in Debian Jessie/stable, but not a lot of other places. Unfortunately, the two features are a package deal.

The 'force' option is not going to be useful for you.

Your options are to figure out how to get a Debian Jessie install, or to find a cloudprintd 'init script' to store as an executable in /etc/init.d (in lieu of installing cloudprint-service). This discusses how you might be able to do that.

davesteele commented 9 years ago

I should say there is a third choice. Install cloudprint, and run from the command line or script with 'cloudprint -d'.

umpire7777777 commented 9 years ago

I completed a "sudo apt-get dist-upgrade" to jessie. The package "python-daemon" in jessie is the same version, 1.5.5-1. I'm getting the same message. Confirmed systemd installed and in use. Do I have to figure out how to get the newer python-daemon version to install on jessie?

davesteele commented 9 years ago

There are again a couple of options.

You could install an older version of cloudprint-service, 0.11-9, that supports OAuth2, but works with the older daemon module. This older version wants a graphical desktop to be available to help with the OAuth2 authentication. This is awkward with Raspberry Pi, but there is a dedicated 'cloudprint-auth' script available to help with authenticating via a separate computer with a desktop.

Or, you could take advantage of the fact that, when using cloudprint-service, the cloudprint daemon module is not used, or even loaded. That puts the 'force' option back in play:

wget http://davesteele.github.io/cloudprint-service/deb/cloudprint-service_0.13-1_all.deb
sudo dpkg --force-depends -i cloudprint-service_0.13-1_all.deb

Note that I haven't tested any of this.

davesteele commented 9 years ago

The python-daemon issue should be fixed in 0.14-2.

PortableTech commented 9 years ago

Just thought I would comment on this one as the problem still seems to exist in 0.14-3

davesteele commented 9 years ago

The new python-daemon proved to be truly incompatible with the old one.

Note that I've had to revert some changes to make a release that is compatible with Debian Stable. If that proves to be OK, it should be useful for Raspberry PI, with a one line change.

Testers are welcome.

hho commented 9 years ago

Your options are to figure out how to get a Debian Jessie install,

The Raspberry Pi 2 now has a Jessie variant of Raspbian available. However, the included cloudprint-service does not support OAuth2. I tried to install the current Versions (0.14-3), but the problem with the Python-Daemon seems to persist.

You could install an older version of cloudprint-service, 0.11-9, that supports OAuth2, but works with the older daemon module.

I've now tried your suggestion from above, installing 0.11-9 and use the cloudprint-auth script to generate a /var/lib/cloudprintd/authfile. Cloudprint now works, but only if I start it manually. When run on boot it tries to ask for a username:

● cloudprintd.service - Google Cloud Print proxy service
   Loaded: loaded (/lib/systemd/system/cloudprintd.service; enabled)
   Active: failed (Result: exit-code) since Wed 2015-10-21 16:39:02 CEST; 26min ago
  Process: 542 ExecStart=/usr/sbin/cloudprintd -a /var/lib/cloudprintd/authfile (code=exited, status=1/FAILURE)
 Main PID: 542 (code=exited, status=1/FAILURE)

Oct 21 16:38:59 raspberrypi systemd[1]: Started Google Cloud Print proxy service.
Oct 21 16:39:01 raspberrypi cloudprintd[542]: Google username: Traceback (most recent call last):
Oct 21 16:39:01 raspberrypi cloudprintd[542]: File "/usr/sbin/cloudprintd", line 9, in <module>
Oct 21 16:39:01 raspberrypi cloudprintd[542]: load_entry_point('cloudprint==0.11', 'console_scripts', 'cloudprint-cmd')()
Oct 21 16:39:01 raspberrypi cloudprintd[542]: File "/usr/share/cloudprint/cloudprint/cloudprint.py", line 457, in main
Oct 21 16:39:01 raspberrypi cloudprintd[542]: cpp.username = raw_input('Google username: ')
Oct 21 16:39:02 raspberrypi cloudprintd[542]: EOFError: EOF when reading a line
Oct 21 16:39:02 raspberrypi systemd[1]: cloudprintd.service: main process exited, code=exited, status=1/FAILURE
Oct 21 16:39:02 raspberrypi systemd[1]: Unit cloudprintd.service entered failed state.

If I understand the output correct, then systemd tries to execute /usr/sbin/cloudprintd -a /var/lib/cloudprintd/authfile. I've tried that on the command line and sure enough, the prompt for the Google username appeared. When used with sudo however it starts up fine. I even made the authfile world-readable, but that doesn't seem to be the problem either.

I'm really out of ideas. How do I make systemd start cloudprintd correctly on boot?

davesteele commented 9 years ago

Your immediate problem is that the directory /var/lib/cloudprintd is not world-readable.

But, there's a Jessie candidate available at http://davesteele.github.io/cloudprint-service/. There's no feedback yet, but it may work for you.

davesteele commented 9 years ago

See #36 for resolution.