Missing service file for pure-ftpd
Clash Royale CLAN TAG#URR8PPP
Background
I want to change some options of Pure-FTPD. Since it has no config file, I need to add command line arguments. My system is Debian Stretch, which uses systemd.
What I tried
There is no pure-ftpd.service file in /etc/systemd/*
nor in /usr/lib/systemd/*
. I ran updatedb
and then locate pure-ftpd
which gave no results. Running systemctl status pure-ftpd
(or other commands such as restart) works fine.
Finally I found a way to make edits: systemctl edit pure-ftpd
. As suggested by another answer on this site, I typed [Service] n ExecStart=/usr/sbin/pure-ftpd -my options
and hit :wq
. Systemd reloads the service and all is well.
Running systemctl status pure-ftpd
, it tells me:
pure-ftpd.service: Service has more than one ExecStart= setting, which is only allowed for Type=oneshot services. Refusing.
I don't know what a oneshot service is. The documentation doesn't say when to use which, only "it is expected that the process has to exit before systemd starts follow-up units". I don't want systemd to wait for pure-ftpd to exit before starting other "units" (other services?) so that's not an option.
Grepping for pure
(grep -r pure
) in both /etc/systemd
and /usr/lib/systemd
gives only the result that I made myself: /etc/systemd/system/pure-ftpd.service.d/override.conf
. There does not appear to be a service file, yet it complains about a doubly defined ExecStart option.
Calling /etc/init.d/pure-ftpd
directly does not work either. Tracing that shell script, I see systemd hooked into this and hijacks it.
I also ran strace systemd restart pure-ftpd
. Scrolling through, this catches my eye:
socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
connect(3, sa_family=AF_UNIX, sun_path="/run/systemd/private", 22) = 0
sendmsg(3, msg_name=NULL, msg_namelen=0, msg_iov=[iov_base="AUTH EXTERNAL ", iov_len=15, iov_base="30", iov_len=2, iov_base="rnNEGOTIATE_UNIX_FDrnBEGINrn", iov_len=28], msg_iovlen=3, msg_controllen=0, msg_flags=0, MSG_DONTWAIT|MSG_NOSIGNAL) = 45
sendmsg(3, msg_name=NULL, msg_namelen=0, msg_iov=[iov_base="l141$124011o31/org/fre"..., iov_len=176, iov_base="21pure-ftpd.service7repl"..., iov_len=36], msg_iovlen=2, msg_controllen=0, msg_flags=0, MSG_DONTWAIT|MSG_NOSIGNAL) = 212
---------------------->---------------------->---------------------->---------------------->---------------------->--------------------------^^^
So it sends something about "21pure-ftpd.service7repl"...
over a unix socket. And evidently, systemd gets what it's talking about. It appears to me as if there is a template service file which is used by default if the real one is absent.
Attaching strace to the owner of /run/systemd/private
(unsurprisingly: PID 1 / init), I see the authentication and the freedesktop message coming in, after which it immediately replies with an error message about the service not being properly loaded. It never checks for the existence of any files nor does it read from any.
Workarounds
- I can
systemctl disable pure-ftpd
and edit theinit.d
file so it doesn't hook into systemd. But that's just an ugly hack. There should be a better way. - After typing all this, I found another answer describing that you can -- after all! -- do it via a config file and start
pure-ftpd-wrapper
(which is the default in the init.d script, but who knows whether systemd uses that). However, now I want to know the answer to the actual question:
Question
How do I provide additional command line options?
systemd startup arguments pure-ftpd
add a comment |
Background
I want to change some options of Pure-FTPD. Since it has no config file, I need to add command line arguments. My system is Debian Stretch, which uses systemd.
What I tried
There is no pure-ftpd.service file in /etc/systemd/*
nor in /usr/lib/systemd/*
. I ran updatedb
and then locate pure-ftpd
which gave no results. Running systemctl status pure-ftpd
(or other commands such as restart) works fine.
Finally I found a way to make edits: systemctl edit pure-ftpd
. As suggested by another answer on this site, I typed [Service] n ExecStart=/usr/sbin/pure-ftpd -my options
and hit :wq
. Systemd reloads the service and all is well.
Running systemctl status pure-ftpd
, it tells me:
pure-ftpd.service: Service has more than one ExecStart= setting, which is only allowed for Type=oneshot services. Refusing.
I don't know what a oneshot service is. The documentation doesn't say when to use which, only "it is expected that the process has to exit before systemd starts follow-up units". I don't want systemd to wait for pure-ftpd to exit before starting other "units" (other services?) so that's not an option.
Grepping for pure
(grep -r pure
) in both /etc/systemd
and /usr/lib/systemd
gives only the result that I made myself: /etc/systemd/system/pure-ftpd.service.d/override.conf
. There does not appear to be a service file, yet it complains about a doubly defined ExecStart option.
Calling /etc/init.d/pure-ftpd
directly does not work either. Tracing that shell script, I see systemd hooked into this and hijacks it.
I also ran strace systemd restart pure-ftpd
. Scrolling through, this catches my eye:
socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
connect(3, sa_family=AF_UNIX, sun_path="/run/systemd/private", 22) = 0
sendmsg(3, msg_name=NULL, msg_namelen=0, msg_iov=[iov_base="AUTH EXTERNAL ", iov_len=15, iov_base="30", iov_len=2, iov_base="rnNEGOTIATE_UNIX_FDrnBEGINrn", iov_len=28], msg_iovlen=3, msg_controllen=0, msg_flags=0, MSG_DONTWAIT|MSG_NOSIGNAL) = 45
sendmsg(3, msg_name=NULL, msg_namelen=0, msg_iov=[iov_base="l141$124011o31/org/fre"..., iov_len=176, iov_base="21pure-ftpd.service7repl"..., iov_len=36], msg_iovlen=2, msg_controllen=0, msg_flags=0, MSG_DONTWAIT|MSG_NOSIGNAL) = 212
---------------------->---------------------->---------------------->---------------------->---------------------->--------------------------^^^
So it sends something about "21pure-ftpd.service7repl"...
over a unix socket. And evidently, systemd gets what it's talking about. It appears to me as if there is a template service file which is used by default if the real one is absent.
Attaching strace to the owner of /run/systemd/private
(unsurprisingly: PID 1 / init), I see the authentication and the freedesktop message coming in, after which it immediately replies with an error message about the service not being properly loaded. It never checks for the existence of any files nor does it read from any.
Workarounds
- I can
systemctl disable pure-ftpd
and edit theinit.d
file so it doesn't hook into systemd. But that's just an ugly hack. There should be a better way. - After typing all this, I found another answer describing that you can -- after all! -- do it via a config file and start
pure-ftpd-wrapper
(which is the default in the init.d script, but who knows whether systemd uses that). However, now I want to know the answer to the actual question:
Question
How do I provide additional command line options?
systemd startup arguments pure-ftpd
add a comment |
Background
I want to change some options of Pure-FTPD. Since it has no config file, I need to add command line arguments. My system is Debian Stretch, which uses systemd.
What I tried
There is no pure-ftpd.service file in /etc/systemd/*
nor in /usr/lib/systemd/*
. I ran updatedb
and then locate pure-ftpd
which gave no results. Running systemctl status pure-ftpd
(or other commands such as restart) works fine.
Finally I found a way to make edits: systemctl edit pure-ftpd
. As suggested by another answer on this site, I typed [Service] n ExecStart=/usr/sbin/pure-ftpd -my options
and hit :wq
. Systemd reloads the service and all is well.
Running systemctl status pure-ftpd
, it tells me:
pure-ftpd.service: Service has more than one ExecStart= setting, which is only allowed for Type=oneshot services. Refusing.
I don't know what a oneshot service is. The documentation doesn't say when to use which, only "it is expected that the process has to exit before systemd starts follow-up units". I don't want systemd to wait for pure-ftpd to exit before starting other "units" (other services?) so that's not an option.
Grepping for pure
(grep -r pure
) in both /etc/systemd
and /usr/lib/systemd
gives only the result that I made myself: /etc/systemd/system/pure-ftpd.service.d/override.conf
. There does not appear to be a service file, yet it complains about a doubly defined ExecStart option.
Calling /etc/init.d/pure-ftpd
directly does not work either. Tracing that shell script, I see systemd hooked into this and hijacks it.
I also ran strace systemd restart pure-ftpd
. Scrolling through, this catches my eye:
socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
connect(3, sa_family=AF_UNIX, sun_path="/run/systemd/private", 22) = 0
sendmsg(3, msg_name=NULL, msg_namelen=0, msg_iov=[iov_base="AUTH EXTERNAL ", iov_len=15, iov_base="30", iov_len=2, iov_base="rnNEGOTIATE_UNIX_FDrnBEGINrn", iov_len=28], msg_iovlen=3, msg_controllen=0, msg_flags=0, MSG_DONTWAIT|MSG_NOSIGNAL) = 45
sendmsg(3, msg_name=NULL, msg_namelen=0, msg_iov=[iov_base="l141$124011o31/org/fre"..., iov_len=176, iov_base="21pure-ftpd.service7repl"..., iov_len=36], msg_iovlen=2, msg_controllen=0, msg_flags=0, MSG_DONTWAIT|MSG_NOSIGNAL) = 212
---------------------->---------------------->---------------------->---------------------->---------------------->--------------------------^^^
So it sends something about "21pure-ftpd.service7repl"...
over a unix socket. And evidently, systemd gets what it's talking about. It appears to me as if there is a template service file which is used by default if the real one is absent.
Attaching strace to the owner of /run/systemd/private
(unsurprisingly: PID 1 / init), I see the authentication and the freedesktop message coming in, after which it immediately replies with an error message about the service not being properly loaded. It never checks for the existence of any files nor does it read from any.
Workarounds
- I can
systemctl disable pure-ftpd
and edit theinit.d
file so it doesn't hook into systemd. But that's just an ugly hack. There should be a better way. - After typing all this, I found another answer describing that you can -- after all! -- do it via a config file and start
pure-ftpd-wrapper
(which is the default in the init.d script, but who knows whether systemd uses that). However, now I want to know the answer to the actual question:
Question
How do I provide additional command line options?
systemd startup arguments pure-ftpd
Background
I want to change some options of Pure-FTPD. Since it has no config file, I need to add command line arguments. My system is Debian Stretch, which uses systemd.
What I tried
There is no pure-ftpd.service file in /etc/systemd/*
nor in /usr/lib/systemd/*
. I ran updatedb
and then locate pure-ftpd
which gave no results. Running systemctl status pure-ftpd
(or other commands such as restart) works fine.
Finally I found a way to make edits: systemctl edit pure-ftpd
. As suggested by another answer on this site, I typed [Service] n ExecStart=/usr/sbin/pure-ftpd -my options
and hit :wq
. Systemd reloads the service and all is well.
Running systemctl status pure-ftpd
, it tells me:
pure-ftpd.service: Service has more than one ExecStart= setting, which is only allowed for Type=oneshot services. Refusing.
I don't know what a oneshot service is. The documentation doesn't say when to use which, only "it is expected that the process has to exit before systemd starts follow-up units". I don't want systemd to wait for pure-ftpd to exit before starting other "units" (other services?) so that's not an option.
Grepping for pure
(grep -r pure
) in both /etc/systemd
and /usr/lib/systemd
gives only the result that I made myself: /etc/systemd/system/pure-ftpd.service.d/override.conf
. There does not appear to be a service file, yet it complains about a doubly defined ExecStart option.
Calling /etc/init.d/pure-ftpd
directly does not work either. Tracing that shell script, I see systemd hooked into this and hijacks it.
I also ran strace systemd restart pure-ftpd
. Scrolling through, this catches my eye:
socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
connect(3, sa_family=AF_UNIX, sun_path="/run/systemd/private", 22) = 0
sendmsg(3, msg_name=NULL, msg_namelen=0, msg_iov=[iov_base="AUTH EXTERNAL ", iov_len=15, iov_base="30", iov_len=2, iov_base="rnNEGOTIATE_UNIX_FDrnBEGINrn", iov_len=28], msg_iovlen=3, msg_controllen=0, msg_flags=0, MSG_DONTWAIT|MSG_NOSIGNAL) = 45
sendmsg(3, msg_name=NULL, msg_namelen=0, msg_iov=[iov_base="l141$124011o31/org/fre"..., iov_len=176, iov_base="21pure-ftpd.service7repl"..., iov_len=36], msg_iovlen=2, msg_controllen=0, msg_flags=0, MSG_DONTWAIT|MSG_NOSIGNAL) = 212
---------------------->---------------------->---------------------->---------------------->---------------------->--------------------------^^^
So it sends something about "21pure-ftpd.service7repl"...
over a unix socket. And evidently, systemd gets what it's talking about. It appears to me as if there is a template service file which is used by default if the real one is absent.
Attaching strace to the owner of /run/systemd/private
(unsurprisingly: PID 1 / init), I see the authentication and the freedesktop message coming in, after which it immediately replies with an error message about the service not being properly loaded. It never checks for the existence of any files nor does it read from any.
Workarounds
- I can
systemctl disable pure-ftpd
and edit theinit.d
file so it doesn't hook into systemd. But that's just an ugly hack. There should be a better way. - After typing all this, I found another answer describing that you can -- after all! -- do it via a config file and start
pure-ftpd-wrapper
(which is the default in the init.d script, but who knows whether systemd uses that). However, now I want to know the answer to the actual question:
Question
How do I provide additional command line options?
systemd startup arguments pure-ftpd
systemd startup arguments pure-ftpd
asked Jun 18 '17 at 0:04
LucLuc
9721921
9721921
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Did you know that systemd comes with some generators that generate the pure-ftpd.service file for you? The result is a not so nice unit file, but working.
The folder where it is generated is /run/systemd/generator.late
You can see the source with cat pure-ftpd.service
Then, create a new /lib/systemd/system/pure-ftpd.service and put the contents of the /run/ unit in there (then you will be able to tune in the code of the unit).
Take in consideration that init.d is no longer used by debian (while using systemd) and all the non serviced services are generated automatically with the generators.
More info:
https://www.freedesktop.org/software/systemd/man/systemd.generator.html
https://www.freedesktop.org/software/systemd/man/systemd-sysv-generator.html
systemd-sysv-generator is a generator that creates wrapper .service
units for SysV init scripts in /etc/init.d/* at boot and when
configuration of the system manager is reloaded. This will allow
systemd(1) to support them similarly to native units.
If I understand your answer correctly, I can just add a regular service file with the same name to prevent systemd from wrapping the init.d file?
– Luc
Mar 1 at 10:27
@Luc that's it, as the documentation says: Regarding overriding semantics: there are two rules we try to follow when thinking about the overriding semantics: User configuration should override vendor configuration. This (mostly) means that stuff from /etc should override stuff from /usr. Native configuration should override non-native configuration. This (mostly) means that stuff you generate should never override native unit files for the same purpose.
– Marc Palau
Mar 4 at 8:29
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "106"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f371734%2fmissing-service-file-for-pure-ftpd%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Did you know that systemd comes with some generators that generate the pure-ftpd.service file for you? The result is a not so nice unit file, but working.
The folder where it is generated is /run/systemd/generator.late
You can see the source with cat pure-ftpd.service
Then, create a new /lib/systemd/system/pure-ftpd.service and put the contents of the /run/ unit in there (then you will be able to tune in the code of the unit).
Take in consideration that init.d is no longer used by debian (while using systemd) and all the non serviced services are generated automatically with the generators.
More info:
https://www.freedesktop.org/software/systemd/man/systemd.generator.html
https://www.freedesktop.org/software/systemd/man/systemd-sysv-generator.html
systemd-sysv-generator is a generator that creates wrapper .service
units for SysV init scripts in /etc/init.d/* at boot and when
configuration of the system manager is reloaded. This will allow
systemd(1) to support them similarly to native units.
If I understand your answer correctly, I can just add a regular service file with the same name to prevent systemd from wrapping the init.d file?
– Luc
Mar 1 at 10:27
@Luc that's it, as the documentation says: Regarding overriding semantics: there are two rules we try to follow when thinking about the overriding semantics: User configuration should override vendor configuration. This (mostly) means that stuff from /etc should override stuff from /usr. Native configuration should override non-native configuration. This (mostly) means that stuff you generate should never override native unit files for the same purpose.
– Marc Palau
Mar 4 at 8:29
add a comment |
Did you know that systemd comes with some generators that generate the pure-ftpd.service file for you? The result is a not so nice unit file, but working.
The folder where it is generated is /run/systemd/generator.late
You can see the source with cat pure-ftpd.service
Then, create a new /lib/systemd/system/pure-ftpd.service and put the contents of the /run/ unit in there (then you will be able to tune in the code of the unit).
Take in consideration that init.d is no longer used by debian (while using systemd) and all the non serviced services are generated automatically with the generators.
More info:
https://www.freedesktop.org/software/systemd/man/systemd.generator.html
https://www.freedesktop.org/software/systemd/man/systemd-sysv-generator.html
systemd-sysv-generator is a generator that creates wrapper .service
units for SysV init scripts in /etc/init.d/* at boot and when
configuration of the system manager is reloaded. This will allow
systemd(1) to support them similarly to native units.
If I understand your answer correctly, I can just add a regular service file with the same name to prevent systemd from wrapping the init.d file?
– Luc
Mar 1 at 10:27
@Luc that's it, as the documentation says: Regarding overriding semantics: there are two rules we try to follow when thinking about the overriding semantics: User configuration should override vendor configuration. This (mostly) means that stuff from /etc should override stuff from /usr. Native configuration should override non-native configuration. This (mostly) means that stuff you generate should never override native unit files for the same purpose.
– Marc Palau
Mar 4 at 8:29
add a comment |
Did you know that systemd comes with some generators that generate the pure-ftpd.service file for you? The result is a not so nice unit file, but working.
The folder where it is generated is /run/systemd/generator.late
You can see the source with cat pure-ftpd.service
Then, create a new /lib/systemd/system/pure-ftpd.service and put the contents of the /run/ unit in there (then you will be able to tune in the code of the unit).
Take in consideration that init.d is no longer used by debian (while using systemd) and all the non serviced services are generated automatically with the generators.
More info:
https://www.freedesktop.org/software/systemd/man/systemd.generator.html
https://www.freedesktop.org/software/systemd/man/systemd-sysv-generator.html
systemd-sysv-generator is a generator that creates wrapper .service
units for SysV init scripts in /etc/init.d/* at boot and when
configuration of the system manager is reloaded. This will allow
systemd(1) to support them similarly to native units.
Did you know that systemd comes with some generators that generate the pure-ftpd.service file for you? The result is a not so nice unit file, but working.
The folder where it is generated is /run/systemd/generator.late
You can see the source with cat pure-ftpd.service
Then, create a new /lib/systemd/system/pure-ftpd.service and put the contents of the /run/ unit in there (then you will be able to tune in the code of the unit).
Take in consideration that init.d is no longer used by debian (while using systemd) and all the non serviced services are generated automatically with the generators.
More info:
https://www.freedesktop.org/software/systemd/man/systemd.generator.html
https://www.freedesktop.org/software/systemd/man/systemd-sysv-generator.html
systemd-sysv-generator is a generator that creates wrapper .service
units for SysV init scripts in /etc/init.d/* at boot and when
configuration of the system manager is reloaded. This will allow
systemd(1) to support them similarly to native units.
answered Mar 1 at 10:17
Marc PalauMarc Palau
263
263
If I understand your answer correctly, I can just add a regular service file with the same name to prevent systemd from wrapping the init.d file?
– Luc
Mar 1 at 10:27
@Luc that's it, as the documentation says: Regarding overriding semantics: there are two rules we try to follow when thinking about the overriding semantics: User configuration should override vendor configuration. This (mostly) means that stuff from /etc should override stuff from /usr. Native configuration should override non-native configuration. This (mostly) means that stuff you generate should never override native unit files for the same purpose.
– Marc Palau
Mar 4 at 8:29
add a comment |
If I understand your answer correctly, I can just add a regular service file with the same name to prevent systemd from wrapping the init.d file?
– Luc
Mar 1 at 10:27
@Luc that's it, as the documentation says: Regarding overriding semantics: there are two rules we try to follow when thinking about the overriding semantics: User configuration should override vendor configuration. This (mostly) means that stuff from /etc should override stuff from /usr. Native configuration should override non-native configuration. This (mostly) means that stuff you generate should never override native unit files for the same purpose.
– Marc Palau
Mar 4 at 8:29
If I understand your answer correctly, I can just add a regular service file with the same name to prevent systemd from wrapping the init.d file?
– Luc
Mar 1 at 10:27
If I understand your answer correctly, I can just add a regular service file with the same name to prevent systemd from wrapping the init.d file?
– Luc
Mar 1 at 10:27
@Luc that's it, as the documentation says: Regarding overriding semantics: there are two rules we try to follow when thinking about the overriding semantics: User configuration should override vendor configuration. This (mostly) means that stuff from /etc should override stuff from /usr. Native configuration should override non-native configuration. This (mostly) means that stuff you generate should never override native unit files for the same purpose.
– Marc Palau
Mar 4 at 8:29
@Luc that's it, as the documentation says: Regarding overriding semantics: there are two rules we try to follow when thinking about the overriding semantics: User configuration should override vendor configuration. This (mostly) means that stuff from /etc should override stuff from /usr. Native configuration should override non-native configuration. This (mostly) means that stuff you generate should never override native unit files for the same purpose.
– Marc Palau
Mar 4 at 8:29
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f371734%2fmissing-service-file-for-pure-ftpd%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown