[SOLVED] Executing letsencrypt-auto inside a linux vserver results in Errno 28 (no space left on device) during pip upgrade phase

I’d like to run the letsencrypt client inside a linux vserver guest. During the first run in the pip update phase I get a IOError: [Errno 28] No space left on device Error. Not sure if this has something to do with it running inside a vserver, because there is plenty of space. I’m not runnig lvm or such. Here’s the stacktrace:

$ ./letsencrypt-auto
Updating letsencrypt and virtual environment dependencies.....Exception:
Traceback (most recent call last):
  File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/pip/basecommand.py", line 211, in main
    status = self.run(options, args)
  File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/pip/commands/install.py", line 294, in run
    requirement_set.prepare_files(finder)
  File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/pip/req/req_set.py", line 334, in prepare_files
    functools.partial(self._prepare_file, finder))
  File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/pip/req/req_set.py", line 321, in _walk_req_to_install
    more_reqs = handler(req_to_install)
  File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/pip/req/req_set.py", line 491, in _prepare_file
    session=self.session)
  File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/pip/download.py", line 825, in unpack_url
    session,
  File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/pip/download.py", line 673, in unpack_http_url
    from_path, content_type = _download_http_url(link, session, temp_dir)
  File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/pip/download.py", line 886, in _download_http_url
    _download_url(resp, link, content_file)
  File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/pip/download.py", line 624, in _download_url
    content_file.write(chunk)
IOError: [Errno 28] No space left on device

more verbose

./letsencrypt-auto --verbose
Updating letsencrypt and virtual environment dependencies...
Requirement already up-to-date: setuptools in /root/.local/share/letsencrypt/lib/python2.7/site-packages
Requirement already up-to-date: pip in /root/.local/share/letsencrypt/lib/python2.7/site-packages
Collecting letsencrypt
  Using cached letsencrypt-0.1.1-py2-none-any.whl
Collecting letsencrypt-apache
  Using cached letsencrypt_apache-0.1.1-py2-none-any.whl
Collecting zope.interface (from letsencrypt)
  Using cached zope.interface-4.1.3.tar.gz
Requirement already up-to-date: setuptools in /root/.local/share/letsencrypt/lib/python2.7/site-packages (from letsencrypt)
Collecting python2-pythondialog>=3.2.2rc1 (from letsencrypt)
  Using cached python2-pythondialog-3.3.0.tar.bz2
Collecting PyOpenSSL (from letsencrypt)
  Using cached pyOpenSSL-0.15.1-py2.py3-none-any.whl
Collecting requests (from letsencrypt)
  Using cached requests-2.9.1-py2.py3-none-any.whl
Collecting cryptography>=0.7 (from letsencrypt)
  Using cached cryptography-1.1.2.tar.gz
Collecting parsedatetime (from letsencrypt)
  Using cached parsedatetime-1.5-py2-none-any.whl
Collecting configobj (from letsencrypt)
  Using cached configobj-5.0.6.tar.gz
Collecting pytz (from letsencrypt)
  Using cached pytz-2015.7-py2.py3-none-any.whl
Collecting psutil>=2.1.0 (from letsencrypt)
  Using cached psutil-3.3.0.tar.gz
Exception:
Traceback (most recent call last):
  File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/pip/basecommand.py", line 211, in main
    status = self.run(options, args)
  File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/pip/commands/install.py", line 294, in run
    requirement_set.prepare_files(finder)
  File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/pip/req/req_set.py", line 334, in prepare_files
    functools.partial(self._prepare_file, finder))
  File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/pip/req/req_set.py", line 321, in _walk_req_to_install
    more_reqs = handler(req_to_install)
  File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/pip/req/req_set.py", line 491, in _prepare_file
    session=self.session)
  File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/pip/download.py", line 825, in unpack_url
    session,
  File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/pip/download.py", line 677, in unpack_http_url
    unpack_file(from_path, location, content_type, link)
  File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/pip/utils/__init__.py", line 650, in unpack_file
    untar_file(filename, location)
  File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/pip/utils/__init__.py", line 626, in untar_file
    destfp.close()
IOError: [Errno 28] No space left on device

Sounds like a full temp directory. Try setting your temp dir to some path that has enough space before running letsencrypt-auto.

export TMPDIR="/path/with/more/space"

(Untested. If this doesn’t work, try cleaning up your current temp directory.)

1 Like

jap, that did the trick, thanks!