473,217 Members | 2,001 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,217 software developers and data experts.

How to write UNIX daemons in Python?

Hi all. I've just finished to write an FTP daemon in Python.
To do things well I'd like to write an 'insteller' to permit the end
user to 'deeply' install the package inside the system. In details I
would like that installer is able to do the following operations:

- copy ftpd.py in /usr/bin.
- depending on the system, it should be able to determinate where
service startup directory is located (for example /etc/init.d) and
copy a script able to automatically run /usr/ftpd.py at startup.
- optionally install a manual callable with "man ftpd".
- many other operations about the installation of a package.

What should I use to do something like that? Do I have to use
distutils? Do I have to use third party packages? Do I have to write a
"setup.py" and solve the problem manually?
This last solution is problematic becouse, for (dumb) example, Debian
wants executable/programs to be located in /usr/bin while Fedora uses
another path (for example /usr/sbin).

Another question: what about .deb, .rpm, [...] packages?
Does it possible to use them with Python programs?
Resolving third party dependancies by using them could be a nice thing.
Best regards

Sep 13 '06 #1
2 2400
gn****@gmail.com wrote:
Hi all. I've just finished to write an FTP daemon in Python.
To do things well I'd like to write an 'insteller' to permit the end
user to 'deeply' install the package inside the system. In details I
would like that installer is able to do the following operations:

- copy ftpd.py in /usr/bin.
- depending on the system, it should be able to determinate where
service startup directory is located (for example /etc/init.d) and
copy a script able to automatically run /usr/ftpd.py at startup.
- optionally install a manual callable with "man ftpd".
- many other operations about the installation of a package.

What should I use to do something like that? Do I have to use
distutils? Do I have to use third party packages? Do I have to write a
"setup.py" and solve the problem manually?
This last solution is problematic becouse, for (dumb) example, Debian
wants executable/programs to be located in /usr/bin while Fedora uses
another path (for example /usr/sbin).

Another question: what about .deb, .rpm, [...] packages?
Does it possible to use them with Python programs?
Resolving third party dependancies by using them could be a nice thing.
You can use setuptools to generate scripts in the various bin-directories.
And of course you could try and make setup.py detect the system & adapt the
necessary paths accordingly.

But the best thing to do would certainly be a package - however, I'm not
aware that there is any support for that. But a look here might be a start:

http://wiki.debian.org/DebianPythonFAQ

Diez
Sep 13 '06 #2
gn****@gmail.com schrieb:
What should I use to do something like that? Do I have to use
distutils? Do I have to use third party packages? Do I have to write a
"setup.py" and solve the problem manually?
This last solution is problematic becouse, for (dumb) example, Debian
wants executable/programs to be located in /usr/bin while Fedora uses
another path (for example /usr/sbin).

Another question: what about .deb, .rpm, [...] packages?
Does it possible to use them with Python programs?
Resolving third party dependancies by using them could be a nice thing.
I would create packages, and therefore restrict attention to the
systems that are to be supported.

For RPM, there is a distutils bdist_rpm command which can help in
generating the RPM. OTOH, it might be actually easier to write a .spec
file and build the RPM "manually".

For .deb, there is also a bdist_deb distutils command (although not
part of the standard Python distribution), again, it is likely easier
to use the standard Debian packaging tool chain (i.e. with an
explicit debian/ subdirectory, initially populated with dh_make).

In either case, it is probably a good idea to look at source packages
to get started quickly.

FWIW, Debian does *not* put daemon programs in /usr/bin. Debian
follows the FHS, which specifies that system binaries go into
/usr/sbin. /usr/bin is limited to user programs.

Regards,
Martin
Sep 13 '06 #3

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

4
by: RosalieM | last post by:
I would like to understand what python needs to work on unix. And to understand how i can make it smalest possible? I dont understand at all setup. I searched in python.org and in sources but it...
2
by: Nigel King | last post by:
Hi, I have (my son has!) implemented protection against multiple instances causing havoc by creating a directory. This fails if it exists and thus in a single instruction one gets both the acquire...
2
by: timdoyle05 | last post by:
Hi, I have a question relating to how Unix commands can be issued from Python programs. Im am currently writing a large test script in python and I need this script to call three other separate...
18
by: Xah Lee | last post by:
i've started to read python tutorial recently. http://python.org/doc/2.3.4/tut/tut.html Here are some quick critique: quick example: If the input string is too long, they don't truncate it,...
4
by: Michael | last post by:
Hi, I'm having difficulty finding any previous discussion on this -- I keep finding people either having problems calling os.exec(lepev), or with using python's exec statement. Neither of...
3
by: Matthew Warren | last post by:
I have the following piece of code, taken from a bigger module, that even as I was writing I _knew_ there were better ways of doing it, using a parser or somesuch at least, but learning how wasn't...
8
by: dmoore | last post by:
Hi folks, I've seen the following issue come up in multiple posts to this mailing list: I have a python program that spawns a child process with popen or popen2 or popen3 or popen2.popen2...
0
by: Andrey | last post by:
HI i have a newbie question about the file() function. I have 2 daemons running on my linux box. 1 will record the IDs to a file - logs.txt other 1 will open this file, read the IDs, and then...
3
by: PurpleServerMonkey | last post by:
Seeking feedback from group members on a design I'm looking at using in a project. I've created an XML-RPC server and a number of Daemons, the idea is that the XML-RPC server gets a request from...
1
isladogs
by: isladogs | last post by:
The next online meeting of the Access Europe User Group will be on Wednesday 6 Dec 2023 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, Mike...
0
by: VivesProcSPL | last post by:
Obviously, one of the original purposes of SQL is to make data query processing easy. The language uses many English-like terms and syntax in an effort to make it easy to learn, particularly for...
0
by: jianzs | last post by:
Introduction Cloud-native applications are conventionally identified as those designed and nurtured on cloud infrastructure. Such applications, rooted in cloud technologies, skillfully benefit from...
0
by: mar23 | last post by:
Here's the situation. I have a form called frmDiceInventory with subform called subfrmDice. The subform's control source is linked to a query called qryDiceInventory. I've been trying to pick up the...
0
by: abbasky | last post by:
### Vandf component communication method one: data sharing ​ Vandf components can achieve data exchange through data sharing, state sharing, events, and other methods. Vandf's data exchange method...
2
by: jimatqsi | last post by:
The boss wants the word "CONFIDENTIAL" overlaying certain reports. He wants it large, slanted across the page, on every page, very light gray, outlined letters, not block letters. I thought Word Art...
0
by: stefan129 | last post by:
Hey forum members, I'm exploring options for SSL certificates for multiple domains. Has anyone had experience with multi-domain SSL certificates? Any recommendations on reliable providers or specific...
1
by: davi5007 | last post by:
Hi, Basically, I am trying to automate a field named TraceabilityNo into a web page from an access form. I've got the serial held in the variable strSearchString. How can I get this into the...
0
by: MeoLessi9 | last post by:
I have VirtualBox installed on Windows 11 and now I would like to install Kali on a virtual machine. However, on the official website, I see two options: "Installer images" and "Virtual machines"....

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.