Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

copying the sage installation directory with rsync

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):