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-debian...@voyager.hr> writes: >> Matija Nalis <mnalis-debian...@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
pgp2S1BJwBJmS.pgp
Description: PGP signature