какая версия xattr на OSX 10.5 не будет переходить по символическим ссылкам?

3

Мне нужно редактировать расширенные атрибуты каталогов, которые являются символическими ссылками.

К сожалению, xattr, который поставляется в OSX 10.5, записывает в целевую ссылку вместо самой ссылки.

Я обнаружил другую версию, которая поддерживает опцию "-s" для подавления следующих символических ссылок. Я проверил это из репозитория, но нет никакого установочного файла, который я мог бы разобрать, и я думаю, что он мне нужен: https://xattr.svn.sourceforge.net/svnroot/xattr

Затем я нашел другую версию, а также проверил ее и, наконец, смог установить ее после установки Xcode:

http://svn.red-bean.com/bob/xattr/releases/xattr-0.6.1/

Однако, когда я запускаю эту версию, у меня не появляется волшебная опция "-s" для подавления следующих символических ссылок. На самом деле, эта версия, похоже, не имела других опций, которые имел оригинальный xattr.

У кого-нибудь есть версия xattr, работающая на OSX 10.5, которая будет поддерживать не следующие символьные ссылки, или любое другое приложение, которое позволит мне писать расширенные атрибуты и не следовать символическим ссылкам?

timoto
источник

Ответы:

1

Вариант на https://github.com/jwodder/xattr 1 имеет -Pпараметр, который подавляет обычное поведение следующих символических ссылок (т.е. передает параметр XATTR_NOFOLLOW в listxattr (2) и т. Д.). Включенная документация указывает, что этот режим «работает с символьной ссылкой, а не с целью» является режимом по умолчанию (раньше он использовался по умолчанию для работы с целью, но код был недавно обновлен для соответствия документации).

Параметры и режимы работы отличаются от обычного xattr (1) , поэтому вам, вероятно, придется адаптировать любые сценарии, которые у вас уже есть.

Поскольку вы сказали, что уже установили Инструменты разработчика (т.е. XCode), простая программа makeдолжна собрать программу. Я скомпилировал и немного протестировал его на компьютере с Mac OS X 10.6.7 (я также ранее использовал его на 10.4, поэтому он должен нормально работать на 10.5).


Примечание о «каталогах, которые являются символическими ссылками». Запись каталога может быть либо каталогом, либо символической ссылкой (или простым файлом и т. Д.), Но не обоими. Неверно говорить «каталог, который является символической ссылкой» или «символическая ссылка, которая является каталогом». Собственно, это просто «символическая ссылка, которая в конечном итоге 2 указывает на каталог».

1 Вы можете использовать кнопку «Загрузки» в правой части страницы GitHub для загрузки .tar.gzили, .zipесли у вас не установлен Git.

2 «В конечном счете», потому что символические ссылки могут указывать на другие символические ссылки. Они могут даже указывать на несуществующее имя пути (создавая «висячую» символическую ссылку).

Крис Джонсен
источник
большое спасибо за еще один xattr :) Я загрузил tar, распаковал его, а затем "$ make" из папки, содержащей Makefile. Затем я получил следующее: «gcc -o xattr xattr.c -std = c99 -O2 ld: не могу открыть выходной файл для записи: xattr collect2: ld вернул 1 состояние выхода make: *** [xattr] Ошибка 1» Я не знаю, как заставить этот make-файл работать :( Также спасибо за урок по определению символической ссылки :)
timoto
@timoto: Похоже, у вас нет прав на запись в каталог, в котором вы находитесь. Возможно, вы распаковали его как root или другой пользователь? Для sudo не нужно просто распаковывать этот tar-файл и собирать программу.
Крис Джонсен
DOH! Моя шляпа перед вами, сэр. Разрешения действительно не совпадают. Сделай как пользователь который распаковал tar работает. Теперь я вижу прекрасный «-P» в справке xattr, и предположительно «-s» (набор) - это запись. Спасибо, Крис.
Тимото
@timoto: Да, -sдля «набора». Я забыл упомянуть документацию. Источником документации является xattr.pod. Это простой текст, но разметка Pod может показаться немного трудной для чтения. Вы можете использовать man ./xattr.1для чтения документации в качестве справочной страницы.
Крис Джонсен