LINUX.ORG.RU

Не запустится терминал

 ,


0

2

Решил сменить версию python2.7 на python3. Чтобы это сделать в терминале ввожу команду:

sudo ln -sf python3 /usr/bin/python
Команда выполнилась без ошибок. После этого ввожу в терминале python . В командные строке я получаю ошибку:
-bash: /usr/lib/command-not-found: /usr/bin/python3: bad interpreter: Too many levels of symbolic links
После этого шага терминал не открывался (Только работает терминал, который запускается комбинацией клавиш Alt+Ctrl+F1). В чем проблема?

Ответ на: комментарий от micronekodesu

Не плохую кашу я на варил. После запуска

sudo apt install --reinstall python2
sudo apt install --reinstall python2.7

Получаю :(

Подготовка к распаковки.../python-samba_2%3a4.3.11+dfsg-0ubuntu0.16.04.12_amd64.deb ...
  File "/usr/bin/pyclean", line 63
    except (IOError, OSError), e:
                             ^
SyntaxError: invalid syntax
dpkg: предупреждение: подпроцесс старый pre-removal сценарий вернул статус ошибку 1
dpkg: попытка использовать сценарий из нового пакета …
  File "/usr/bin/pyclean", line 63
    except (IOError, OSError), e:
                             ^
SyntaxError: invalid syntax
dpkg: ошибка обработки архива /var/cache/apt/archives/python-samba_2%3a4.3.11+dfsg-0ubuntu0.16.04.12_amd64.deb (--unpack):
 подпроцесс новый  pre-removal сценарий вернул статус ошибку 
Traceback (most recent call last):
  File "/usr/bin/pycompile", line 35, in <module>
    from debpython.version import SUPPORTED, debsorted, vrepr, \
  File "/usr/share/python/debpython/version.py", line 24, in <module>
    from ConfigParser import SafeConfigParser
ImportError: No module named 'ConfigParser'
dpkg: предупреждение: подпроцесс старый pre-removal сценарий вернул статус ошибку 1
При обработке таких пакетов произошли ошибки:
 /var/cache/apt/archives/python-samba_2%3a4.3.11+dfsg-0ubuntu0.16.04.12_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Наверное придется переустановить систему :(

guitarist15
() автор топика
Ответ на: комментарий от guitarist15

Окей, значит так:

sudo apt install --reinstall python-minimal

Если это не помогает то создаете какой-нибудь временный каталог и переходите туда:

mkdir tmpdir && cd tmpdir

Качаете пакет

apt-get download python2.7-minimal

Распаковываете его

dpkg -x python2.7-minimal_2.7.13-2+deb9u2_amd64.deb .

Переносите бинарь на место

sudo cp ./usr/bin/python2.7 /usr/bin/python2.7

После этого проверяете что при запуске /usr/bin/python2.7 у вас запускается интерпретатор второго питона. Если все ОК - создаете симлинк sudo rm /usr/bin/python && sudo ln -s /usr/bin/python2.7 /usr/bin/python

micronekodesu ★★★
()
Ответ на: комментарий от micronekodesu

Ох, самая первая команда

sudo apt install --reinstall python2.7-minimal

// У меня нет рейтинга для правки сообщений.

micronekodesu ★★★
()
Ответ на: комментарий от micronekodesu

Ну и при распаковке пакета его имя, конечно, может быть у вас другим в зависимости от того что там мейнтейнеры в репы положили, в общем поправьте под свои реалии.

micronekodesu ★★★
()
Ответ на: комментарий от micronekodesu

Да!!!!! Все работает. Спасибо большое... Теперь я хочу уточнить несколько моментов. В директории /usr/bin содержатся ярлыки пайтона различных версий. Когда я пишу, например, sudo ln -s /usr/bin/python2.7 /usr/bin/python, то эта команда создает ссылку при запуске которой я активирую python2.7.

Если я написал: sudo ln -s /usr/bin/python3.5 /usr/bin/python2.7, то при запуске в терминале команды python2.7, я активирувал python3. Верно?

guitarist15
() автор топика
Ответ на: комментарий от guitarist15

Ну вообще верно, только /usr/bin/python2.7 это не ярлык, а сам бинарник, придется потом заново восстанавливать. Вообще проверить симлинк это или нет можно так:

$ls -l /usr/bin/python2
lrwxrwxrwx 1 root root 9 янв 24  2017 /usr/bin/python2 -> python2.7

# или

$ file /usr/bin/python2
/usr/bin/python2: symbolic link to python2.7

Для не-линков будет так:

$ ls -l /usr/bin/python2.7
-rwxr-xr-x 1 root root 3779512 ноя 24 20:33 /usr/bin/python2.7

# Ну и

$ file /usr/bin/python2.7
/usr/bin/python2.7: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=78bba47ddc77739d7744bfd0f89bbae01a73d506, stripped

Так что смотрите - линки вы можете менять, тут особо проблем все вернуть не будет, а бинари не трогайте чтоб вновь не плясать с распаковкой пакетов.

micronekodesu ★★★
()
Ответ на: комментарий от ei-grad

Я просто к тому что чуваки например из арча наверное год пакеты перефигачивали чтобы на 3-й питон перейти. А тебе скорее всего был нужен https://virtualenv.pypa.io/en/stable/.

ei-grad ★★★★★
()
Последнее исправление: ei-grad (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.