그래서 작은 패키지 관리자를 작성하고 있는데 문제는 파일에 대한 심볼릭 링크를 만드는 것입니다.
패키지를에 설치 한 /usr/pkg/name-version
다음 파일을 읽어서 어떤 심볼릭 링크를 만들지 결정합니다. 내가 사용하고 ln
있는 링크를 만들기 위해, 그리고 리눅스 API 헤더를 설치하려고 할 때 문제로 실행했습니다. 헤더 파일을 포함하는 폴더가 아닌 헤더 파일 자체를 링크해야합니다 (따라서 2 개의 패키지가 포함하는 동일한 하위 디렉토리에 파일을 넣어야하는 경우 하나의 패키지를 망칠 필요가 없습니다).
그 문제는 해결되었지만 ln
경로가 불완전하면 단순히 오류가 발생합니다. 패키지가 설치 될 때까지 해당 디렉토리가 없어야하기 때문에 성 가실 것입니다.
ln
누락 된 디렉토리를 작성 하는 플래그가 있습니까 , 아니면 복잡한 bash 스크립트와 함께 가야합니까?
답변
복잡한 bash 스크립트가 필요하지 않지만 간단한 하나의 라이너가 필요합니다. mkdir --parents
디렉토리 구조가 이미 존재하는 경우 오류를 인쇄하지 않아도 모든 것을 처리합니다.
제거시 이러한 디렉토리를 처리하는 방법에주의하십시오. 따라서 다른 패키지를 중단하지 마십시오.
또한에 글을 쓰고 있으므로 마법 (shameless plug)을 bash
살펴볼 수 있습니다 . 성숙하고 유연하기 때문에 수정하는 것이 더 간단 할 수도 있습니다.
답변
이 작업을 수행 할 플래그가 없습니다 ln
. 디렉토리를 만드는 것은 그 일이 아닙니다.
mkdir -p foo/bar/qux
만들 것 foo
, foo/bar
그리고 foo/bar/qux
필요에 따라. 따라서 mkdir -p
마지막 경로 구성 요소를 제외한 모든 것을 먼저 호출하십시오 .
내부의 다른 패키지 구성 요소에 대한 심볼릭 링크를 사용하여 디렉토리를 필요한 깊이로 작성하여 디렉토리 계층 구조를 병합하는 간단한 패키지 관리자 인 휠 Stow를 재창조 하는 것처럼 들립니다 . 또는 아마도 Stow와 유사하지만 더 많은 사용자 정의 가능성이있는 XStow 입니다.
답변
어쩌면 tar
링크로 파일을 준비하는 데 도움이 수 :
find . -type l > links.txt
tar cpf links.tar --files-from links.txt
그런 다음 필요한 곳에 링크를 작성하십시오.
tar xvf links.tar