I have a linux hosting account with Godaddy (Centos 5.5), and I am developing an application to process users MS Office documents.

I have found solutions such as antiword, unoconv, catdoc, Apach POI/tika that can read office documents from the command line.

The problem is that I do not have root access to install any of these packages, and POI/tike requires Java to be installed which is also not the case here. I cannot use yum or apt-get or even RPM or make. I can use python easy_install though.

So my question is:

  • Are you aware of any Python or Perl library that can read MS Office documents without the need to install anything else ?

  • Are you aware of any linux packages that can be used to handle MS Office documents without installation?

  • Is there a way to manually install a package locally without yum or apt-get or RPM or make?

  • Is it possible to install yum or apt-get locally on a folder that I have permissions to use?

  • You don't need root access to install binaries, only to install binaries in the /usr/bin and other global locations. Installing them in your home dir is always possible. Jan 15 '13 at 15:07
  • how can I install them in my home directory? using which commands? Let's try for example catdoc-0.94.2.tar.gz ftp.wagner.pp.ru/pub/catdoc/catdoc-0.94.2.tar.gz
    – hmghaly
    Jan 15 '13 at 15:10
  • can you expand on "process"? process how?
    – ysth
    Jan 15 '13 at 17:55
  • I want to extract text from ms word documents and then will analyze this text.
    – hmghaly
    Jan 15 '13 at 18:56
  • I am trying to use the following commands without success: -bash-3.2$ make install -bash: make: command not found -bash-3.2$ sudo apt-get install make -bash: sudo: command not found -bash-3.2$ yum install make -bash: yum: command not found -bash-3.2$ apt-get install make -bash: apt-get: command not found
    – hmghaly
    Jan 15 '13 at 18:58

You can't install packages (apt, yum, etc are package managers) because you don't have root. You can, however, compile and build your own binaries, which can live in your user account (under ~/bin, perhaps).

The exact details are going to vary by package, but basically you'll want to:

  • Download source
  • unpack source
  • configure the package (usually './configure' in the package source tree)
  • build the package (usually 'make')
  • install (usually 'make install')

Depending on the package, you might specify install locations during configuration, or perhaps as a variable on the 'make install' command line. As an example, I grabbed the Linux Antiword source tarball from http://www.winfield.demon.nl/#Programmer, and had a look.

It doesn't seem to have a configure step, but it's got two different install targets, and the 'make install' will do a 'local' install (that is, just for the user who's doing the install). That wouldn't require root access.

This can be a bit of a pain in the neck because of differences in how these things are done for different projects, but in the end you'll have everything you need without root.

EDIT TO ADD: If you haven't got the basic build tools on the system (make, gcc, etc), then this is going to be a major problem to accomplish. At that point, your only way to do it yourself is to try pulling the binaries in from another system that you have control over, but that could easily be very hard.

Instead, at that point I'd start asking whether this is the right hosting plan for you. You need to do things that the provider has obviously made no provision for. If you can't get them to add packages, then I'd suggest finding a new provider who will give you a little more flexibility.

  • Sounds good, but when I come to the point to do make: -bash-3.2$ make install -bash: make: command not found tried to install make somehow: -bash-3.2$ sudo apt-get install make -bash: sudo: command not found I don't know how to handle this
    – hmghaly
    Jan 15 '13 at 18:51
  • Oy. They don't even have the standard build tools on there? That means they probably don't have the compilers or anything else. See edits. Jan 15 '13 at 20:47

There are a Perl modules that can read Excel files. Have a look at these:

I'm not aware of any modules that can create .doc files on Linux. You could, however, create Open/Libre Office documents with OpenOffice::OOBuilder. Current MS Offices will read these, but they are not the same.

To learn how to install Perl modules without root, see these questions:

  • Thanks for the help, actually excel is not a big problem since python has already this xlrd library which works nicely. The problem is actually to get ms word documents (2003) from users and read them and extract text from them for further processing
    – hmghaly
    Jan 15 '13 at 18:54
  • You might be able to do something with the XML that is contained within the word 2003 docs. en.wikipedia.org/wiki/… and en.wikipedia.org/wiki/Microsoft_Office_XML_formats, also en.wikipedia.org/wiki/WordProcessingML. I don't know why no-one has ever built a parser for this stuff in Perl.
    – simbabque
    Jan 15 '13 at 19:00
  • I think this is a good direction, but I'm not expecting from users to convert their documents to xml, but I need to have something on the server to do this conversion.
    – hmghaly
    Jan 15 '13 at 19:04
  • You don't have to do that. The documents actually are zip files that contain a folder structure with xml inside.
    – simbabque
    Jan 15 '13 at 19:13
  • I think you are talking about docx not the usual doc files. I think it is easier to handle docx of course, so the question now is how to handle ms word (.doc) files on the linux server?
    – hmghaly
    Jan 15 '13 at 19:15

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.