group.of.nepali.translators team mailing list archive
-
group.of.nepali.translators team
-
Mailing list archive
-
Message #05733
[Bug 1585696] Re: command-not-found clashes with local python3 in path
This bug was fixed in the package command-not-found - 0.3ubuntu16.04.2
---------------
command-not-found (0.3ubuntu16.04.2) xenial; urgency=medium
* Update data for xenial, and add s390x database (LP: #1593592)
* ./update-from-web.sh: Pull from xenial data instead of devel.
* debian/rules: rm UnifiedDataExtractor/scan.data-old on clean.
* command-not-found: Define full path to python3 (LP: #1585696)
-- Adam Conrad <adconrad@xxxxxxxxxx> Mon, 20 Jun 2016 10:27:40 -0600
** Changed in: command-not-found (Ubuntu Xenial)
Status: Fix Committed => Fix Released
--
You received this bug notification because you are a member of नेपाली
भाषा समायोजकहरुको समूह, which is subscribed to Xenial.
Matching subscriptions: Ubuntu 16.04 Bugs
https://bugs.launchpad.net/bugs/1585696
Title:
command-not-found clashes with local python3 in path
Status in command-not-found package in Ubuntu:
Fix Released
Status in command-not-found source package in Xenial:
Fix Released
Bug description:
In Ubuntu 14.04 (and Linux Mint 17), /etc/bash.bashrc handles "command
not found" with the function command_not_found_handle, which contains
the line:
/usr/bin/python /usr/lib/command-not-found -- $1
However, /usr/lib/command-not-found was rewritten for Python 3. To
handle this, /usr/lib/command-not-found has (lines 17-22):
if sys.version < '3':
# We might end up being executed with Python 2 due to an old
# /etc/bash.bashrc.
import os
if "COMMAND_NOT_FOUND_FORCE_PYTHON2" not in os.environ:
os.execvp("python3", [sys.argv[0]] + sys.argv)
This catches old versions of python and re-runs command-not-found with
python3 from the path. If a local version of Python (such as Anaconda)
is installed, command-not-found will try to execute with the local
python3 and gives:
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'
Current thread 0x00007f04862de740 (most recent call first):
Aborted
This can be solved by replacing line 22 of /usr/lib/command-not-found
with:
os.execv("/usr/bin/python3", [sys.argv[0]] + sys.argv)
Searching for "os.execvp", it doesn't appear that the same error
occurs for any other scripts in /usr/lib/. Any script using os.execvp
with the correct permissions is a potential security vulnerability if
the path is changed to contain a malicious script under the correct
name. Fortunately this is not the case for command-not-found.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/command-not-found/+bug/1585696/+subscriptions