какая версия 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, которая будет поддерживать не следующие символьные ссылки, или любое другое приложение, которое позволит мне писать расширенные атрибуты и не следовать символическим ссылкам?

Ответы:


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для чтения документации в качестве справочной страницы.
Крис Джонсен
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.