LINUX.ORG.RU

1
Всего сообщений: 35

Удаление симлинков

Всегда во всех скриптах на баше удалял симлинки и всё было норм. Т.е удалялся только сам симлинк

rm -rf ~/some_symlink

Сейчас в шелле сделал

rm -rf ~/some_symlink

и удалилась директория, на которую ссылается ~/some_symlink. Почитал в интернетах, там симлинки удаляются с помощью unlink. Почему тогда из скриптов не удалялась сама директория, а только симлинк? А из шелла вот такое поведение

 ,

serg002 ()

не собирается systemd после systemd-usrmerge

Привет всем! Помогите осилить обновление systemd. Что случилось: после установки sys-apps/merge-usr, выполнения скрипта и переключения на новый профиль - не собирается новая версия systemd и система грузится странно (на многих этапах долго думает и не запускает графику, хотя gdm в статусе «running»). При сборке ошибка что каталоги не являются символьными ссылками. Скрипт что-то не доделал? Пишу из соседней убунты, могу чрутануться и посмотреть что-то, если мало информации

 , , ,

Ebnmrj ()

/sbin/telinit и /bin/systemctl — один и тот же файл, но справку дают разную

Как такое может быть?

#смотрим, что /sbin/telinit -- это симлинк на /bin/systemctl
vodka@vodka-PC:/tmp$ ls -l /sbin/telinit
lrwxrwxrwx 1 root root 14 окт 11 18:51 /sbin/telinit -> /bin/systemctl
#сверяем хеш-суммы
vodka@vodka-PC:/tmp$ md5sum /sbin/telinit
846dc422ba2e2db10766f082627bcbf5  /sbin/telinit
vodka@vodka-PC:/tmp$ md5sum /bin/systemctl
846dc422ba2e2db10766f082627bcbf5  /bin/systemctl

И далее вызываем

/sbin/telinit --help
/bin/systemctl --help

И результаты совершенно разные… С помощью каких механизмов утилита /bin/systemctl отслеживает, что к ней обратились через симлинк /sbin/telinit и выдаёт уже другую справку?

 

iljuase ()

nginx видит не все папки через symlink в www

делаю symlink1 на folder1 с hdd1 в www - папку nginx видит.

делаю symlink2 на folder2 с hdd2 в www - папку nginx НЕ видит. Права одинаковые. Куда копать?

debian 10.

UPD 1: в /etc/nginx/nginx.conf добавил

http {
    disable_symlinks off;
}  
непомогло 
 

UPD 2:

/var/www/html  ls -la
lrwxrwxrwx 1 dima dima    18 июл 21 18:55  Videos1 -> /home/dima/Videos1 (Видно)
lrwxrwxrwx 1 dima dima    39 июл 21 12:14  Videos2 -> /media/dima/HDD2/Videos2 **(ее НЕвидно)**
/media/dima/HDD2 ls -la
drwxrwsrwx+  4 dima    dima     4096 июл 13 09:29  Videos2 
 

 ,

ravaya ()

Есть ли пути архивирования и исправления битых симлинков?

В поисковике не нашел результатов....

Грубо: Затупил... Ручками сделал структуру в которой и пул с данными и пул со ссылками на эти данные...

Теперь rsync на внешний диск с ntfs делает дереференс симлинков и данные копируются и в пул и туда где должны быть ссылки. Получаем двойной размер...

Сначала решил просто создать архив с этими битыми симлинками - прежде чем пытаться в скрипте править... Но решения даже этой задачи - не нашел.

$man tar - тоже решения не показал...

Сидеть и всё править в mc через Ctrl+x-Ctrl+s - очень трудоёмко...

Так как можно сделать резервную копию симлинков и затем сделать в них: поиск-замену?

Это решаемая задача?

 , ,

n0mad ()

udev собрать симлинк на основе атрибутов

При подключении переходников USB-UART они именуются /dev/ttyUSB0, /dev/ttyACM50 и т.д. Хотелось бы дать им более осмысленные имена. Для этого написал правило udev’а:

SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", PROGRAM="/bin/bash -c \"ls /dev | grep tty_ft232r_ | wc -l \"", SYMLINK+="tty_ft232r_%c"

Потом подключаю свое самодельное устройство, которое выглядит как сдвоенный переходник, причем назначения у «частей» переходника разные и описываются именем интерфейса. Это тоже решаемо:

SUBSYSTEM=="tty", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df" ENV{CONNECTED_vusb}="yes"
ENV{CONNECTED_vusb}=="yes", SUBSYSTEM=="tty", ATTRS{interface}=="term_cdc", PROGRAM="/bin/bash -c \"ls /dev | grep tty_TERM_CDC_ | wc -l \"", SYMLINK+="tty_TERM_CDC_%c"
ENV{CONNECTED_vusb}=="yes", SUBSYSTEM=="tty", ATTRS{interface}=="term", PROGRAM="/bin/bash -c \"ls /dev | grep tty_TERM_ | wc -l \"", SYMLINK+="tty_TERM_%c

Но мне не понравилось указывать имя симлинка в двух местах для каждого устройства: при подсчете количества и при собственно формировании симлинка. Интуитивно кажется, что должно быть решение.

Если у устройства уже есть атрибут ATTRS{interface} с нормальным текстовым описанием, нельзя ли его как-то подставить его в симлинк?

 , , ,

COKPOWEHEU ()

Добавить симлинк в sysfs

Добрый день, может кто помочь с сабжем? Готов заплатить

 ,

Curt54rus ()

Не пойму почему так с симлинками

Есть система деплоя. Есть две ветки: work и home. В деплое есть файлы, деплой генерит симлинки на всякие ~/.Xmodmap и другие. Стою я в ветке work, делаю изменения в файле ~/.Xmodmap, комичу в ветку work. Прихожу домой и делаю git pull в ветке home. Смотрю, а у меня содержимое ~/.Xmodmap такое же, как на работе(т.е в ветке work). Как это так получается?

 , ,

serg002 ()

[SOLVED]root не может создать symlink

От имени root:

# echo "I'm test file!" > test.txt
# ln -s test.txt test_simlink
ln: не удалось создать символьную ссылку 'test_symlink': Операция не позволена
Решение: fat32 не поддерживает симлинки

 , ,

Difumm ()

Расширение APFS контейнера на другой диск или иные способы увеличения хранилища на macOS

Привет всем!

У знакомого есть mac на котором заканчивается место внутреннего накопителя. Обратился за советом, как решить проблему красиво при помощи внешнего накопителя. Понятно, что лучшее решение это замена встроенного SSD, но до этого руки ещё не дошли. Меня тоже заинтересовал данный вопрос. На маке стоит Catalina, вроде уже сконвертировавшая системный раздел в APFS.

Я про этого зверя под названием APFS почитал. Относительно данного вопроса, эта ФС похожа на BTRFS или ZFS, и LVM напоминает ещё. В том смысле, что позволяет объединять несколько носителей в один.

diskutil apfs createContainer device1 device2

- примерно так это должно работать. Но это для создания нового, чистого контейнера, с последующей установкой ОС на том внутри контейнера. А вот способа добавления «на лету», как это легко и просто делается в том же LVM, я не нашёл. Такое возможно?

Так же, как вариант, есть штука под названием APFS firmlinks. Которые позволяют монтировать вместе несколько директорий, с отображением содержимого из обоих. Примерно то же, что и OverlayFS/AUFS/etc. Всё-то эти любители фруктов идеи из Linux тащат, а вы говорите, «Закось под макось». Ещё неизвестно, у кого «закось». Ну да ладно... Везде написано, что эти самые firmlinks можно создать только внутри одной группы томов APFS. Т.е., насколько я понял, с внешним носителем с помощью этой технологии внутренний поклеить не получится. Или есть варианты?

Раньше монтирование в macOS поддерживало опцию «union mount», которая позволяла не заменять содержимое в точке монтирование, а добавлять новое из монтируемой файловой системы. Но, как я выяснил на разных форумах, хоть опция и есть, она давно не работает.

Может быть есть ещё какие варианты «размазать» все данные (или часть, например директорию /Applications) на несколько носителей, чтобы для пользователя это было прозрачно и система сама выбирала, куда записывать новые данные? Или macOS таки полная лажа и даже в LVM они не смогли? Желательно без переустановки ОС. Т.к. если переустанавливать, то уж проще поменять внутренний SSD.

К вопросу «А при чём тут линукс?». Не знаю. Но вопросы про macOS, Macbook и Apple на данном форуме всплывают периодически и вроде ничего, а модераторы вообще заядлые яблочники.

P.S.: Добавьте тег APFS.

 , , , ,

ls-h ()

Странный ZIP

Добрый день! Столкнулся с интересным zip-ом, в который как-то умудрились запаковать симлинки. При попытке распаковать его unzip-ом атрибуты файлов теряются, а вместо симлинком создаются простые файлики с абсолютным или относительным путем. То, что это симлинки точно, при просмотре 7zip-ом у них атрибуты lrwxrwxrwx. Как распаковать этот архив, чтобы сохранить симлинки? ФС - ext4.

 , , , ,

George1806 ()

Как получить список инвалидных симлинков?

Хаюшки, Олл!

Рсинкал я тут раздел и повторный рсинк дал мне кучу сообщений типа: symlink has no referent: «/opt/файл»
Но ведь есть и относительные симлинки и абсолютные симлинки содержимое которых не упадёт в рсинк бэкап.

Вот как бы на получившемся бэкапе получить все симлинки которые будут ссылаться на отсутствующий файл?

т.е. нужен метод поиска инвалидных симлинков.

 , ,

n0mad ()

Создание симлинков через Python

Возникла потребность создавать в питоноскрипте симлинки на файл на другой ФС. В стандартной либе что-то не нашел инструментов для этого: os.symlink выдает [Errno 18] Invalid cross-device link, в shutil ничего по теме нету, вызывать ln через subprocess не хочется. Какого-то готового решения, работающего как ln -s /fs1/a /fs2/b, загуглить не удалось. Может кто знает, как решить эту задачу?

P.S. СPython 3.4-3.6 на дебиане.

EDIT: блин, в спешке перепутал os.link и os.symlink.

 ,

lu4nik ()

Зависает скрипт на удалении симлинка

Приветствую! Моя программа вызывает скрипт nfs_client.sh

#!/bin/sh

rm /media/config/link1
rm /media/config/link2
rm /media/config/link3

ln -fs /media/bank1/config /media/config/link1
ln -fs /media/bank2/config /media/config/link2

................
................

# Apply settings
umount -a -t nfs
mount -a

Работаю в Debian 4.14.В целом всё исправно работает, но изредка возникает ситуация, когда ПО зависает на старте. Список процессов при этом:

 2197 root       0:04 /media/bank1/software/modules/my_prog -r 0
 2260 root       0:00 {nfs_client.sh} /bin/sh /media/bank1/service_settings/nfs_client.sh
 2261 root       0:00 {dns.sh} /bin/sh /media/bank2/service_settings/dns.sh
 2266 root       0:00 rm /media/config/link3

Т.е. висим на удалении link3, соответственно, ссылки не создаются и дальнейшая корректная работа ПО затруднена. Может, кто сталкивался с чем-то подобным?

 ,

Putnik ()

Использование одной директории в двух местах файловой системы в android

Задача: сделать возможным использование одной директории в двух местах файловой системы (одна из них используется для синхронизации в nextcloud).

Дано: lineageos 14.1 с рутом

Проблема: Обычно я в таких случаях делаю симлинк. Выполнение

ln -s /storage/emulated/0/<path to file> /storage/emulated/0/<path to dir>

в adb root shell/termux валится с operation not permitted. Вывод mount:

rootfs on / type rootfs (ro,seclabel)
tmpfs on /dev type tmpfs (rw,seclabel,nosuid,relatime,size=956988k,nr_inodes=239247,mode=755)
devpts on /dev/pts type devpts (rw,seclabel,relatime,mode=600)
proc on /proc type proc (rw,relatime,gid=3009,hidepid=2)
sysfs on /sys type sysfs (rw,seclabel,relatime)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,seclabel,relatime)
none on /acct type cgroup (rw,relatime,cpuacct)
tmpfs on /mnt type tmpfs (rw,seclabel,relatime,size=956988k,nr_inodes=239247,mode=755,gid=1000)
none on /config type configfs (rw,relatime)
none on /dev/cpuctl type cgroup (rw,relatime,cpu)
none on /dev/cpuset type cgroup (rw,relatime,cpuset,noprefix,release_agent=/sbin/cpuset_release_agent)
pstore on /sys/fs/pstore type pstore (rw,seclabel,relatime)
none on /dev/bfqio type cgroup (rw,relatime,bfqio)
/dev/block/mmcblk0p25 on /system type ext4 (ro,seclabel,relatime,data=ordered)
/dev/block/mmcblk0p31 on /data type ext4 (rw,seclabel,nosuid,nodev,noatime,noauto_da_alloc,data=ordered)
/dev/block/mmcblk0p29 on /cache type ext4 (rw,seclabel,nosuid,nodev,noatime,noauto_da_alloc,data=ordered)
/dev/block/mmcblk0p28 on /persist type ext4 (rw,seclabel,nosuid,nodev,noatime,noauto_da_alloc,data=ordered)
/dev/block/mmcblk0p21 on /firmware type vfat (ro,context=u:object_r:firmware_file:s0,relatime,uid=1000,gid=1026,fmask=0337,dmask=0227,codepage=437,iocharset=iso8859-1,shortname=lower,errors=remount-ro)
adb on /dev/usb-ffs/adb type functionfs (rw,relatime)
tmpfs on /storage type tmpfs (rw,seclabel,relatime,size=956988k,nr_inodes=239247,mode=755,gid=1000)
/data/media on /mnt/runtime/default/emulated type sdcardfs (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=1015,multiuser,mask=6)
/data/media on /storage/emulated type sdcardfs (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=1015,multiuser,mask=6)
/data/media on /mnt/runtime/read/emulated type sdcardfs (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=9997,multiuser,mask=23)
/data/media on /mnt/runtime/write/emulated type sdcardfs (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=9997,multiuser,mask=7)

Походу дело упирается в sdcardfs, но я впервые слышу о такой fs. Думал ещё о mount -o bind, но оно будет отваливаться после каждого ребута.

 , , ,

Karthago ()

Apache и симлинк в DocumentRoot

Всем привет. Пытаюсь запустить rails app. Вот кусок vhost:

  DocumentRoot "/usr/share/app/public"

  <Directory "/usr/share/app/public">
    Options FollowSymLinks
    AllowOverride None
    Require all granted
  </Directory>

Апач выдает: «symbolic link is not allowed or link target not accessible»

Гуглю уже почти 6 часов. Уже все по нескольку раз перепроверил даже побуквенно все конфиги. Символьная ссылка рабочая. Юзером апача читается и выполняются все что есть по симлинку. Никаких селинуксов и аппарморов нету. Если вместо симлинка подсунуть оригинал - все работает. WTF?! Что ему еще надо чтобы прочитать этот чертов симлинк? Помогите плз! Я бы и плюнул на это дело, но не могу. Надо доковыряться до истины.

 ,

N-N ()

Преобразовать множественные копии файлов в символьные ссылки

android ndk содержит очень много одинаковых копий файлов. Нужно получить из них символьные ссылки. Есть какой-то быстрый способ это сделать?

 

mittorn ()

симлинк для libgcrypt.so.20

Подскажите как правильно залинковать libgcrypt.so в системе? Стоял libgcrypt-1.7.3 было:

~ # locate libgcrypt.so
/lib/libgcrypt.so.20
/lib/libgcrypt.so.20.1.1
/usr/lib/libgcrypt.so.20
/usr/lib/libgcrypt.so.20.1.1
/usr/lib/libgcrypt.so

откатил на libgcrypt-1.5.6 стало:

locate libgcrypt.so
/usr/lib/libgcrypt.so

в системе есть такие файлы:

/lib/libgcrypt.so.11.8.5
/lib/libgcrypt.so.11
/usr/lib/libgcrypt.so.11.8.5
/usr/lib/libgcrypt.so.11
/usr/lib/libgcrypt.so

Что к чему тут ликовать?

 

Algierd ()

yocto symlink's

Всем привет.

Есть свой леер в yocto project и в нем есть image рецепт, который депендится от другого имиджа, с таким содержанием:

# Arago console image
# gives you an image with basic media libraries

require recipes-core/images/arago-image.inc

COMPATIBLE_MACHINE = "(?!arago)"

# The size of the uncompressed ramdisk is 32MB
ROOTFS_SIZE = "32768"

# DM646x have many modules, bump to 40MB
ROOTFS_SIZE_dm6467 = "40960"

# AM3517 have many modules, bump to 64MB
ROOTFS_SIZE_am3517-evm = "65536"

# Double beagle/hawk/overo ramdisk size, due to gazillions of kernel modules
ROOTFS_SIZE_beagleboard = "81920"
ROOTFS_SIZE_hawkboard = "81920"
ROOTFS_SIZE_overo = "81920"

IMAGE_INSTALL_append = "\
    packagegroup-arago-base \
    packagegroup-arago-console \
    packagegroup-arago-tisdk-graphics \
    packagegroup-arago-qte \
    lighttpd \
    mariadb \
    php \
    openssh-sftp-server \
    packagegroup-arago-qte-toolchain-target \
    stm32flash \
    "

export IMAGE_BASENAME = "test-image"

сборка проходит на отлично, но в итоге я не вижу симлинков на последние билды имиджа, кернела и т.д. Как это дело пофиксить?

 , ,

ubik ()

make install симлинки файлов вместо копирования

Есть ли какой то штатный способ произвести подобную смену поведения без переписывания make файла, который генерируемый (cmake) или исходного файла системы сборки?

Вопрос как - я задал. Предвосхищая вопрос назачем: имеется либа, и приложения которые эту либу используют (установленную в префикс). Либа активно правится. Удобно править перейдя из приложения, но на данных момент сиё приводит в копию, изменения в которой - никак не отражаются на либе.

Upd судя по выхлопу strace - никак.

 , ,

pon4ik ()