After the Ubuntu app showdown is over, I would like to bring some of my tools programmed for Windows in the Software center. Since I'm new into programming for Linux I still have some questions:

1) I have some dependencies (e.g. BLAST). I read that I can configure in Quickly the dependencies that they will be automatically installed with my tool. What I have to add into the file, the link, the name of the tool or something else? An example would be great.

2) Those dependencies produce several (large) output files. Where such files are created and should I move them into my application folder for parsing them?

3) My application creates several files. Where is the best place for storing them in the folder structure of my app created from quickly? How about read and write accessibility of the files?

4) Any other tips or suggestions about I have to take care or which are different from Windows OS?

Any help is very appreciated!


I am the Developer (and packager) of Wallch, which is a C++ application and thus it is not build and packaged with Quickly.

For that reason my answer will include general information about your questions that (should) apply in any case (as far as I know).

Answering your questions, now:


You can set as your application's dependencies, only the ones that are at the default repositories of Ubuntu. You may not include dependencies from PPAs etc. You can add your dependencies at the debian/control file. An example debian/control file for my application is the following: paste.ubuntu.com/1113694.

As you can see, there are 2 'Depends' fields, in the Build-Depends you have to specify what is essential for building your application. I am pretty sure that Quickly should fill this field automatically. The other packages that are important for running your application should be listed under the Depends field. This is were you have to specify any extra dependencies that you have. What you have to specify is the package-name that the user should download and install (this process is automatic, of course)


The dependencies, as far as I understand from your question, are separate programs who can run and produce big output files. Now, it really depends where those files are being stored. I would say that:

  1. If your application indirectly creates those big output files, you can select to save them anywhere you like

  2. If the user separately produces these files, then you can let the user from inside your application to select one of these files for processing.

It really depends on how these files are being produced and what they have to do with your application.

If you just create some files and then you want to process them with your application, then you should use the /tmp directory. Run the dependency-program and guide it to generate the files to /tmp and then have your program read and parse the files from there.


As far as I know (because I participated at this specific contest as well), the structure that Quickly creates lays under /opt/extras.ubuntu.com/programname, where the user doesn't have write permissions. This means that if the user normally opens your application and, from within your application, you have chosen to save your program's files under /opt/extras.ubuntu.com/programname, the user will not be able to save those files. Instead, he will have to run your application with root privileges, which is generally discouraged.

Again, it depends what those files are for. Are those files readable from the user or they are only usable from within your application (something like configuration files)? If the former is true, then you should let the user choose where to save those files. If the latter is true, then you should place those files under ~/.config/ProgramName/ The directory ~/.config/ProgramName is a directory where all applications save their configuration files.

Edit after more requests from comment:

Generally, in your occassion, you should do the following:

  1. Your program generates files depending on user input (which result into ~/.config/ProgName because they might be reused and should not be deleted)
  2. The tools you depend on read these files (from ~/.config/ProgName) and generate some other files (who result into /tmp)
  3. Your program takes the generated files (from the tools) from /tmp and does any calculation/drawing etc... After doing what your application has to do with the final files under /tmp, it would be good to delete them.

As for whether you have read/write permissions at the configuration folder, the user has full read/write permissions in everything under ~/ (your home directory), and thus, everything under ~/.config/ belongs to him as well. Note that the user has read/write permissions under /tmp, as well.

Tip: You can use the mktemp command so as to generate temp files under /tmp with random name

| improve this answer | |
  • Thank you very much for this great answer. The tools on which I depend take as an input files which will be created by my program from the user and create result files from it. This files I'll parse and calculate/draw some stuff with it. If I understand you correctly: The input files (which might be reused) created by the user of my program should go to ~/.config/ProgramName. The output files from the dependency tool which I have to parse should go to /tmp. By default (I think) they go automatically in the application folder of the dependency tool but I think I can change the path parameter – snowflake Jul 27 '12 at 13:31
  • One more question does the user have full write and read permission in ~/.config/ProgramName/? – snowflake Jul 27 '12 at 13:31
  • Please see my edited answer. – hytromo Jul 27 '12 at 13:43
  • Really great, thank you very much. All my questions are solved, now I can start! – snowflake Jul 27 '12 at 13:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.