Компиляция моего собственного питона сломала системные скрипты?

328
Nate Parsons

(Для тех, кто не знаком с ним, CrunchBang, по сути, является предварительно сконфигурированным Debian Squeeze.)

Некоторое время назад я писал сценарий и хотел использовать функцию Python, представленную в 2.7. Поскольку последней версией, которую я мог получить из репозитория Debian Squeeze, является 2.6.6.8, я решил скачать последний исходный код и собрать его самостоятельно. После того, как я самостоятельно справился с зависимостями, я наконец-то получил работу и закончил свой проект.

Однако с тех пор ряд системных скриптов перестал работать. Я заметил, что все они (теперь сломанные скрипты) начинаются с #!/usr/bin/env python[1] и зависят от одной или нескольких вещей, которые были установлены apt-get / synaptic, но связаны с Python 2.6. Несколько я исправил, изменив заголовок вручную #!/usr/bin/python, но теперь я начинаю задумываться

  1. Это нормально для людей, которые катят свой собственный Python?
  2. Я как-то неправильно скомпилировал / настроил 2.7?
  3. Разумно ли ожидать, что пакеты, установленные с помощью apt-get / synaptic, будут «заблокированы» с версией зависимостей, с которыми они были установлены?
  4. Должен ли я каким-то образом перенастроить / настроить мой $ PATH, чтобы /usrфайл был найден перед /usr/localфайлом?
  5. Должен ли я просто удалить файл жесткой ссылки / usr / local / bin / python и начать все мои сценарии #!/usr/local/bin/python2.7?
  6. Нужно ли вручную устанавливать все недостающие библиотеки и т. Д. /usr/local? Если так, каков наилучший способ сделать это?
  7. Должен ли я сообщать об ошибках сопровождающим пакетов, самим проектам или обоим?

[1] Который из-за того, как настроен мой путь, вызывает мой /usr/local/bin/python(2.7), а не системный /usr/bin/python(2.6)

1

1 ответ на вопрос

1
geekosaur

Это достаточно нормально, что большинство людей, которые создают свои собственные среды Python, используют что-то вроде virtualenv для управления ими. Замена предоставляемых системой Perl, Python или Ruby почти никогда не является хорошей идеей, и все три языка предоставляют разработчикам возможность управлять своими собственными частными установками (для Perl есть PerlBrew, а для Ruby есть RVM).

Это потрясающе! Я слышал о virtualenv в контексте развертывания, но не понимал, что это тоже полезно для разработки. Полагаю, я не хочу использовать apt-get для этого? Тогда я должен удалить `/ usr / local / binmkvir / python`,` mkvirtualenv -p /usr/local/bin/python2.7 dev` и затем `workon X` /` deactivate`? Nate Parsons 12 лет назад 0
Я не уверен, что вы спрашиваете (`/ usr / local / binmkvir / python` выглядит слегка запутанным), но` apt-get install virtualenv` подойдет. Вы * хотите * хотите удалить или, по крайней мере, переместить исполняемый файл `python`, который вы создали, и использовать` virtualenv` для его правильной установки, чтобы вы могли использовать его без вмешательства в систему Python; см. документацию «virtualenv». geekosaur 12 лет назад 0
К сожалению, под `/ usr / local / binmkvir / python` я имел в виду` / usr / local / bin / python`. Конечно, мне просто повезло, что мне нужен v1.5.1 + для использования Python 2.7, и последняя версия даст мне 1.4.9. Я думаю, у меня есть способы пойти. (и я должен быть слепым, потому что я до сих пор не вижу, где в документах говорится о других питонах. Самым близким, что я вижу, является README Python, в котором говорится, что нужно установить все, кроме основной версии) Nate Parsons 12 лет назад 0
Это не говорит об этом явно; это подразумевается тем фактом, что переопределение предоставляемых системой Perl / Python / Ruby почти наверняка сломает вещи (как это и было для вас). «Осторожно: огонь горячий» geekosaur 12 лет назад 0
Итак, почему же совет почти всегда `make install`, а не` make altinstall`? Это как сказать "поставь свой компьютер в огонь" Nate Parsons 12 лет назад 0
Что я не могу вам сказать, кроме предположения о том, что вы делаете первоначальную установку (что является допущением по умолчанию, хотя обычно это неправильно для оболочек и фундаментальных языков сценариев). geekosaur 12 лет назад 0

Похожие вопросы