rpm -U удаляет символическую ссылку, если я не использую --force - PullRequest
1 голос
/ 21 апреля 2011

Я пытаюсь использовать следующий код в моем spec-файле, я устанавливаю мое приложение как отдельный экземпляр tomcat.

# Symlink $CATALINA_BASE/logs to /var/log/$SERVICE_NAME.
# If it's already there, we'll get rid of it and make a new symlink.
if [ -h "$RPM_INSTALL_PREFIX/logs" ]; then
    # It's a symlink, so just remove it.
    rm -f $RPM_INSTALL_PREFIX/logs
fi
# If it's still there, and it's a directory, see if we can rmdir it.
if [ -d "$RPM_INSTALL_PREFIX/logs" ]; then
    rmdir $RPM_INSTALL_PREFIX/logs >/dev/null 2>&1 || :
fi
if [ -e "$RPM_INSTALL_PREFIX/logs" ]; then
    # It's probably either a file or a dir, so we'll move it.
    mv $RPM_INSTALL_PREFIX/logs $RPM_INSTALL_PREFIX/logs.rpmsave || :
fi
ln -s /var/log/$SERVICE_NAME $RPM_INSTALL_PREFIX/logs || :

Когда этот код работает с -i, он создает и оставляет там символическую ссылку.

Когда я запускаю новую версию rpm с -U, он выполняет этот код, и символическая ссылка создается правильно, но когда команда rpm завершается, символическая ссылка удаляется.

Если я запускаю-U --force во второй раз, после чего символическая ссылка остается.

Как заставить -U остаться без использования --force?

Ответы [ 2 ]

0 голосов
/ 14 мая 2011

Это было решено добавлением файла с журналами имен как части списка файлов обновления RPM, и он прекратил удаление символической ссылки автоматически, потому что теперь он думает, что он был там все время.

0 голосов
/ 14 мая 2011

Что вы пытаетесь сделать? Вы сохраняете или удаляете символическую ссылку?

Если вы удаляете его, попробуйте это:

rm -f -i $RPM_INSTALL_PREFIX/logs # File
rmdir -f $RPM_INSTALL_PREFIX/logs >/dev/null 2>&1 || : # Directory
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...