سؤال كيفية حل جميع الروابط في الدليل؟


أحاول تقديم حزمة debian من مصدر التعليمات البرمجية المصدر الذي ليس لي. ال configure البرنامج النصي المقدم من قبل المؤلف يجعل الكثير من الروابط في دليل المصدر. إنها ترتبط بجميع الرؤوس في src subdir ل include subdir (بحيث يمكن بسهولة makefile نسخ include الدليل في حالة تثبيت حزمة التطوير). أنا استخدم debhelper مخطوطات لجعل الحزمة.

أنا استخدم debhelper مخطوطات لجعل الحزمة. المشكلة هي استخدام تنسيق حزمة debian الجديد (quilt 3.0 nativedebuild يرفض إضافة تغييرات من دليل المصدر يتألف روابط رمزية للنهائي diff ملف. أواجه أخطاء مثل هذه:

dpkg-source: error: cannot represent change to foo.h:
dpkg-source: error:   new version is symlink to /ba/foo/foo.h
dpkg-source: error:   old version is nonexistent

أنا على دراية بالحل الجيد: قم بتغيير تكوين البرنامج النصي وليس لرمز أي رأس على الإطلاق. يجب أن تضيف هدفًا إلى makefile لتثبيت devel صفقة. على الرغم من تكوين سكريبت لديه قضايا حقوق التأليف والنشر. لا أستطيع لمس مصدر المنبع.

أبحث عن برنامج نصي bash لاستبدال جميع الروابط في دليل بالملفات الفعلية التي يشيرون إليها. على سبيل المثال إذا كان في الدليل d هناك ثلاثة ملفات a و b و cالتي يأكلون بها روابط ../../foo/bar/x، ../../foo/bar/z  ../../foo/bar/y، تشغيل البرنامج النصي المطلوب (قل magic.sh) إعطاء ./d كحجة أولى ، يجب

cp ../../foo/bar/x ./d/a
cp ../../foo/bar/y ./d/b
cp ../../foo/bar/z ./d/c

لا أستطيع العثور على طريقة لمعرفة أي ملف يشير إلى ارتباط رمزي.


4
2017-09-18 17:52


الأصل




الأجوبة:


استعمال readlink.

$ readlink /etc/alternatives/editor
/usr/bin/vim.basic

ولفه في نص شيله يسير على الروابط الرمزية في الدليل.

يمكنك العثور على روابط رمزية باستخدام find:

$ find . -type l

مثال أكثر اكتمالا:

#!/bin/bash

find . -maxdepth 1 -type l | while read LINE; do 
echo link: $LINE resolved: `readlink $LINE`
done

المخرجات

link: ./.remmina resolved: sparkleshare-homedir/remmina
link: ./project resolved: Documents/2011-2 Project/
link: ./.ssh resolved: sparkleshare-homedir/ssh

4
2017-09-18 17:57



pastebin.com/FNWQAsbm آمل أن يكون هذا العمل بالنسبة لي ... - sorush-r
يعمل بشكل جيد ... شكرا :) - sorush-r
تأكد من القيام بالفرار الصحيح عند القيام بالعمليات. رابط ارتباط إلى حل bla / bla قد يتوسع إلى هذا: rm -rf bla / bla. لست متأكدا إذا كان المثال الخاص بك يمنع هذا ، لا الألغام. - gertvdijk