Символические ссылки могут быть чем угодно, потому что символ может представлять любое количество вещей для любого количества программ/ОС/людей. Подобно символам в физическом мире, символ можно сделать из чего угодно и для чего угодно. Нет необходимости в проверке, так как цель уже существует в системе, и пользователь в любом случае будет иметь к ней доступ через свои привилегии.
Если вы действительно хотите, чтобы это поведение прекратилось. Вы можете создать сценарий, чтобы проверить, будет ли он указывать на себя, и вернуть ошибку, если это так, и создать ссылку, если это не так. После создания скрипта вы можете создать псевдоним для ln, указывающий на ваш скрипт.
Может выглядеть примерно так:
#!/bin/bash
if [ "$1" == "$2" ]
then
echo "ERROR pointing to self!"
else
ln "$1" "$2"
fi
В RPM есть концепция «совместимых» архитектур, которая позволяет вам устанавливать i686
пакеты в x86_64
системе. Но он не распространяется на иностранные архитектуры и не позволяет вам -компилировать за пределы того, что поддерживается gcc -m
.
Однако можно собрать пакеты для других архитектур, используя qemu-user-static
и mock
:, подготовить исходный RPM, затем собрать его , используя mock
, указав архитектуру:
mock -r fedora-35-aarch64 package.src.rpm
mock
обнаружит, что ему нужно использовать эмуляцию, и будет использовать QEMU для обработки chroot. Как правило, это будет медленнее, чем кросс-компиляция -, но вы не столкнетесь с проблемами с host v.целевые двоичные файлы.