NETGEAR is aware of a growing number of phone and online scams. To learn how to stay safe click here.

Forum Discussion

smst's avatar
smst
Aspirant
Jul 18, 2023

ReadyNAS 104 [6.10.8] - Python 2.7 has disappeared

Hi all,

I have a ReadyNAS 104.  Last night I checked the dashboard and saw that firmware 6.10.8 was available to install, so I installed it.  One of my apps stopped working, and some command-line investigation tells me that the relevant .py file that launches the service uses /usr/bin/python .  That is a symlink to python2.7, which doesn't exist.  python2.6 does exist.

 

It looks like Python 2.6 was installed in 2013, and the symlink to 2.7 was installed in 2015.  My guess is that the firmware update removed Python 2.7 but didn't update the symlink to point back to 2.6, thereby breaking anything that used just 'python'.  I can update the symlinks if necessary, although I don't know if the app will run correctly (I can look into that on the app's site) -- but my question is: what happened to 2.7?  I know it's out of support, but why would a firmware update remove it but leave the older 2.6?

 

I did try installing 2.7 with 'apt-get install python2.7' (as root) and got this output:

 

Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
cups : Depends: libcups2 (= 1.7.5-11+deb8u8) but 1.7.5-11+deb8u6 is to be installed
cups-client : Depends: libcups2 (= 1.7.5-11+deb8u8) but 1.7.5-11+deb8u6 is to be installed
cups-core-drivers : Depends: libcups2 (= 1.7.5-11+deb8u8) but 1.7.5-11+deb8u6 is to be installed
cups-daemon : Depends: libcups2 (= 1.7.5-11+deb8u8) but 1.7.5-11+deb8u6 is to be installed
libcupscgi1 : Depends: libcups2 (= 1.7.5-11+deb8u8) but 1.7.5-11+deb8u6 is to be installed
libcupsimage2 : Depends: libcups2 (= 1.7.5-11+deb8u8) but 1.7.5-11+deb8u6 is to be installed
libcupsmime1 : Depends: libcups2 (= 1.7.5-11+deb8u8) but 1.7.5-11+deb8u6 is to be installed
libcupsppdc1 : Depends: libcups2 (= 1.7.5-11+deb8u8) but 1.7.5-11+deb8u6 is to be installed
libpython2.7-stdlib : Depends: libpython2.7-minimal (= 2.7.9-2+deb8u5) but it is not going to be installed
python-minimal : Depends: python2.7-minimal (>= 2.7.9-1~) but it is not going to be installed
python2.7 : Depends: python2.7-minimal (= 2.7.9-2+deb8u5) but it is not going to be installed
systemd-cron : Conflicts: cron-daemon
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

I'm wary of following the advice there because it looks like it wants to downgrade some things.  However those things are mostly cups, which I may have installed myself (a few years ago I was experimenting with using the 104 as a print server after Canon stopped supporting Google Cloud Print).

 

So a follow-up: is cups installed as part of the usual firmware?  If not, I could just remove it and be more likely to be able to install Python 2.7.

 

Thanks,

Steve

9 Replies

Replies have been turned off for this discussion
  • Update on the app: I've found that for the version I have, it requires Python 2.7 and above.  So I can't just switch to running under 2.6.

     

    PS I tried adding the 104 to this post with the "Associated Products" field, but I can't seem to make it show me any NAS products at all.

  • StephenB's avatar
    StephenB
    Guru - Experienced User

    smst wrote:

     

    So a follow-up: is cups installed as part of the usual firmware? 


    This is what I see when I look in my own OS partition:

    find . *cups* | grep -i cups
    ./usr/lib/x86_64-linux-gnu/libcups.so.2
    ./usr/lib/cups
    ./usr/lib/cups/backend
    ./usr/lib/cups/backend/smb
    ./var/lib/dpkg/info/libcups2:amd64.list
    ./var/lib/dpkg/info/libcups2:amd64.symbols
    ./var/lib/dpkg/info/libcups2:amd64.shlibs
    ./var/lib/dpkg/info/libcups2:amd64.postrm

     

    • smst's avatar
      smst
      Aspirant

      I have a lot more than that, even in /usr/lib, which makes me think I have in fact installed some extras at some point.  Since I'm not using the NAS as a print server anyway, I wonder if I should just force the apt-get to update everything then -- it doesn't matter to me if cups breaks, as long as it isn't going to matter to some app that thinks it needs cups to work.

       

      Thanks for the reply -- would you be able to check what you have in terms of /usr/bin/python* please?

      • StephenB's avatar
        StephenB
        Guru - Experienced User

        smst wrote:

         

        Thanks for the reply -- would you be able to check what you have in terms of /usr/bin/python* please?


         

        root@NAS:~# ls -als /usr/bin/python*
        4 lrwxrwxrwx 1 root root 9 Mar 16  2015 /usr/bin/python -> python2.7
        4 lrwxrwxrwx 1 root root 9 Mar 16  2015 /usr/bin/python2 -> python2.7
        root@NAS:~#
        # ls /usr/lib/python2.7
        _abcoll.pyc         dircache.pyc         _LWPCookieJar.pyc      pstats.py               sunau.py
        abc.pyc             dis.pyc              macpath.py             pstats.pyc              sunau.pyc
        aifc.py             dist-packages        macpath.pyc            pty.py                  symbol.py
        aifc.pyc            distutils            macurl2path.py         pty.pyc                 symbol.pyc
        antigravity.py      doctest.py           macurl2path.pyc        pyclbr.py               symtable.py
        antigravity.pyc     doctest.pyc          mailbox.py             pyclbr.pyc              symtable.pyc
        anydbm.py           DocXMLRPCServer.py   mailbox.pyc            py_compile.pyc          _sysconfigdata.pyc
        anydbm.pyc          DocXMLRPCServer.pyc  mailcap.py             pydoc_data              sysconfig.pyc
        argparse.egg-info   dumbdbm.py           mailcap.pyc            pydoc.py                tabnanny.py
        argparse.py         dumbdbm.pyc          markupbase.py          pydoc.pyc               tabnanny.pyc
        argparse.pyc        dummy_threading.py   markupbase.pyc         _pyio.py                tarfile.py
        ast.py              dummy_threading.pyc  md5.pyc                _pyio.pyc               tarfile.pyc
        ast.pyc             dummy_thread.py      mhlib.py               Queue.py                telnetlib.py
        asynchat.py         dummy_thread.pyc     mhlib.pyc              Queue.pyc               telnetlib.pyc
        asynchat.pyc        email                mimetools.py           quopri.py               tempfile.pyc
        asyncore.py         encodings            mimetools.pyc          quopri.pyc              test
        asyncore.pyc        ensurepip            mimetypes.py           random.pyc              textwrap.pyc
        atexit.pyc          filecmp.py           mimetypes.pyc          repr.pyc                this.py
        audiodev.py         filecmp.pyc          MimeWriter.py          re.pyc                  this.pyc
        audiodev.pyc        fileinput.py         MimeWriter.pyc         rexec.py                _threading_local.py
        base64.pyc          fileinput.pyc        mimify.py              rexec.pyc               _threading_local.pyc
        BaseHTTPServer.py   fnmatch.pyc          mimify.pyc             rfc822.py               threading.py
        BaseHTTPServer.pyc  formatter.py         modulefinder.py        rfc822.pyc              threading.pyc
        Bastion.py          formatter.pyc        modulefinder.pyc       rlcompleter.py          timeit.py
        Bastion.pyc         fpformat.py          _MozillaCookieJar.py   rlcompleter.pyc         timeit.pyc
        bdb.py              fpformat.pyc         _MozillaCookieJar.pyc  robotparser.py          toaiff.py
        bdb.pyc             fractions.py         multifile.py           robotparser.pyc         toaiff.pyc
        binhex.py           fractions.pyc        multifile.pyc          runpy.pyc               tokenize.pyc
        binhex.pyc          ftplib.py            multiprocessing        sched.py                token.pyc
        bisect.pyc          ftplib.pyc           mutex.py               sched.pyc               traceback.pyc
        bsddb               functools.pyc        mutex.pyc              sets.py                 trace.py
        calendar.pyc        __future__.pyc       netrc.py               sets.pyc                trace.pyc
        CGIHTTPServer.py    genericpath.pyc      netrc.pyc              sgmllib.py              tty.py
        CGIHTTPServer.pyc   getopt.pyc           new.py                 sgmllib.pyc             tty.pyc
        cgi.py              getpass.py           new.pyc                sha.pyc                 types.pyc
        cgi.pyc             getpass.pyc          nntplib.py             shelve.py               unittest
        cgitb.py            gettext.py           nntplib.pyc            shelve.pyc              urllib2.py
        cgitb.pyc           gettext.pyc          ntpath.py              shlex.py                urllib2.pyc
        chunk.py            glob.pyc             ntpath.pyc             shlex.pyc               urllib.py
        chunk.pyc           gzip.py              nturl2path.py          shutil.pyc              urllib.pyc
        cmd.py              gzip.pyc             nturl2path.pyc         SimpleHTTPServer.py     urlparse.py
        cmd.pyc             hashlib.pyc          numbers.py             SimpleHTTPServer.pyc    urlparse.pyc
        codecs.pyc          heapq.pyc            numbers.pyc            SimpleXMLRPCServer.py   UserDict.pyc
        codeop.py           hmac.py              opcode.pyc             SimpleXMLRPCServer.pyc  UserList.py
        codeop.pyc          hmac.pyc             optparse.pyc           sitecustomize.pyc       UserList.pyc
        code.py             hotshot              os2emxpath.py          site.pyc                user.py
        code.pyc            htmlentitydefs.py    os2emxpath.pyc         smtpd.py                user.pyc
        collections.pyc     htmlentitydefs.pyc   os.pyc                 smtpd.pyc               UserString.py
        colorsys.py         htmllib.py           _osx_support.py        smtplib.py              UserString.pyc
        colorsys.pyc        htmllib.pyc          _osx_support.pyc       smtplib.pyc             uuid.py
        commands.py         HTMLParser.py        pdb.doc                sndhdr.py               uuid.pyc
        commands.pyc        HTMLParser.pyc       pdb.py                 sndhdr.pyc              uu.py
        compileall.pyc      httplib.py           pdb.pyc                socket.pyc              uu.pyc
        compiler            httplib.pyc          __phello__.foo.py      SocketServer.py         warnings.pyc
        ConfigParser.pyc    ihooks.py            __phello__.foo.pyc     SocketServer.pyc        wave.py
        contextlib.pyc      ihooks.pyc           pickle.pyc             sqlite3                 wave.pyc
        cookielib.py        imaplib.py           pickletools.py         sre_compile.pyc         weakref.pyc
        cookielib.pyc       imaplib.pyc          pickletools.pyc        sre_constants.pyc       _weakrefset.pyc
        Cookie.py           imghdr.py            pipes.py               sre_parse.pyc           webbrowser.py
        Cookie.pyc          imghdr.pyc           pipes.pyc              sre.pyc                 webbrowser.pyc
        copy.pyc            importlib            pkgutil.pyc            ssl.pyc                 whichdb.py
        copy_reg.pyc        imputil.py           platform.pyc           stat.pyc                whichdb.pyc
        cProfile.py         imputil.pyc          plat-x86_64-linux-gnu  statvfs.py              wsgiref
        cProfile.pyc        inspect.pyc          plistlib.py            statvfs.pyc             wsgiref.egg-info
        csv.py              io.pyc               plistlib.pyc           StringIO.pyc            xdrlib.py
        csv.pyc             json                 popen2.pyc             stringold.py            xdrlib.pyc
        ctypes              keyword.pyc          poplib.py              stringold.pyc           xml
        curses              lib2to3              poplib.pyc             stringprep.pyc          xmllib.py
        dbhash.py           lib-dynload          posixfile.py           string.pyc              xmllib.pyc
        dbhash.pyc          lib-tk               posixfile.pyc          _strptime.py            xmlrpclib.py
        decimal.py          LICENSE.txt          posixpath.pyc          _strptime.pyc           xmlrpclib.pyc
        decimal.pyc         linecache.pyc        pprint.py              struct.pyc              zipfile.py
        difflib.py          locale.pyc           pprint.pyc             subprocess.pyc          zipfile.pyc
        difflib.pyc         logging              profile.py             sunaudio.py
        dircache.py         _LWPCookieJar.py     profile.pyc            sunaudio.pyc

        I am running 6.10.9.  Though I never explicitly installed python, I did install plex a long time ago - which does include python2.7  I might not have installed plex on one of my backup NAS - I'll check when I have a chance and I'll follow up..

         

NETGEAR Academy

Boost your skills with the Netgear Academy - Get trained, certified and stay ahead with the latest Netgear technology! 

Join Us!

ProSupport for Business

Comprehensive support plans for maximum network uptime and business peace of mind.

 

Learn More