Команда cp переходит по символической ссылке к цели и стирает файл вместо того, чтобы перезаписывать символическую ссылку

Да,dkmsподдерживает этот сценарий . Вам необходимо установить соответствующее ядро ​​и заголовки в системе CI; затем установите модуль dkms, который вы хотите отправить, и запустите

dkms mktarball

с соответствующим модулем и версией. Скопируйте полученный архив в целевые системы и загрузите его с помощью

dkms ldtarball /path/to/dkmstarball

Это установит бинарные модули и сделает их доступными.

Специально для Debian вы также можете создать пакет Debian, содержащий предварительно -встроенные модули, используя

dkms mkdeb

с соответствующим модулем и версией. См. , справочную страницу dkmsи HOWTO для получения подробной информации.

11
01.09.2021, 16:48
1 ответ

Симлинки ведут себя очень запутанно, не только с cp, но также с chmod, chownи встроеннымtest(или его [.. ]псевдонимом ), например.

Сначала удалить символическую ссылку (rm -f sd/common.py), затем cp.

Конечно, разные cpв разных системах имеют разные варианты для этого, но очень легко ошибиться -ногой.

Еще одна вещь, которую вы можете сделать, это избежать cpи стремиться к результату символической ссылки.ln -sf SOURCE DESTINATION(с обоими аргументами являются абсолютными путями )работает во всех системах POSIX и не создает дополнительных путаниц. -fудаляет любой существующий DESTINATIONфайл/симлинк (, но не каталог, увы ). Вы можете комбинировать это с realpath, чтобы избежать проблемы относительного/абсолютного пути :

.
ln -sf "$(realpath "$SOURCE")" "$(realpath "$DESTINATION")"
1
01.09.2021, 18:45

Теги

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