Строка хижины очень ограничена. Под многими вариантами Unix (включая Linux), у Вас может быть только два слова: команда и отдельный аргумент. Существует также часто ограничение длины.
Общее решение состоит в том, чтобы записать маленькую обертку оболочки. Назовите сценарий Python foo.py
, и помещенный сценарий оболочки рядом с foo.py
и назовите его foo
. Этот подход не требует никакого конкретного заголовка на сценарии Python.
#!/bin/sh
exec "$FOO/bar/MyCustomPython" "$0.py" "$@"
Другой заманчивый подход должен записать сценарий обертки как тот выше и поместить #!/path/to/wrapper/script
как строка хижины на сценарии Python. Однако большинство нельдов не поддерживает объединение в цепочку сценариев хижины, таким образом, это не будет работать.
Если MyCustomPython
был в $PATH
, Вы могли использовать env
искать его:
#!/usr/bin/env MyCustomPython
import …
Еще один подход должен принять меры, чтобы сценарий был оба действительным сценарием оболочки (который загружает правильный интерпретатор Python на себе), и действительный сценарий на выходном языке (здесь Python). Это требует, чтобы Вы нашли способ записать такой сценарий двойного языка для Вашего выходного языка. В Perl это известно как if $running_under_some_shell
.
#!/bin/sh
eval 'exec "$FOO/bar/MyCustomPerl" -wS $0 ${1+"$@"}'
if $running_under_some_shell;
use …
Вот один способ достигнуть того же эффекта в Python. В оболочке, "true"
true
утилита, которая игнорирует ее аргументы (две односимвольных строки :
и '
) и возвращает истинное значение. В Python, "true"
строка, которая верна при интерпретации как булевская переменная, таким образом, это if
инструкция это всегда верно и выполняет строковый литерал.
#!/bin/sh
if "true" : '''\'
then
exec "$FOO/bar/MyCustomPython" "$0" "$@"
exit 127
fi
'''
import …
Код Rosetta имеет такие сценарии двойного языка на нескольких других языках.
phpmyadmin
зависит от dbconfig-common
, который содержит /usr/share/dbconfig-common/dpkg/prerm.mysql
. Похоже, что Вам удалось удалить dbconfig-common
без удаления phpmyadmin
, то, которого не должно было происходить (сделало Вы пытаетесь --force
что-то?).
Мой совет состоит в том, чтобы сначала попробовать aptitude reinstall dbconfig-common
. Если это работает, у Вас должна быть система в согласованном состоянии, от которого можно попробовать aptitude purge phpmyadmin
снова.
Другая вещь, которую можно сделать, комментируют незаконную строку в /var/lib/dpkg/info/phpmyadmin.prerm
. Это, вероятно, сделает Вас способными удалить phpmyadmin
. Я подозреваю, что Вы сделали то, что та строка, как предполагается, делает, когда Вы отредактировали те mysql таблицы вручную, но я не знаю phpmyadmin
или администратор базы данных в целом, таким образом, я только предполагаю.
Разница между remove
и purge
это remove
просто удаляет программу и ее файлы данных (материал, который Вы могли повторно загрузить), в то время как purge
сначала делает что remove
делает затем также удаляет конфигурационные файлы (материал, который Вы, возможно, отредактировали локально). Если remove
сбои, так будет purge
.
(Я собираюсь предположить, что Вы имели в виду aptitude purge
и apt-get remove
, потому что команды, которые Вы процитировали, не существуют),
Попробовать dpkg --purge phpmyadmin
. Это низшего уровня, что другие инструменты, так могло бы быть более эффективным в этом случае.
Иногда система управления пакетами настолько нарушена (часто в цепочке циклических зависимостей), что я нашел единственную комбинацию команд для удаления проблемных пакетов:
cd / var / lib / dpkg / info; rm
dpkg --purge --force-remove-reinstreq
dpkg --remove --force-remove-reinstreq
apt-get install
для переустановки пакета Иногда может потребоваться исправить файл переопределения состояния, и вышеупомянутая процедура может вызвать ошибки, связанные с этим .. Как исправить Файлы переопределения состояния зависят от того, помечает ли пользователь ошибку или нет.
Обычно:
/ var / lib / dpkg / statoverride
dpkg-statoverride --remove
dpkg -i /var/cache/apt/archives/{dbconfig-common,php5-mcrypt,libjs-mootools}*.deb
. Если у Вас нет debs в Вашем кэше, загрузите их с packages.debian.org. Если существуют сообщения об ошибках, отправляют их, и я (или кто-то еще) мог бы помочь Вам с ними. – Gilles 'SO- stop being evil' 20.02.2011, 23:17php5-mcrypt
также. Способность сделала бы задание для Вас; можно попробовать, но я думаю, что это откажется сдвигаться с места, пока Вы не принесетеphp5myadmin
к хорошему состоянию.dpkg
ниже находится на одном уровне и может воздействовать даже на частично поврежденную базу данных пакета. – Gilles 'SO- stop being evil' 20.02.2011, 23:28php5-mcrypt
, Это запросило сначала удалениеphpmyadmin
иdbconfig-common
. Я не мог получить никакие другие решения, таким образом, я думал, что это будет не иметь успеха на своей поверхности, когда я согласился. Обратное, просто действие, которое php5-mycrypt был 'предложен' для установки, позволенной способность, чтобы правильно убрать рычаги и удалитьphpmyadmin
иdbconfig-common
. Я теперь с тех пор переустановил их наряду сphpmyadmin
(хотя через tar для большего количества управления). Кажется, что последняя версия не требует mysql для самоорганизации. Спасибо Giles для удаления саранчи с моего сервера! – Ken 21.02.2011, 03:38