Оба версии 4 и 5 RHEL, поставленные с 2,6 ядрами серии Linux.
Это возможно, но трудно вручную скомпилировать Ваши собственные 2,4 ядра для RHEL 4, но даже который проблематичен из-за зависимостей от 2,6 функций. Я не думаю, что это было бы практически возможно с RHEL 5.
Для использования 2,4 ядер, необходимо также использовать версии прежней версии или альтернативные ответвления большого количества других базовых компонентов Linux. Если Вам нужно 2.4 по некоторым причинам, необходимо рассмотреть распределение, которое сохраняется специально для него.
.preinst сценарий пакета перестал работать по некоторым причинам.
Для обнаружения почему исследуйте сценарий в /var/lib/dpkg/info/PACKAGENAME.preinst
Если Вы хотите видеть точно, которые выравнивают сценарий, перестал работать на, отредактируйте .preinst сценарий и добавьте set -x
сразу после #!
строка. Это включает трассировку выполнения в сценарии.
Примечание: Это предполагает, что .preinst сценарий является сценарием оболочки (или posix sh или удар). Почти весь .preinst (и .postinst, .prerm, и .postrm) сценарии являются сценариями оболочки, но они не должны быть, они могли быть любым исполняемым файлом. например, на моей основной настольной машине с 9 104 установленными пакетами, 14 сценарии жемчуга, 1 скомпилированный исполняемый файл (preinst удара - это не может предположить, что существует функционирующая оболочка, уже установленная), и все остальные являются сценариями оболочки... 9041 сценарии оболочки POSIX, 63 сценарии удара. Если .preinst является жемчугом или Python или чем-то еще, необходимо будет выяснить, как позволить отладить или режим трассировки выполнения или подобный на том языке.
Затем выполненный dpkg --configure --pending
.
Это заставит dpkg пытаться настроить полуустановленный пакет. НЕ переустанавливайте его с dpkg -i
, это перезапишет Ваш отредактированный .preinst сценарий с версией в .deb пакете.
Это может дать Вам достаточно информации для решения проблемы. Это может быть что-то простое как неожиданный или непойманный код выхода из программы (большая часть .preinst и т.д., сценарии имеют set -e
, чтобы заставить их завершиться на первой ошибке), или предполагая, что каталог уже существует (и это может произойти из-за необъявленной зависимости в debian/control файле пакета - т.е. он должен зависеть от нечто, но не делает. просто установите нечто так или иначе),
После того как это фиксируется, работать dpkg --configure --pending
снова, и пакет должен быть правильно установлен.
Если .preinst сценарий является багги, существует разумный шанс, что .postinst (и/или .prerm и .postrm) сценарии будет также. Вы, возможно, должны зафиксировать их также.
Не забывайте отправлять отчет об ошибках тому, кто бы ни сделал пакет, таким образом, они могут зафиксировать его.
Ваше серийное программное обеспечение включает "сценарий перед установкой" (preinst), который перестал работать. Это - сценарий оболочки, встроенный в .deb файле. Можно извлечь его с:
dpkg-deb -e some-deb.deb out-dir
Затем можно посмотреть на out-dir/preinst
и посмотрите, можно ли выяснить, почему это перестало работать.
Если Вы хотите изменить тот сценарий и восстановить .deb
(возможно, для добавления некоторого кода отладки) попробовать
dpkg-deb -x some-deb.deb another-out-dir
dpkg-deb -e some-deb.deb another-out-dir/DEBIAN
(modify another-out-dir/DEBIAN/preinst)
dpkg-deb -b another-out-dir some-deb2.deb
Необходимо будет извлечь файл и видеть почему preinst
сценарий выходит с кодом 1
.
Не уверенный, если было обсуждение UNIX.SE, связанного с тем, как сделать это, но можно смотреть на этот вопрос от AskUbuntu для понимания то, как извлечь.
После этого необходимо будет вручную работать preinst
сценарий для наблюдения, почему установка пакета перестала работать.
Если Вы хотите отредактировать пакет, непосредственно пробуют это:
#!/bin/bash
if [[ -z "$1" ]]; then
echo "Syntax: $0 debfile"
exit 1
fi
DEBFILE="$1"
TMPDIR=`mktemp -d /tmp/deb.XXXXXXXXXX` || exit 1
OUTPUT=`basename "$DEBFILE" .deb`.modfied.deb
if [[ -e "$OUTPUT" ]]; then
echo "$OUTPUT exists."
rm -r "$TMPDIR"
exit 1
fi
dpkg-deb -x "$DEBFILE" "$TMPDIR"
dpkg-deb --control "$DEBFILE" "$TMPDIR"/DEBIAN
if [[ ! -e "$TMPDIR"/DEBIAN/control ]]; then
echo DEBIAN/control not found.
rm -r "$TMPDIR"
exit 1
fi
CONTROL="$TMPDIR"/DEBIAN/control
MOD=`stat -c "%y" "$CONTROL"`
vi "$CONTROL"
if [[ "$MOD" == `stat -c "%y" "$CONTROL"` ]]; then
echo Not modfied.
else
echo Building new deb...
dpkg -b "$TMPDIR" "$OUTPUT"
fi
rm -r "$TMPDIR"
control
файл (и восстанавливают пакет), не preinst
сценарий на проблему OP. потрясающий
– arielf
26.05.2016, 21:02