[DRE-maint] Bug#852187: diaspora: current installation report
Julian Gilbey
jdg at debian.org
Sun Jan 22 11:41:13 UTC 2017
Package: diaspora
Version: 0.6.0.0+debian-8
Severity: normal
Hi Pirate,
Here's a report on issues I've found trying to install the current
(0.6.0.0+debian-8) version of diaspora.
(1) The diaspora preinst reads on line 15:
if su diaspora -s /bin/sh -c "psql diaspora_production -c ''"
Unfortunately, this may fail as the diaspora user is not created
until the diaspora-common *postinst*, and the diaspora preinst may
be run before this. Instead, you probably want to change the user
to be "su postgres" as the postgres user (if it exists at this
point) will certainly be able to run this command. (If postgres
has not been installed, then dbexist will remain undefined.)
I'd also add a "-" to the su command, and lose the output:
su - postgres -c "psql diaspora_production -c ''" >&/dev/null
Actually, if the diaspora package assumes that the backing
database will be postgresql, (which may or may not be the case -
I'm not sure), then it needs to Depends or Pre-Depends on an
appropriate postgresql package - diaspora-common only depends on a
choice of mysql or postgres. And the diaspora-common package
gives the option of psql or mysql, so this could be a problem.
(2) This is a serious bug, and renders diaspora not fit for testing;
I'm not setting the severity right now to give the current
unstable version a chance to enter testing, as the bug in the
current testing version is even worse.
The diaspora process writes to /usr, which is expressly forbidden
by policy: /usr might be on a read-only filesystem. See the FHS,
very beginning of chapter 4:
Chapter 4. The /usr Hierarchy
Purpose
/usr is the second major section of the filesystem. /usr is
shareable, read-only data. That means that /usr should be
shareable between various FHS-compliant hosts and must not be
written to. Any information that is host-specific or varies
with time is stored elsewhere.
To be more precise, it stores temporary information in
/usr/share/diaspora/tmp, rather than /var/run/diaspora.
I *think* this can be solved by putting in a symlink
/usr/share/diaspora/tmp -> /var/run/diaspora, but
/var/run/diaspora would have to be created and owned by
diaspora:nogroup before starting diaspora. I haven't determined
when this directory is and is not used, though - there's something
weird going on on my machine regarding this, and I'm not convinced
that this solution works.
This also appears in /etc/nginx/sites-available/diaspora, where it
listens on /usr/share/diaspora/tmp/diaspora.sock - this should be
in /var/run.
(3) Following on from point (2), uploads I believe will be written to
public/uploads (that's what happens on my production machine,
running 0.6.2.0, and is implied by the nginx configuration). So
/usr/share/diaspora/public/uploads should be a symlink to some
directory within /var/lib/diaspora, say
/var/lib/diaspora/public/uploads, owned by diaspora:nogroup and
with write permissions for diaspora.
Again, this may need fixing in the nginx configuration, too,
though if nginx follows the symlink it will be OK as is.
(4) /etc/diaspora/diaspora.yml still specifies: rails_environment:
'development' rather than 'production'; this is also the case in
/etc/diaspora/defaults.yml (which may not need modification; I
presume that this is the defaults, and is overridden by
diaspora.yml).
(5) I mentioned in an earlier email if I recall correctly that
/etc/diaspora/diaspora.yml does not have url: set to the debconf
setting; I'm unclear as to whether this is a problem as a reverse
proxy is being used.
Best wishes,
Julian
More information about the Pkg-ruby-extras-maintainers
mailing list