Ask Your Question
1

SageMath Installation error

asked 2020-02-15 21:13:10 +0100

powerengineer gravatar image

Hello all, I am using Linux Mint 19.3 and installed SageMath 9.0 from the source. I am not sure what is going on , I even did the

sudo chown -R root:root ./SageMath

sudo ln -s /opt/SageMath/sage /usr/local/bin

sage

commands. I attached the error below. I apologize for the error being long, but I am not sure what any of this means. Thank you for all the help.

sage
mkdir: cannot create directory ‘/home/luis/.sage//R’: Permission denied
/opt/SageMath/src/bin/sage-env: line 469: /home/luis/.sage//R/Makevars.user: No such file or directory
┌────────────────────────────────────────────────────────────────────┐
│ SageMath version 9.0, Release Date: 2020-01-01                     │
│ Using Python 3.7.3. Type "help()" for help.                        │
└────────────────────────────────────────────────────────────────────┘
/opt/SageMath/local/lib/python3.7/site-packages/IPython/paths.py:69: UserWarning: IPython parent '/home/luis/.sage' is not a writable location, using a temp directory.
  " using a temp directory.".format(parent))
---------------------------------------------------------------------------
---------------------------------------------------------------------------
PermissionError               Python 3.7.3: /opt/SageMath/local/bin/python3
                                                   Sat Feb 15 11:27:43 2020
A problem occurred executing Python code.  Here is the sequence of function
calls leading up to the error, with the most recent (innermost) call last.
/opt/SageMath/src/bin/sage-ipython in <module>()
      1 #!/usr/bin/env sage-python
      2 # -*- coding: utf-8 -*-
      3 """
      4 Sage IPython startup script.
      5 """
      6 
      7 # Display startup banner. Do this before anything else to give the user
      8 # early feedback that Sage is starting.
      9 from sage.misc.banner import banner
     10 banner()
     11 
     12 from sage.repl.interpreter import SageTerminalApp
     13 
     14 app = SageTerminalApp.instance()
---> 15 app.initialize()
        global app.initialize = <bound method TerminalIPythonApp.initialize of <sage.repl.interpreter.SageTerminalApp object at 0x7fbcdd2c5278>>
     16 app.start()

</opt/SageMath/local/lib/python3.7/site-packages/decorator.py:decorator-gen-110> in initialize(self=<sage.repl.interpreter.SageTerminalApp object>, argv=None)

/opt/SageMath/local/lib/python3.7/site-packages/traitlets/config/application.py in catch_config_error(method=<function TerminalIPythonApp.initialize>, app=<sage.repl.interpreter.SageTerminalApp object>, *args=(None,), **kwargs={})
     72     TRAITLETS_APPLICATION_RAISE_CONFIG_FILE_ERROR = False
     73 else:
     74     raise ValueError("Unsupported value for environment variable: 'TRAITLETS_APPLICATION_RAISE_CONFIG_FILE_ERROR' is set to '%s' which is none of  {'0', '1', 'false', 'true', ''}."% _envvar )
     75 
     76 
     77 @decorator
     78 def catch_config_error(method, app, *args, **kwargs):
     79     """Method decorator for catching invalid config (Trait/ArgumentErrors) during init.
     80 
     81     On a TraitError (generally caused by bad config), this will print the trait's
     82     message, and exit the app.
     83 
     84     For use on init methods, to prevent invoking excepthook on invalid input.
     85     """
     86     try:
---> 87         return method(app, *args, **kwargs)
        method = <function TerminalIPythonApp.initialize at 0x7fbcd64aa378>
        app = <sage.repl.interpreter.SageTerminalApp object at 0x7fbcdd2c5278>
        args = (None,)
        kwargs = {}
     88     except (TraitError, ArgumentError) as e:
     89         app.print_help()
     90         app.log.fatal("Bad config encountered during initialization:")
     91         app.log.fatal(str(e))
     92         app.log.debug("Config at the time: %s", app.config)
     93         app.exit(1)
     94 
     95 
     96 class ApplicationError(Exception):
     97     pass
     98 
     99 
    100 class LevelFormatter(logging.Formatter):
    101     """Formatter with additional `highlevel` record
    102 

/opt/SageMath/local/lib/python3.7/site-packages/IPython/terminal/ipapp.py in initialize(self=<sage.repl.interpreter.SageTerminalApp object>, argv=None)
    301 
    302         return super(TerminalIPythonApp, self).parse_command_line(argv)
    303     
    304     @catch_config_error
    305     def initialize(self, argv=None):
    306         """Do actions after construct, but before starting the app."""
    307         super(TerminalIPythonApp, self).initialize(argv)
    308         if self.subapp is not None:
    309             # don't bother initializing further, starting subapp
    310             return
    311         # print self.extra_args
    312         if self.extra_args and not self.something_to_run:
    313             self.file_to_run = self.extra_args[0]
    314         self.init_path()
    315         # create the shell
--> 316         self.init_shell()
        self.init_shell = <bound method SageTerminalApp.init_shell of <sage.repl.interpreter.SageTerminalApp object at 0x7fbcdd2c5278>>
    317         # and draw the banner
    318         self.init_banner()
    319         # Now a variety of things that happen after the banner is printed.
    320         self.init_gui_pylab()
    321         self.init_extensions()
    322         self.init_code()
    323 
    324     def init_shell(self):
    325         """initialize the InteractiveShell instance"""
    326         # Create an InteractiveShell instance.
    327         # shell.display_banner should always be False for the terminal
    328         # based app, because we call shell.show_banner() by hand below
    329         # so the banner shows *before* all extension loading stuff.
    330         self.shell = self.interactive_shell_class.instance(parent=self,
    331                         profile_dir=self.profile_dir,

/opt/SageMath/local/lib/python3.7/site-packages/sage/repl/interpreter.py in init_shell(self=<sage.repl.interpreter.SageTerminalApp object>)
    755             This code is based on
    756             :meth:`TerminalIPythonApp.init_shell`.
    757 
    758         EXAMPLES::
    759 
    760             sage: from sage.repl.interpreter import SageTerminalApp
    761             sage: app = SageTerminalApp.instance()
    762             sage: app.shell
    763             <sage.repl.interpreter.SageTestShell object at 0x...>
    764         """
    765         # Shell initialization
    766         self.shell = self.shell_class.instance(
    767             parent=self,
    768             config=self.config,
    769             profile_dir=self.profile_dir,
--> 770             ipython_dir=self.ipython_dir)
        global ipython_dir = undefined
        self.ipython_dir = '/tmp/tmpockv4tsi'
    771         self.shell.configurables.append(self)
    772         self.shell.has_sage_extensions = SAGE_EXTENSION in self.extensions
    773 
    774         # Load the %lprun extension if available
    775         try:
    776             import line_profiler
    777         except ImportError:
    778             pass
    779         else:
    780             self.extensions.append('line_profiler')
    781 
    782         if self.shell.has_sage_extensions:
    783             self.extensions.remove(SAGE_EXTENSION)
    784 
    785             # load sage extension here to get a crash if

/opt/SageMath/local/lib/python3.7/site-packages/traitlets/config/configurable.py in instance(cls=<class 'sage.repl.interpreter.SageTerminalInteractiveShell'>, *args=(), **kwargs={'config': {'TerminalIPythonApp': {'display_banner': False,...']}, 'SageTerminalApp': {'force_interact': True}}, 'ipython_dir': '/tmp/tmpockv4tsi', 'parent': <sage.repl.interpreter.SageTerminalApp object>, 'profile_dir': <IPython.core.profiledir.ProfileDir object>})
    397             >>> class Foo(SingletonConfigurable): pass
    398             >>> foo = Foo.instance()
    399             >>> foo == Foo.instance()
    400             True
    401 
    402         Create a subclass that is retrived using the base class instance::
    403 
    404             >>> class Bar(SingletonConfigurable): pass
    405             >>> class Bam(Bar): pass
    406             >>> bam = Bam.instance()
    407             >>> bam == Bar.instance()
    408             True
    409         """
    410         # Create and save the instance
    411         if cls._instance is None:
--> 412             inst = cls(*args, **kwargs)
        inst = undefined
        cls = <class 'sage.repl.interpreter.SageTerminalInteractiveShell'>
        args = ()
        kwargs = {'parent': <sage.repl.interpreter.SageTerminalApp object at 0x7fbcdd2c5278>, 'config': {'TerminalIPythonApp': {'display_banner': False, 'verbose_crash': True, 'test_shell': False, 'shell_class': <class 'sage.repl.interpreter.SageTerminalInteractiveShell'>}, 'InteractiveShell': {'prompts_class': <class 'sage.repl.prompts.SagePrompts'>, 'ast_node_interactivity': 'all', 'colors': 'LightBG', 'simple_prompt': False, 'term_title': True, 'confirm_exit': False, 'separate_in': ''}, 'TerminalInteractiveShell': {'prompts_class': <class 'sage.repl.prompts.SagePrompts'>, 'ast_node_interactivity': 'all', 'colors': 'LightBG', 'simple_prompt': False, 'term_title': True, 'confirm_exit': False, 'separate_in': ''}, 'InteractiveShellApp': {'extensions': ['sage']}, 'SageTerminalApp': {'force_interact': True}}, 'profile_dir': <IPython.core.profiledir.ProfileDir object at 0x7fbcd64492e8>, 'ipython_dir': '/tmp/tmpockv4tsi'}
    413             # Now make sure that the instance will also be returned by
    414             # parent classes' _instance attribute.
    415             for subclass in cls._walk_mro():
    416                 subclass._instance = inst
    417 
    418         if isinstance(cls._instance, cls):
    419             return cls._instance
    420         else:
    421             raise MultipleInstanceError(
    422                 'Multiple incompatible subclass instances of '
    423                 '%s are being created.' % cls.__name__
    424             )
    425 
    426     @classmethod
    427     def initialized(cls):

/opt/SageMath/local/lib/python3.7/site-packages/IPython/terminal/interactiveshell.py in __init__(self=<sage.repl.interpreter.SageTerminalInteractiveShell object>, *args=(), **kwargs={'config': {'TerminalIPythonApp': {'display_banner': False,...']}, 'SageTerminalApp': {'force_interact': True}}, 'ipython_dir': '/tmp/tmpockv4tsi', 'parent': <sage.repl.interpreter.SageTerminalApp object>, 'profile_dir': <IPython.core.profiledir.ProfileDir object>})
    425 
    426     def init_alias(self):
    427         # The parent class defines aliases that can be safely used with any
    428         # frontend.
    429         super(TerminalInteractiveShell, self).init_alias()
    430 
    431         # Now define aliases that only make sense on the terminal, because they
    432         # need direct access to the console in a way that we can't emulate in
    433         # GUI or web frontend
    434         if os.name == 'posix':
    435             for cmd in ['clear', 'more', 'less', 'man']:
    436                 self.alias_manager.soft_define_alias(cmd, cmd)
    437 
    438 
    439     def __init__(self, *args, **kwargs):
--> 440         super(TerminalInteractiveShell, self).__init__(*args, **kwargs)
        global super = undefined
        global TerminalInteractiveShell = <class 'IPython.terminal.interactiveshell.TerminalInteractiveShell'>
        self.__init__ = <bound method TerminalInteractiveShell.__init__ of <sage.repl.interpreter.SageTerminalInteractiveShell object at 0x7fbcdd3a6cc0>>
        args = ()
        kwargs = {'parent': <sage.repl.interpreter.SageTerminalApp object at 0x7fbcdd2c5278>, 'config': {'TerminalIPythonApp': {'display_banner': False, 'verbose_crash': True, 'test_shell': False, 'shell_class': <class 'sage.repl.interpreter.SageTerminalInteractiveShell'>}, 'InteractiveShell': {'prompts_class': <class 'sage.repl.prompts.SagePrompts'>, 'ast_node_interactivity': 'all', 'colors': 'LightBG', 'simple_prompt': False, 'term_title': True, 'confirm_exit': False, 'separate_in': ''}, 'TerminalInteractiveShell': {'prompts_class': <class 'sage.repl.prompts.SagePrompts'>, 'ast_node_interactivity': 'all', 'colors': 'LightBG', 'simple_prompt': False, 'term_title': True, 'confirm_exit': False, 'separate_in': ''}, 'InteractiveShellApp': {'extensions': ['sage']}, 'SageTerminalApp': {'force_interact': True}}, 'profile_dir': <IPython.core.profiledir.ProfileDir object at 0x7fbcd64492e8>, 'ipython_dir': '/tmp/tmpockv4tsi'}
    441         self.init_prompt_toolkit_cli()
    442         self.init_term_title()
    443         self.keep_running = True
    444 
    445         self.debugger_history = InMemoryHistory()
    446 
    447     def ask_exit(self):
    448         self.keep_running = False
    449 
    450     rl_next_input = None
    451 
    452     def pre_prompt(self):
    453         if self.rl_next_input:
    454             # We can't set the buffer here, because it will be reset just after
    455             # this. Adding a callable to pre_run_callables does what we need

/opt/SageMath/local/lib/python3.7/site-packages/IPython/core/interactiveshell.py in __init__(self=<sage.repl.interpreter.SageTerminalInteractiveShell object>, ipython_dir='/tmp/tmpockv4tsi', profile_dir=<IPython.core.profiledir.ProfileDir object>, user_module=None, user_ns=None, custom_exceptions=((), None), **kwargs={'config': {'TerminalIPythonApp': {'display_banner': False,...']}, 'SageTerminalApp': {'force_interact': True}}, 'parent': <sage.repl.interpreter.SageTerminalApp object>})
    488         self.init_builtins()
    489 
    490         # The following was in post_config_initialization
    491         self.init_inspector()
    492         if py3compat.PY3:
    493             self.raw_input_original = input
    494         else:
    495             self.raw_input_original = raw_input
    496         self.init_completer()
    497         # TODO: init_io() needs to happen before init_traceback handlers
    498         # because the traceback handlers hardcode the stdout/stderr streams.
    499         # This logic in in debugger.Pdb and should eventually be changed.
    500         self.init_io()
    501         self.init_traceback_handlers(custom_exceptions)
    502         self.init_prompts()
--> 503         self.init_display_formatter()
        self.init_display_formatter = <bound method SageTerminalInteractiveShell.init_display_formatter of <sage.repl.interpreter.SageTerminalInteractiveShell object at 0x7fbcdd3a6cc0>>
    504         self.init_display_pub()
    505         self.init_data_pub()
    506         self.init_displayhook()
    507         self.init_magics()
    508         self.init_alias()
    509         self.init_logstart()
    510         self.init_pdb()
    511         self.init_extension_manager()
    512         self.init_payload()
    513         self.init_deprecation_warnings()
    514         self.hooks.late_startup_hook()
    515         self.events.trigger('shell_initialized', self)
    516         atexit.register(self.atexit_operations)
    517 
    518     def get_ipython(self):

/opt/SageMath/local/lib/python3.7/site-packages/sage/repl/interpreter.py in init_display_formatter(self=<sage.repl.interpreter.SageTerminalInteractiveShell object>)
    242 
    243         sage: from sage.repl.interpreter import SageTerminalInteractiveShell
    244         sage: SageTerminalInteractiveShell()   # not tested
    245         <sage.repl.interpreter.SageNotebookInteractiveShell object at 0x...>
    246     """
    247 
    248     def init_display_formatter(self):
    249         """
    250         Switch to the Sage IPython commandline rich output backend
    251 
    252         EXAMPLES::
    253 
    254             sage: from sage.repl.interpreter import SageTerminalInteractiveShell
    255             sage: SageTerminalInteractiveShell().init_display_formatter()   # not tested
    256         """
--> 257         from sage.repl.rich_output.backend_ipython import BackendIPythonCommandline
        global sage.repl.rich_output.backend_ipython = undefined
        BackendIPythonCommandline = undefined
    258         backend = BackendIPythonCommandline()
    259         backend.get_display_manager().switch_backend(backend, shell=self)
    260 
    261 
    262 class SageTestShell(SageShellOverride, TerminalInteractiveShell):
    263     """
    264     Test Shell
    265 
    266     Care must be taken in these doctests to quit the test shell in
    267     order to switch back the rich output display backend to the
    268     doctest backend.
    269 
    270     EXAMPLES::
    271 
    272         sage: from sage.repl.interpreter import get_test_shell

/opt/SageMath/local/lib/python3.7/site-packages/sage/repl/rich_output/__init__.py in <module>()
      1 # -*- encoding: utf-8 -*-
      2 
----> 3 from .display_manager import get_display_manager
        global display_manager = undefined
        global get_display_manager = undefined
      4 from .pretty_print import pretty_print
      5 
      6 

/opt/SageMath/local/lib/python3.7/site-packages/sage/repl/rich_output/display_manager.py in <module>()
     24     The Sage display manager using the doctest backend
     25 """
     26 
     27 # ****************************************************************************
     28 #       Copyright (C) 2015 Volker Braun ;
     29 #
     30 #  Distributed under the terms of the GNU General Public License (GPL)
     31 #  as published by the Free Software Foundation; either version 2 of
     32 #  the License, or (at your option) any later version.
     33 #                
     34 # ****************************************************************************
     35 
     36 
     37 import warnings
     38 
---> 39 from sage.structure.sage_object import SageObject
        global sage.structure.sage_object = undefined
        global SageObject = undefined
     40 from sage.repl.rich_output.output_basic import (
     41     OutputPlainText, OutputAsciiArt, OutputUnicodeArt, OutputLatex,
     42 )
     43 from sage.repl.rich_output.preferences import DisplayPreferences
     44 
     45 
     46 class DisplayException(Exception):
     47     """
     48     Base exception for all rich output-related exceptions.
     49 
     50     EXAMPLES::
     51 
     52         sage: from sage.repl.rich_output.display_manager import DisplayException
     53         sage: raise DisplayException('foo')
     54         Traceback (most recent call last):

/opt/SageMath/local/lib/python3.7/site-packages/sage/structure/__init__.py in <module>()
      1 # Resolve a cyclic import
----> 2 import sage.structure.element
        global sage.structure.element = undefined

/opt/SageMath/local/lib/python3.7/site-packages/sage/structure/element.pyx in init sage.structure.element (build/cythonized/sage/structure/element.c:33434)()
----> 1 r"""
      2 Elements
      3 
      4 AUTHORS:
      5 
      6 - David Harvey (2006-10-16): changed CommutativeAlgebraElement to
      7   derive from CommutativeRingElement instead of AlgebraElement
      8 
      9 - David Harvey (2006-10-29): implementation and documentation of new
     10   arithmetic architecture
     11 
     12 - William Stein (2006-11): arithmetic architecture -- pushing it
     13   through to completion.
     14 
     15 - Gonzalo Tornaria (2007-06): recursive base extend for coercion --
     16   lots of tests
     17 
     18 - Robert Bradshaw (2007-2010): arithmetic operators and coercion
     19 
     20 - Maarten Derickx (2010-07): added architecture for is_square and sqrt
     21 
     22 - Jeroen Demeyer (2016-08): moved all coercion to the base class
     23   :class:`Element`, see :trac:`20767`
     24 
     25 The Abstract Element Class Hierarchy
     26 ====================================
     27 
     28 This is the abstract class hierarchy, i.e., these are all
     29 abstract base classes.
     30 
     31 ::

/opt/SageMath/local/lib/python3.7/site-packages/sage/structure/sage_object.pyx in init sage.structure.sage_object (build/cythonized/sage/structure/sage_object.c:11573)()
      1 # -*- encoding: utf-8 -*-
      2 r"""
      3 Abstract base class for Sage objects
      4 """
      5 
----> 6 from sage.misc.persist import (_base_dumps, _base_save,
        global sage.misc.persist = undefined
        global _base_dumps = undefined
        global _base_save = undefined
        global register_unpickle_override = undefined
        global make_None = undefined
      7                                register_unpickle_override, make_None)
      8 
      9 from sage.misc.lazy_import import LazyImport
     10 
     11 # NOTE: These imports are just for backwards-compatibility
     12 loads = LazyImport('sage.misc.persist', 'loads', deprecation=25153)
     13 dumps = LazyImport('sage.misc.persist', 'dumps', deprecation=25153)
     14 save = LazyImport('sage.misc.persist', 'save', deprecation=25153)
     15 load = LazyImport('sage.misc.persist', 'load', deprecation=25153)
     16 unpickle_all = LazyImport('sage.misc.persist', 'unpickle_all',
     17                           deprecation=25153)
     18 unpickle_global = LazyImport('sage.misc.persist', 'unpickle_global',
     19                              deprecation=25153)
     20 unpickle_override = LazyImport('sage.misc.persist', 'unpickle_override',
     21                                deprecation=25153)
     22 
     23 
     24 # Generators is no longer used (#21382)
     25 register_unpickle_override('sage.structure.generators', 'make_list_gens',
     26                            make_None)
     27 
     28 
     29 __all__ = ['SageObject']
     30 
     31 

/opt/SageMath/local/lib/python3.7/site-packages/sage/misc/persist.pyx in init sage.misc.persist (build/cythonized/sage/misc/persist.c:11825)()
     28 """
     29 
     30 import io
     31 import os
     32 import sys
     33 
     34 from textwrap import dedent
     35 
     36 # change to import zlib to use zlib instead; but this
     37 # slows down loading any data stored in the other format
     38 import zlib; comp = zlib
     39 import bz2; comp_other = bz2
     40 
     41 from six.moves import cPickle as pickle
     42 
---> 43 from .misc import SAGE_DB
        global misc = undefined
        global SAGE_DB = undefined
     44 from .sage_unittest import TestSuite
     45 
     46 
     47 cdef _normalize_filename(s):
     48     """
     49     Append the .sobj extension to a filename if it doesn't already have it.
     50     """
     51     if s[-5:] != '.sobj':
     52         return s + '.sobj'
     53 
     54     return s
     55 
     56 
     57 def load(*filename, compress=True, verbose=True, **kwargs):
     58     r"""

/opt/SageMath/local/lib/python3.7/site-packages/sage/misc/misc.py in <module>()
     99 # We do the following:
    100 #   1. If there is no DOT_SAGE, we create it.
    101 #   2. Check to see if the permissions on DOT_SAGE are
    102 #      sufficiently restrictive.  If not, we change them.
    103 
    104 sage_makedirs(DOT_SAGE)
    105 
    106 if hasattr(os, 'chmod'):
    107     _mode = os.stat(DOT_SAGE)[stat.ST_MODE]
    108     _desired_mode = 0o40700     # drwx------
    109     if _mode != _desired_mode:
    110         # On Cygwin, if the sage directory is not in a filesystem mounted with
    111         # 'acl' support, setting the permissions may fail silently, so only
    112         # print the message after we've changed the permissions and confirmed
    113         # that the change succeeded
--> 114         os.chmod(DOT_SAGE, _desired_mode)
        global os.chmod = <built-in function chmod>
        global DOT_SAGE = '/home/luis/.sage/'
        global _desired_mode = 16832
    115         if os.stat(DOT_SAGE)[stat.ST_MODE] == _desired_mode:
    116             print("Setting permissions of DOT_SAGE directory so only you "
    117                   "can read and write it.")
    118 
    119 
    120 def try_read(obj, splitlines=False):
    121     r"""
    122     Determine if a given object is a readable file-like object and if so
    123     read and return its contents.
    124 
    125     That is, the object has a callable method named ``read()`` which takes
    126     no arguments (except ``self``) then the method is executed and the
    127     contents are returned.
    128 
    129     Alternatively, if the ``splitlines=True`` is given, first ``splitlines()``

PermissionError: [Errno 1] Operation not permitted: '/home/luis/.sage/'

**********************************************************************

Oops, Sage crashed. We do our best to make it stable, but...

A crash report was automatically generated with the following information:
  - A verbatim copy of the crash traceback.
  - A copy of your input history during this session.
  - Data on your current Sage configuration.

It was left in the file named:
    '/tmp/tmpockv4tsi/Sage_crash_report.txt'
If you can email this file to the developers, the information in it will help
them in understanding and correcting the problem.

You can mail it to: sage-support at 
with the subject 'Sage Crash Report'.

If you want to do it now, the following command will work (under Unix):
mail -s 'Sage Crash Report' 

In your email, please also include information about:
- The operating system under which the crash happened: Linux, macOS, Windows,
  other, and which exact version (for example: Ubuntu 16.04.3, macOS 10.13.2,
  Windows 10 Pro), and whether it is 32-bit or 64-bit;
- How Sage was installed: using pip or conda, from GitHub, as part of
  a Docker container, or other, providing more detail if possible;
- How to reproduce the crash: what exact sequence of instructions can one
  input to get the same crash? Ideally, find a minimal yet complete sequence
  of instructions that yields the crash.

To ensure accurate tracking of this issue, please file a report about it at:


Hit <Enter> to quit (your terminal may close):
edit retag flag offensive close merge delete

Comments

The problem seems that sage created a repository with wrong permissions. Could you post the output of the command

ln -l /home/luis/.sage/

This will show the permission on the repository `/home/luis/.sage/ where Sage is supposed to save things such as the command line history.

Do you happen to have started Sage as root? (ie something like sudo sage) That might explain the problem.

vdelecroix gravatar imagevdelecroix ( 2020-03-07 23:43:37 +0100 )edit

1 Answer

Sort by » oldest newest most voted
1

answered 2020-02-18 12:05:36 +0100

eric_g gravatar image

Apparently, there is an issue with the file permissions. If you don't need to have SageMath installed system wide, I would recommend to install it as an ordinary user (no root) in your home directory:

cd ~
git clone https://github.com/sagemath/sage.git
cd sage 
MAKE="make -j8" make 2>&1

should work, provided you have installed the prerequisites for Ubuntu-based systems.

edit flag offensive delete link more

Comments

You could also remove the directory /home/luis/.sage/. It will be created when Sage starts again, I hope with the correct permissions.

John Palmieri gravatar imageJohn Palmieri ( 2020-03-08 21:16:10 +0100 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2020-02-15 21:13:10 +0100

Seen: 1,890 times

Last updated: Feb 18 '20