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

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

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

패키지를 에 설치한 /usr/pkg/name-version다음 파일을 읽어 어떤 심볼릭 링크를 만들 것인지 결정합니다. 링크를 만드는 데 을 사용하고 있는데 lnLinux API 헤더를 설치하려고 할 때 문제가 발생했습니다. 헤더 파일을 포함하는 폴더가 아닌 헤더 파일 자체를 연결해야 합니다(따라서 2개의 패키지가 동일한 include 하위 디렉터리에 파일을 넣어야 하는 경우 하나의 패키지를 망치지 않고도 가능합니다).

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

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

답변1

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

mkdir -p foo/bar/quxfoo필요에 따라 및를 foo/bar생성 합니다 foo/bar/qux. 따라서 mkdir -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

관련 정보