dpkg error: pycompile: not found

前端 未结 5 813
猫巷女王i
猫巷女王i 2021-02-01 08:31
sudo apt-get remove --purge mysql-server mysql-client mysql-common

I am getting the following error as I try to remove mysql using the above command:

相关标签:
5条回答
  • 2021-02-01 09:08

    Ahhhh, yes. The venerable "Catch-22" situation of Debian package management. It boils down to Debian depending on py3compile as part of the libpython3.x package when that package provides the py3compile as well; it's a no-go, there.

    I too was bitten by this unable to get py3compile working again for I had too deleted the entire /usr/[/local]/lib/python3* directories.

    Once done, nothing in Debian package management tool can help you get back to a working Python3 environment. You must do meat-ball surgery.

    Reconstruction of Python3 in Debian entails three critical things:

    • Restoring py3compile script (for most of you, you already have this)
    • Restoring libpython3.7
    • Restoring python binary

    One could do the RE-copying of /usr[/local]/lib directory from another working Debian host/system. But this time, I shall detail the steps from within the broken host in question (as if you do NOT have another working host).

    Step 1 - Download Packages

    Download the impacted Debian packages:

    cd /tmp
    apt-get download libpython3.7-minimal
    apt-get download python3.7-minimal
    apt-get download python3-minimal # (this is important)
    apt-get download libpython3.7-stdlib
    apt-get download python3.7
    

    Step 2 - Cleanup

    Clean up old stuff

    rm -rf /usr[/local]/lib/python3.7*
    rm -rf /usr[/local]/bin/python3.7*
    update-alternatives --remove python3 /usr[/local]/bin/python3.7
    hash -r  # removes cached python3 binary path
    

    Step 3 - Extract files from packages

    Let us extract the missing py3compile

    cd /tmp
    dpkg-deb -x python3-minimal_3.7.3-1_amd64.deb missing
    dpkg-deb -x python3.7-minimal_3.7.3-2_amd64.deb missing
    dpkg-deb -x libpython3.7-minimal_3.7.3-2_amd64.deb missing
    dpkg-deb -x libpython3.7-stdlib_3.7.3-2_amd64.deb missing
    dpkg-deb -x python3.7_3.7.3-2_amd64.deb missing
    

    Step 3

    Manually install over your root filesystem

    cd /tmp/missing
    ls -lR /tmp/missing  # if you are curious about overwriting your HD
    sudo cp -rpfv /tmp/missing/*  /
    

    Step 4 - Verification

    Start up Python3

    python3
    Python 3.7.3 (default, Apr  3 2019, 05:39:12) 
    [GCC 8.3.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
    

    Test import and show version

    >>> import sys
    >>> print(sys.version_info)
    sys.version_info(major=3, minor=7, micro=3, releaselevel='final', serial=0)
    >>>
    >>> quit()
    

    Step 5 - Clean up ourselves

    rm -rf /tmp/missing
    

    Step 6 - Officially reinstall Python via Debian APT

    dpkg -s -a  | grep  reinstreq
    # Any listing also needs to be reinstalled along with python3
    apt-get install --reinstall python3
    

    Most likely, you got MANY packages that are in that stuck state of "reinstreq" state.

    apt-get autoclean
    apt-get autoremove
    # (MANY PACKAGES FAILED TO BE INSTALLED)
    

    At this point, you will have to manually reinstall each and every one of those listed by apt-get autoremove...

    apt-get install --fix-broken --reinstall <list-of-many-failed-packages>
    

    Last Step - Reinstalling impacted half-state Debian packages

    Let me guess, you got the following error:

    E: Internal Error, No file name for XXXXXX
    

    I will tell you that you probably had a newer Debian release in your /etc/apt/sources.list for awhile, it went all down south (bad), and took that newer release out of the sources.list file (in effort to revert back to a 'stable' release): that's not an unrecoverable thing to me here, just that you jerked the Debian package database around a bit there ... rather brusquely.

    The resolution of the last step entails a restoration and stabilization of the Debian package management database by reinstalling nearly everything. I will detail it later but the link to follow is given here.

    0 讨论(0)
  • 2021-02-01 09:14

    Despite py3compile and py3clean being present in /usr/bin/, my Lubunutu 16.10 shell (tcsh) kept complaining that py3compile was not there. After hours of frustration, I discovered that the first line in pycompile was:

    ! /usr/bin/env python

    or something like that, which referred to Python2.7 on my system. Changing that to point to Python 3 with:

    ! /usr/local/bin/python3

    suddenly made py3compile visible!

    Turns out that the shell said py3compile did not exist even when it was in its path or was directly executed with "/usr/bin/py3compile" when py3compile referred to Python2.7. The shell did not even complain about the Python version or anything, it just claimed py3compile itself did not exist!

    I got into this mess because I wanted to remove and reinstall Python 3.5, upon doing which I discovered that there is still a Python 3, which I then discovered comes from a python-minimal, which I tried to remove and reinstall. The python-minimal would not reinstall, even after I tried every thing I could find on the net and every package manager. They all would complain about py3compile missing. Now I discovered this fix for py3compile.

    0 讨论(0)
  • 2021-02-01 09:23

    py3compile: not found

    The py3compile command is part of python3-minimal package which seems to be broken.

    To fix the issue, try the following:

    • Correct a system with broken dependencies in place by:

      sudo apt-get  -f install
      
    • Reconfigure all unpacked, but unconfigured packages by:

      sudo dpkg --configure -a
      
    • If above won't help, try reinstalling python3-minimal package by:

      sudo apt install -f --reinstall python3-minimal
      

      Alternatively run:

      apt-get download python3-minimal
      sudo dpkg -i *python3*.deb
      sudo apt install -f
      

      Or download the .pkg file from kernel.org and install from the file by:

      sudo dpkg -i python3-minimal_*.deb
      

    Then make sure that py3compile and py3clean commands are runnable and are accessible from your PATH variable.

    0 讨论(0)
  • 2021-02-01 09:33

    Try this:

    First remove packages not more needed:

    sudo apt-get autoremove
    

    Clears out the local repository of retrieved package files

    sudo apt-get autoclean
    

    Remove the packages(mysql-client is not installed):

    sudo apt-get remove mysql-server mysql-common
    
    0 讨论(0)
  • 2021-02-01 09:33

    Try

    apt install --reinstall hplip hplip-data

    followed by

    apt install --reinstall python3

    0 讨论(0)
提交回复
热议问题