On Sat, Aug 09, 2014 at 07:24:36PM -0400, Simon Fondrie-Teitler wrote: > Thanks a lot for this!
Thank YOU for all the effort in packaging this! > 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. > It looks like I wasn't seeing that since python-webtest recommends > python-lxml. You're right, it should be a depends. Yes, I always try to build (preferably on clean chroot/virtual machine) with 'apt-get --install no-install-recommends', to check if some "recommends/suggests" should be "depends" instead. > 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..." - "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. - "3. Add the following to the [mediagoblin] in /etc/mediagoblin.ini:" correct path is /etc/mediagoblin/mediagoblin.ini - "$ su - [mediagoblin]" we should drop the square brackets around 'mediagoblin', they're confusing (and don't work). So make it just: '$ su - mediagoblin' - 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?) - "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") - 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) 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) So I did this command: "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" 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" 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? 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. Cheers, Matija -- Opinions above are GNU-copylefted. -- To UNSUBSCRIBE, email to debian-wnpp-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/20140818142454.ga13...@eagle102.home.lan