Вам нужно исправить правильный файл.
Как вы это называете, он будет пытаться исправить новый файл и, таким образом, правильно предполагает обратный патч.
Попробуйте скопировать старую версию файла в текущий каталог, и исправление будет применено.
По поводу вашего теста -p0
: есть ли у вас разрешение на изменение / usr / bin / gradle?
У вас есть разрешение на создание файлов в / usr / bin?
Также обратите внимание, что существуют другие правила для исправления имени файла.
Правила, используемые gpatch
, отличаются как от исходного исправления, так и от стандарта исправлений POSIX.
Обратите внимание, что сообщение «не обычный файл» характерно для gpatch
. Перечислите файл / usr / bin / gradle
. Сообщение печатается только в том случае, если файл не является обычным файлом, поэтому что-то выглядит странно.
Итак, решение:
patch
исправляет только простые файлы, но файл, который вы хотите исправить, является символической ссылкой.
Если у вас есть копия простого файла (старой версии) в вашем текущем каталоге, патч сделает то, что вы ожидаете.
Кстати: обычным правилом получения имени файла для исправления является поиск самого короткого имени, поскольку используется обычное соглашение об именах:
file.orig
и
file
Почему это важно? Вы всегда можете получить UID во время выполнения с помощью команды id
, т.е.:
id -n muser
Таким образом, вы можете изменить свой сценарий установки, чтобы получить UID, выполнив эту команду, например:
uid=$(id -n muser)
echo "Installing mysoftware under UID $uid"
Оказывается, есть поле uid
, как упоминалось здесь , поэтому я могу использовать его, чтобы убедиться, что у каждого пользователя есть определенный UID.
Однако, как упоминалось здесь , существует ошибка в анализе поля uid
.Добавление uid: 1001
не помогло установить идентификатор пользователя, но добавление uid: "1001"
сработало.