ln을 사용하여 누락된 디렉터리 만들기

ln을 사용하여 누락된 디렉터리 만들기

그래서 저는 작은 패키지 관리자를 작성하고 있는데 한 가지 문제는 파일에 대한 심볼릭 링크를 만드는 것입니다.

패키지를 설치한 /usr/pkg/name-version다음 파일을 읽어 어떤 심볼릭 링크를 생성할지 결정합니다. 링크를 구축하는 데 이를 사용하고 ln있는데 Linux API 헤더를 설치하는 데 문제가 있습니다. 헤더 파일을 포함하는 폴더가 아닌 헤더 파일 자체를 연결해야 합니다. 따라서 두 패키지가 동일한 include 하위 디렉터리에 파일을 넣어야 하는 경우 그 중 하나를 망칠 필요가 없습니다.

문제를 해결했지만 ln경로가 불완전하면 오류가 발생합니다. 이는 패키지를 설치하기 전에 이러한 디렉터리가 존재해서는 안 되기 때문에 짜증나는 일입니다.

누락된 디렉토리를 생성하는 플래그가 있습니까 ln? 아니면 복잡한 bash 스크립트를 사용해야 합니까?

답변1

이를 수행할 플래그가 없습니다 ln. 디렉토리를 만드는 것은 그 일이 아닙니다.

mkdir -p foo/bar/qux필요 에 따라 생성됩니다 foo. 따라서 마지막 경로 구성 요소를 제외한 모든 경로 구성 요소가 먼저 호출됩니다.foo/barfoo/bar/quxmkdir -p

바퀴를 재발명하는 것 같군요 집어 챙겨 넣다, 원하는 깊이의 디렉터리를 생성하고 내부의 다양한 패키지 구성 요소에 대한 기호 링크를 사용하여 디렉터리 계층을 병합하는 간단한 패키지 관리자입니다. 아마도X스토우, 이는 Stow와 유사하지만 더 많은 사용자 정의 가능성이 있습니다.

답변2

복잡한 bash 스크립트가 필요하지 않고 간단한 한 줄의 코드만 있으면 됩니다. mkdir --parents모든 것을 처리하고 디렉토리 구조가 이미 존재하는 경우 오류를 인쇄하지도 않습니다.

다른 패키지가 손상되지 않도록 제거할 때 이러한 디렉터리를 처리하는 방법에 주의하세요.

또한, 당신이 쓴 이후로 bash, 당신은 볼 수 있습니다요술(뻔뻔한 플러그). 성숙하고 유연하기 때문에 수정하는 것이 더 간단할 수도 있습니다.

답변3

tar링크가 포함된 파일을 준비하는 것이 도움이 될 수 있습니다 .

find . -type l > links.txt
tar cpf links.tar --files-from links.txt

그런 다음 필요한 곳에 링크를 만듭니다.

tar xvf links.tar

관련 정보