I'm experimenting with taking snapshots of a linux system (I'm using Antix for the purpose). Everything seems to work, except that SAGE is not copied over faithfully. A few hundred files and about 20 folders are missing, but SAGE being so gigantic, I can't pinpoint exactly which. I'm not 100% sure how the snapshot is made, but as far as I know, the system uses rsync to make a copy of the filesystem. Is there anybody knowledgeable in this matter who could clarify what could be the reason that SAGE is somehow more difficult to copy than other folders?
When I try to start SAGE from the reinstalled snapshot, it results in the following crash-report:
***************************************************************************
IPython post-mortem report
{'commit_hash': '3472a85',
'commit_source': 'installation',
'default_encoding': 'UTF-8',
'ipython_path': '/opt/sage-6.0/local/lib/python2.7/site-packages/IPython',
'ipython_version': '0.13.2',
'os_name': 'posix',
'platform': 'Linux-3.7.10-antix.5-486-smp-i686-with-debian-7.2',
'sys_executable': '/opt/sage-6.0/local/bin/python',
'sys_platform': 'linux2',
'sys_version': '2.7.5 (default, Dec 19 2013, 04:22:57) \n[GCC 4.7.3]'}
***************************************************************************
***************************************************************************
Crash traceback:
---------------------------------------------------------------------------
ImportError Python 2.7.5: /opt/sage-6.0/local/bin/python
Mon Jul 28 10:49:57 2014
A problem occured executing Python code. Here is the sequence of function
calls leading up to the error, with the most recent (innermost) call last.
/opt/sage-6.0/src/bin/sage-ipython in <module>()
2 # -*- coding: utf-8 -*-
3 """
4 Sage IPython startup script.
5 """
6 from sage.misc.interpreter import SageTerminalApp
7
8 # installs the extra readline commands before the IPython initialization begins.
9 from sage.misc.readline_extra_commands import *
10
11 # Make sure we're using the Sage profile if one isn't specified.
12 import sys
13 if '--profile' not in sys.argv:
14 sys.argv.extend(['--profile', 'sage'])
15
16 app = SageTerminalApp.instance()
---> 17 app.initialize()
global app.initialize = <bound method SageTerminalApp.initialize of <sage.misc.interpreter.SageTerminalApp object at 0xb72c44ec>>
18 app.start()
/opt/sage-6.0/local/lib/python2.7/site-packages/IPython/frontend/terminal/ipapp.pyc in initialize(self=<sage.misc.interpreter.SageTerminalApp object>, argv=None)
/opt/sage-6.0/local/lib/python2.7/site-packages/IPython/config/application.pyc in catch_config_error(method=<function initialize>, app=<sage.misc.interpreter.SageTerminalApp object>, *args=(None,), **kwargs={})
69
70 #-----------------------------------------------------------------------------
71 # Application class
72 #-----------------------------------------------------------------------------
73
74 @decorator
75 def catch_config_error(method, app, *args, **kwargs):
76 """Method decorator for catching invalid config (Trait/ArgumentErrors) during init.
77
78 On a TraitError (generally caused by bad config), this will print the trait's
79 message, and exit the app.
80
81 For use on init methods, to prevent invoking excepthook on invalid input.
82 """
83 try:
---> 84 return method(app, *args, **kwargs)
method = <function initialize at 0x89fae9c>
app = <sage.misc.interpreter.SageTerminalApp object at 0xb72c44ec>
args = (None,)
kwargs = {}
85 except (TraitError, ArgumentError) as e:
86 app.print_description()
87 app.print_help()
88 app.print_examples()
89 app.log.fatal("Bad config encountered during initialization:")
90 app.log.fatal(str(e))
91 app.log.debug("Config at the time: %s", app.config)
92 app.exit(1)
93
94
95 class ApplicationError(Exception):
96 pass
97
98
99 class Application(SingletonConfigurable):
/opt/sage-6.0/local/lib/python2.7/site-packages/IPython/frontend/terminal/ipapp.pyc in initialize(self=<sage.misc.interpreter.SageTerminalApp object>, argv=None)
309
310 @catch_config_error
311 def initialize(self, argv=None):
312 """Do actions after construct, but before starting the app."""
313 super(TerminalIPythonApp, self).initialize(argv)
314 if self.subapp is not None:
315 # don't bother initializing further, starting subapp
316 return
317 if not self.ignore_old_config:
318 check_for_old_config(self.ipython_dir)
319 # print self.extra_args
320 if self.extra_args and not self.something_to_run:
321 self.file_to_run = self.extra_args[0]
322 self.init_path()
323 # create the shell
--> 324 self.init_shell()
self.init_shell = <bound method SageTerminalApp.init_shell of <sage.misc.interpreter.SageTerminalApp object at 0xb72c44ec>>
325 # and draw the banner
326 self.init_banner()
327 # Now a variety of things that happen after the banner is printed.
328 self.init_gui_pylab()
329 self.init_extensions()
330 self.init_code()
331
332 def init_shell(self):
333 """initialize the InteractiveShell instance"""
334 # Create an InteractiveShell instance.
335 # shell.display_banner should always be False for the terminal
336 # based app, because we call shell.show_banner() by hand below
337 # so the banner shows *before* all extension loading stuff.
338 self.shell = TerminalInteractiveShell.instance(config=self.config,
339 display_banner=False, profile_dir=self.profile_dir,
/opt/sage-6.0/local/lib/python2.7/site-packages/sage/misc/interpreter.pyc in init_shell(self=<sage.misc.interpreter.SageTerminalApp object>)
735 sage: from sage.misc.interpreter import SageTerminalApp, DEFAULT_SAGE_CONFIG
736 sage: app = SageTerminalApp(config=DEFAULT_SAGE_CONFIG)
737 sage: app.initialize(argv=[]) # indirect doctest
738 sage: app.shell
739 <sage.misc.interpreter.SageInteractiveShell object at 0x...>
740 """
741 # We need verbose crashes for the Sage crash handler. We set it here
742 # so that we don't overwrite the traitlet attribute
743 self.verbose_crash = True
744
745 # Shell initialization
746 self.shell = SageInteractiveShell.instance(config=self.config,
747 display_banner=False, profile_dir=self.profile_dir,
748 ipython_dir=self.ipython_dir)
749 self.shell.configurables.append(self)
--> 750 self.shell.extension_manager.load_extension('sage.misc.sage_extension')
self.shell.extension_manager.load_extension = <bound method ExtensionManager.load_extension of <IPython.core.extensions.ExtensionManager object at 0x8a9376c>>
/opt/sage-6.0/local/lib/python2.7/site-packages/IPython/core/extensions.pyc in load_extension(self=<IPython.core.extensions.ExtensionManager object>, module_str='sage.misc.sage_extension')
75
76 def _on_ipython_dir_changed(self):
77 if not os.path.isdir(self.ipython_extension_dir):
78 os.makedirs(self.ipython_extension_dir, mode = 0777)
79
80 def load_extension(self, module_str):
81 """Load an IPython extension by its module name.
82
83 If :func:`load_ipython_extension` returns anything, this function
84 will return that object.
85 """
86 from IPython.utils.syspathcontext import prepended_to_syspath
87
88 if module_str not in sys.modules:
89 with prepended_to_syspath(self.ipython_extension_dir):
---> 90 __import__(module_str)
global __import__ = undefined
module_str = 'sage.misc.sage_extension'
91 mod = sys.modules[module_str]
92 return self._call_load_ipython_extension(mod)
93
94 def unload_extension(self, module_str):
95 """Unload an IPython extension by its module name.
96
97 This function looks up the extension's name in ``sys.modules`` and
98 simply calls ``mod.unload_ipython_extension(self)``.
99 """
100 if module_str in sys.modules:
101 mod = sys.modules[module_str]
102 self._call_unload_ipython_extension(mod)
103
104 def reload_extension(self, module_str):
105 """Reload an IPython extension by calling reload.
/opt/sage-6.0/local/lib/python2.7/site-packages/sage/misc/sage_extension.py in <module>()
35 2
36
37 In contrast, input to the ``%time`` magic command is preparsed::
38
39 sage: shell.run_cell('%time 594.factor()')
40 CPU times: user ...
41 Wall time: ...
42 2 * 3^3 * 11
43 """
44
45 from IPython.core.hooks import TryNext
46 from IPython.core.magic import Magics, magics_class, line_magic
47 import os
48 import sys
49 import sage
---> 50 import sage.all
global sage.all = undefined
51 from sage.misc.interpreter import preparser
52 from sage.misc.preparser import preparse
53
54 @magics_class
55 class SageMagics(Magics):
56
57 @line_magic
58 def runfile(self, s):
59 r"""
60 Loads the code contained in the file ``s``. This is designed
61 to be used from the command line as ``%runfile /path/to/file``.
62
63 :param s: file to be loaded
64 :type s: string
65
/opt/sage-6.0/local/lib/python2.7/site-packages/sage/all.py in <module>()
120
121 from sage.geometry.all import *
122 from sage.geometry.triangulation.all import *
123 from sage.geometry.riemannian_manifolds.all import *
124
125 from sage.dynamics.all import *
126
127 from sage.homology.all import *
128
129 from sage.quadratic_forms.all import *
130
131 from sage.gsl.all import *
132
133 from sage.games.all import *
134
--> 135 from sage.media.all import *
global sage.media.all = undefined
136
137 from sage.logic.all import *
138
139 from sage.numerical.all import *
140
141 from sage.stats.all import *
142 import sage.stats.all as stats
143
144 import sage.finance.all as finance
145
146 from sage.parallel.all import *
147
148 from sage.ext.fast_callable import fast_callable
149 from sage.ext.fast_eval import fast_float
150
ImportError: No module named media.all
***************************************************************************
History of session input:
*** Last line of input (may not be in above history):