[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#657405: installing on wheezy



Hi, 

Thanks for going over this again. I'm at debconf, and have been working
on this package a lot while here. There are a bunch of changes to both
the package and the README.debian. I've responded to specific issues you
ran into bellow, but I'd also recommend taking a look around at the
changes as well. 


Matija Nalis <mnalis-debianbug@voyager.hr> writes:
>> Matija Nalis <mnalis-debianbug@voyager.hr> writes:
>> > - "sudo -u postgres createdb -E UNICODE -O mediagoblin mediagoblin"
>> >   complains with:
>> >   "createdb: database creation failed: ERROR:  new encoding (UTF8) is
>> >    incompatible with the encoding of the template database (SQL_ASCII)
>> >    HINT:  Use the same encoding as in the template database, or use
>> >    template0 as template."
>> >
>> >   So I did: "sudo -u postgres createdb -E UNICODE -T template0 -O mediagoblin mediagoblin" 
>> >   which didn't complain. Hopefully it did the right thing :)
>> 
>> That's strange. It works for me, and psql -c '\list' shows the encoding
>> of template1 as UTF8 on both a wheezy machine and a jessie machine. Is
>> this a fresh install?
>
> No, it was upgrade from squeeze (and possibly woody before that, but probably squeeze was 
> first install).
>
> But even on fresh jessie debootstrap(8) install, it shows for me:
> $ psql -c '\list'
>                                 List of databases
>     Name     |    Owner    | Encoding  | Collate | Ctype |   Access privileges   
> -------------+-------------+-----------+---------+-------+-----------------------
>  mediagoblin | mediagoblin | UTF8      | C       | C     | 
>  postgres    | postgres    | SQL_ASCII | C       | C     | 
>  template0   | postgres    | SQL_ASCII | C       | C     | =c/postgres          +
>              |             |           |         |       | postgres=CTc/postgres
>  template1   | postgres    | SQL_ASCII | C       | C     | =c/postgres          +
>              |             |           |         |       | postgres=CTc/postgres
> (4 rows)
>
> it might be different if installed through debian installer, and user choose something 
> other than "C" locale. I usually choose "C" on servers and even rarely install locales 
> package at all, unless I need it.

I'm not quite sure why this is. I'll look into it more.

>> Again, thanks a lot for going over this package. The updated version
>> can be found on mentors here:
>> https://mentors.debian.net/package/mediagoblin
>
> Thanks a lot! Ok, I tried with:
> http://mentors.debian.net/debian/pool/main/m/mediagoblin/mediagoblin_0.6.1-1+dfsg1.dsc
>
> and clean jessie chroot system (created via debootstrap(8)) - so it would be closer to targeted 
> distribution (I'll try wheezy again when I get it to work in jessie):
>
> - "sudo -u postgres createuser mediagoblin" does not ask any of the questions:
>    > Shall the new role be a superuser? (y/n) n
>    > Shall the new role be allowed to create databases? (y/n) n
>    > Shall the new role be allowed to create more new roles? (y/n) n
>
>   but seems to create user ok. So something to that effect probably should be in docs: 
>   "if you're asked the following questions, the correct answers
>   are..."

The README.debian has the following: 
 Then answer NO to all the questions:
   > Shall the new role be a superuser? (y/n) n
   > Shall the new role be allowed to create databases? (y/n) n
   > Shall the new role be allowed to create more new roles? (y/n) n

> - "sudo -u postgres createdb -E UNICODE -O mediagoblin mediagoblin" still fails:
>   createdb: database creation failed: ERROR:  new encoding (UTF8) is incompatible with the encoding of the template database (SQL_ASCII)
>   HINT:  Use the same encoding as in the template database, or use
>   template0 as template.
>
>   I guess it might be related to system using default C locale, and not something
>   utf8-based, but I don't really know. Anyway workaround with adding "-T template0"
>   seems to work and db is created. I think we should mention that workaround in README.Debian 
>   if the user encounters the bug.

I'll move to 'sudo -u postgres createdb -E UNICODE -T template0 -O
mediagoblin mediagoblin' in the README for now. It should work for both
the UTF8 case and the SQL_ASCII case.

>
> - "3. Add the following to the [mediagoblin] in /etc/mediagoblin.ini:"
>   correct path is /etc/mediagoblin/mediagoblin.ini

Fixed.

> - "$ su - [mediagoblin]"
>   we should drop the square brackets around 'mediagoblin', they're confusing (and don't work).
>   So make it just: '$ su - mediagoblin'

Good point. I've changed it.

> - on "/usr/bin/gmg -cf /etc/mediagoblin/mediagoblin.ini dbupdate"  step, it warns:
>   WARNING:mediagoblin.init.config:When setting up config section, could not import 'mediagoblin.media_types.image'
>   -> Initializing main mediagoblin tables... done.
>      + Laying foundations for Privilege table
>
>   if that warning is OK, we should mention in docs that it should be ignored.
>   If it isn't, we'll need to find out what is the problem (maybe depends on mime.types handler or something?)

There should have been an dependency on python-pil. There is now, and
installing it should fix your issue.

> - "7. Restart nginx, most likely with $ /etc/init.d/nginx restart"
>
>   As we're still running as mediagoblin user in this step, we should indicate 
>   that restarting should be done as root (not as user as '$' suggest);
>   or change the order of commands (so we can say "$ sudo
>   /etc/init.d/nginx restart")

Good point. All of the commands are now done with sudo -u, so this
shouldn't be an issue any more.

> - starting still doesn't work:
>   PYTHONPATH=/usr/share/mediagoblin/ CELERY_ALWAYS_EAGER=false\
>    /usr/bin/paster serve /etc/mediagoblin/mediagoblin/paste.ini\
>      --pid-file=/home/mediagoblin/mediagoblin.pid  --server-name=fcgi\
>      fcgi_host=127.0.0.1 fcgi_port=26543
>
> Until that is solved, we should indicate in README.Debian that due to
> some bug they MUST NOT be in directory  containing *.egg-info files
> (and not default ~mediagoblin, in which they most probably will be if
> they follow instructions)

I've moved many of the files and the .egg_info directory to
/usr/lib/python2.7/dist-packages/, which should fix this issue.

> however, even when I change directory to for example /tmp, it still 
> doesn't work.
>
> Command from README.Debian.gz is:
> PYTHONPATH=/usr/share/mediagoblin/ CELERY_ALWAYS_EAGER=false
>    /usr/bin/paster serve /etc/mediagoblin/mediagoblin/paste.ini\
>      --pid-file=/home/mediagoblin/mediagoblin.pid
>      --server-name=fcgi\
>      fcgi_host=127.0.0.1 fcgi_port=26543
>
> but:
> 1) "/etc/mediagoblin/mediagoblin/paste.ini" should be "/etc/mediagoblin/paste.ini"
> 2) there is no /home/mediagoblin (user was created with
> "/usr/share/mediagoblin" as non-writeable home)

Both of these have been fixed. 

> This fails with new error:
>
> 2014-08-18 13:28:57,606 INFO    [mediagoblin.app] GNU MediaGoblin 0.6.1 main server starting
> 2014-08-18 13:28:57,611 WARNING [mediagoblin.init.config] When setting up config section, could not import 'mediagoblin.media_types.image'
> Traceback (most recent call last):
>   File "/usr/bin/paster", line 4, in <module>
>     command.run()
>   File "/usr/lib/python2.7/dist-packages/paste/script/command.py", line 104, in run
>     invoke(command, command_name, options, args[1:])
>   File "/usr/lib/python2.7/dist-packages/paste/script/command.py", line 143, in invoke
>     exit_code = runner.run(args)
>   File "/usr/lib/python2.7/dist-packages/paste/script/command.py", line 238, in run
>     result = self.command()
>   File "/usr/lib/python2.7/dist-packages/paste/script/serve.py", line 284, in command
>     relative_to=base, global_conf=vars)
>   File "/usr/lib/python2.7/dist-packages/paste/script/serve.py", line 321, in loadapp
>     **kw)
>   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 247, in loadapp
>     return loadobj(APP, uri, name=name, **kw)
>   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 272, in loadobj
>     return context.create()
>   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 710, in create
>     return self.object_type.invoke(self)
>   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 203, in invoke
>     app = context.app_context.create()
>   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 710, in create
>     return self.object_type.invoke(self)
>   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 144, in invoke
>     **context.local_conf)
>   File "/usr/lib/python2.7/dist-packages/paste/deploy/util.py", line 55, in fix_call
>     val = callable(*args, **kw)
>   File "/usr/lib/python2.7/dist-packages/paste/urlmap.py", line 28, in urlmap_factory
>     app = loader.get_app(app_name, global_conf=global_conf)
>   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 350, in get_app
>     name=name, global_conf=global_conf).create()
>   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 710, in create
>     return self.object_type.invoke(self)
>   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 146, in invoke
>     return fix_call(context.object, context.global_conf, **context.local_conf)
>   File "/usr/lib/python2.7/dist-packages/paste/deploy/util.py", line 55, in fix_call
>     val = callable(*args, **kw)
>   File "/usr/share/mediagoblin/mediagoblin/app.py", line 277, in paste_app_factory
>     mgoblin_app = MediaGoblinApp(mediagoblin_config)
>   File "/usr/share/mediagoblin/mediagoblin/app.py", line 74, in __init__
>     setup_crypto()
>   File "/usr/share/mediagoblin/mediagoblin/tools/crypto.py", line 86, in setup_crypto
>     create_key(key_dir, key_filepath)
>   File "/usr/share/mediagoblin/mediagoblin/tools/crypto.py", line 59, in create_key
>     os.makedirs(key_dir) 
>   File "/usr/lib/python2.7/os.py", line 150, in makedirs
>     makedirs(head, mode) 
>   File "/usr/lib/python2.7/os.py", line 157, in makedirs
>     mkdir(name, mode)               
> OSError: [Errno 13] Permission denied: '/etc/mediagoblin/user_dev'
> Removing PID file /tmp/mediagoblin.pid
>
> /etc/mediagobin is writeable only by root, as it probably should be.
> So I created it myself as root:
> - "install -d -m 0755 -g mediagoblin -o mediagoblin
> /etc/mediagoblin/user_dev"

The default paths sucked. It was trying to write user data into
/etc/. The package now includes a paste.ini and a mediagoblin.ini with
sane paths.

> running it again, we get little further:
> 2014-08-18 13:33:09,572 INFO    [mediagoblin.app] GNU MediaGoblin 0.6.1 main server starting
> 2014-08-18 13:33:09,577 WARNING [mediagoblin.init.config] When setting up config section, could not import 'mediagoblin.media_types.image'
> 2014-08-18 13:33:09,590 INFO    [mediagoblin.tools.crypto] Created /etc/mediagoblin/user_dev/crypto
> 2014-08-18 13:33:09,592 INFO    [mediagoblin.tools.crypto] Saved new key for It's Dangerous
> 2014-08-18 13:33:09,647 INFO    [mediagoblin.app] Setting up plugins.
> 2014-08-18 13:33:09,647 INFO    [mediagoblin.init.plugins] Importing plugin module: mediagoblin.plugins.geolocation
> 2014-08-18 13:33:09,647 INFO    [mediagoblin.init.plugins] Importing plugin module: mediagoblin.plugins.basic_auth
> 2014-08-18 13:33:09,647 INFO    [mediagoblin.init.plugins] Importing plugin module: mediagoblin.media_types.image
> Traceback (most recent call last):
>   File "/usr/bin/paster", line 4, in <module>
>     command.run()
>   File "/usr/lib/python2.7/dist-packages/paste/script/command.py", line 104, in run
>     invoke(command, command_name, options, args[1:])
>   File "/usr/lib/python2.7/dist-packages/paste/script/command.py", line 143, in invoke
>     exit_code = runner.run(args)
>   File "/usr/lib/python2.7/dist-packages/paste/script/command.py", line 238, in run
>     result = self.command()
>   File "/usr/lib/python2.7/dist-packages/paste/script/serve.py", line 284, in command
>     relative_to=base, global_conf=vars)
>   File "/usr/lib/python2.7/dist-packages/paste/script/serve.py", line 321, in loadapp
>     **kw)
>   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 247, in loadapp
>     return loadobj(APP, uri, name=name, **kw)
>   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 272, in loadobj
>     return context.create()
>   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 710, in create
>     return self.object_type.invoke(self)
>   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 203, in invoke
>     app = context.app_context.create()
>   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 710, in create
>     return self.object_type.invoke(self)
>   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 144, in invoke
>     **context.local_conf)
>   File "/usr/lib/python2.7/dist-packages/paste/deploy/util.py", line 55, in fix_call
>     val = callable(*args, **kw)
>   File "/usr/lib/python2.7/dist-packages/paste/urlmap.py", line 28, in urlmap_factory
>     app = loader.get_app(app_name, global_conf=global_conf)
>   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 350, in get_app
>     name=name, global_conf=global_conf).create()
>   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 710, in create
>     return self.object_type.invoke(self)
>   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 146, in invoke
>     return fix_call(context.object, context.global_conf, **context.local_conf)
>   File "/usr/lib/python2.7/dist-packages/paste/deploy/util.py", line 55, in fix_call
>     val = callable(*args, **kw)
>   File "/usr/share/mediagoblin/mediagoblin/app.py", line 277, in paste_app_factory
>     mgoblin_app = MediaGoblinApp(mediagoblin_config)
>   File "/usr/share/mediagoblin/mediagoblin/app.py", line 89, in __init__
>     setup_plugins()
>   File "/usr/share/mediagoblin/mediagoblin/init/plugins/__init__.py", line 56, in setup_plugins
>     __import__(plugin_module)
>   File "/usr/share/mediagoblin/mediagoblin/media_types/image/__init__.py", line 20, in <module>
>     from mediagoblin.media_types.image.processing import sniff_handler, \
>   File "/usr/share/mediagoblin/mediagoblin/media_types/image/processing.py", line 20, in <module>
>     import Image
> ImportError: No module named Image
> Removing PID file /tmp/mediagoblin.pid
>
>
> Hmmm, I'm stuck there. It seems maybe like that "could not import
> 'mediagoblin.media_types.image'" was not a harmless warning afterall,
> but we miss depending on something there?

This was the PIL issue above. It should work now

> I've commented out "[[mediagoblin.media_types.image]]" in /etc/mediagoblin/mediagoblin.ini and rerun 
>  "/usr/bin/gmg -cf /etc/mediagoblin/mediagoblin.ini dbupdate", which finally managed to start it:
>
> $ cd /tmp; PYTHONPATH=/usr/share/mediagoblin/ CELERY_ALWAYS_EAGER=false\
>>    /usr/bin/paster serve /etc/mediagoblin/paste.ini\
>>      --pid-file=/tmp/mediagoblin.pid\
>>      --server-name=fcgi\
>>      fcgi_host=127.0.0.1 fcgi_port=26543
> 2014-08-18 13:39:25,476 INFO    [mediagoblin.app] GNU MediaGoblin 0.6.1 main server starting
> 2014-08-18 13:39:25,544 INFO    [mediagoblin.app] Setting up plugins.
> 2014-08-18 13:39:25,545 INFO    [mediagoblin.init.plugins] Importing plugin module: mediagoblin.plugins.geolocation
> 2014-08-18 13:39:25,545 INFO    [mediagoblin.init.plugins] Importing plugin module: mediagoblin.plugins.basic_auth
> 2014-08-18 13:39:25,630 INFO    [mediagoblin.init.celery] Setting celery configuration from object "mediagoblin.init.celery.dummy_settings_module"
> Starting server in PID 19196.
>
> I can create and confirm account. Of course, when I try to add any
> image I get "Sorry, I don't support that file type :(" but that is
> due to above problem.  I think anything on which
> "mediagoblin.media_types.image" depends should be hard "Depends" for
> mediagobling package (as it is most basic type we need to support),
> while mediagoblin.media_types.video and others might be
> recommends/suggests as needed.
>
> This is very close to be easily installable on Jessie. After it works
> by the docs without any issues on a clean system or two, we can try
> to help to ease some of those manual steps (for example prepare
> config files for apache/nginx so they can be enabled more easily;
> package /etc/init.d script, auto create user on install (if not
> found), create subpackages for mediagoblin-pgsql/mediagoblin-sqlite3
> which would do further automation, ask questions and run gmg on
> package (re-)configure etc).  I can help with some of that, probably.

I think you'll find the package much closer to functional now, if
not yet perfect. If you could help with the clean-up and extra niceness
after, that would be fantastic. I'm hoping to get a working version of
the package uploaded before the end of debconf.

Thanks again for going through this and testing it. It's a lot of help! 

Simon

Attachment: pgpAIpTt5srHw.pgp
Description: PGP signature


Reply to: