Unix(OSX)에서 패키지, 디렉터리 및 PATH 관리

Unix(OSX)에서 패키지, 디렉터리 및 PATH 관리

저는 주로 독학으로 생물정보학 박사 학위를 취득했습니다. 이제 다양한 디렉터리 구조(예: 내 데이터)를 정리하려고 합니다. 하지만 사용 중인 다양한 생물정보학 패키지를 저장하는 방법도 생각하고 있습니다. . 정식 교육을 받은 적도 없고 Unix 과정을 하나만 수강했기 때문에 "Unix 101"이나 이와 유사한 언어로 가르쳤다고 생각하는 것이 아직도 많습니다. 인터넷 검색을 좀 해보았지만 제 질문에 대한 답을 찾지 못해서 여기에 질문을 드려야겠다고 생각했습니다. 저는 Mac에서 작업하고 있으므로 OSX(Yosemite)도 중요합니다.

내가 사용하고 있는 다양한 패키지를 다운로드하고 설치할 때 현재 해결 방법은 전체 다운로드 디렉터리를 복사하여 /Users/sajber/software모든 파일을 포함하는 것 입니다 make(해당되는 경우, 다운로드 디렉터리에 미리 만들어진 바이너리가 있는 경우도 있음). /Users/sajber/bin그런 다음 어떤 형태의 패키지 관리 소프트웨어 도 사용하지 않으므로 모든 작업을 수동으로 수행했습니다 PATH./Users/sajber/bin

이것이 얼마나 "잘못"되었으며 어떻게 개선할 수 있습니까? 사람들이 평소에 하는 일에 대한 일종의 기준이 있나요?

모든 패키지를 이전과 같이 유지하는 대신에 에서와 같이 /Users/sajber/software개별 패키지를 추가하는 방법을 생각했습니다 . 처음에는 이렇게 했지만 경로가 너무 엉망이 되어 실수 없이 변경하기가 어려워서 현재 솔루션을 사용했습니다. 이제 생각해 보니 이것이 "더 나은" 솔루션이라면 더 쉽게 액세스할 수 있도록 각 패키지에 별도의 줄(위에서 언급한 대로)을 제공하도록 변경할 수도 있습니다.PATHPATH=$PATH:/Users/sajber/software/<package>PATH.bash_profile

또한 /Users/sajber/scripts에 추가한 다양한 Python, R 및 bash 스크립트용 폴더도 있습니다 PATH. Git이 디렉토리에는 버전 제어를 위한 저장소가 있습니다. 이것이 당신이 일을 해야 하는 방식인가요?

이 질문이 매우 기본적이라면 죄송합니다! 나는 Unix 환경에서 일을 하는 표준 방법이 무엇인지 몰랐고 대부분 독학했습니다.

답변1

이에 동의하는 데는 아무런 문제가 없으며 장점과 단점이 있습니다. 로컬에서 개발한 스크립트와 다른 곳에서 얻은 프로그램을 구별하는 것이 유용하다고 생각합니다.

  • 내 로컬에서 개발된 스크립트에는 참조해야 할 변경 내역이 있지만
  • 다른 곳에서 얻은 프로그램은 다른 사람이 관리합니다(자체 변경 기록이 있음).

"내" 스크립트가 실행되는 위치에서 업데이트되는 것이 가장 편리하기 때문에 여러 개의 bin 디렉터리를 갖는 것이 도움이 됩니다(적어도 나에게는).

내 프로그램의 패키지를 만들기 전에 나는 /usr/local후자를 사용했습니다.

./configure && make && sudo make install

그리고 대부분프로그램이 구성표를 기본적으로 채택하려면 autoconf 관련 스크립트를 사용하십시오.

물론 다른 사람들도 각자 선호하는 것이 있을 것입니다. 즉, 귀하에게 가장 적합한 것을 선택하십시오.

답변2

이렇게 하는 데에는 아무런 문제가 없습니다.

답변3

댓글로 시작했는데 너무 길고 자세하게 되어버렸네요...

개인적인 용도(즉, 귀하의 사용자 ID로만 사용되는) 프로그램 및 스크립트의 경우에는 문제가 없습니다. 실제로, 바이너리를 복사하는 대신 /Users/saberj/bin에 심볼릭 링크하기를 원할지라도 당신이 하고 있는 일은 좋은 습관입니다. 이렇게 하면 각 바이너리의 출처를 추적하기가 더 쉬워지고 제거 또는 업그레이드도 더 쉬워집니다. 그들을).

시스템의 모든 사용자가 사용하도록 만들어진 프로그램은 패키지로 설치하거나(패키지가 사용 가능한 경우) GNU와 같은 도구를 사용하여 /usr/local에 설치해야 합니다.가게는 패키징의 일부 이점(손쉬운 제거 포함)과 함께 패키징되지 않은 소프트웨어를 제공합니다.

관련 정보