여러 Linux 배포판 간에 /usr/local을 공유할 수 있나요?

여러 Linux 배포판 간에 /usr/local을 공유할 수 있나요?

나는 Ubuntu 12.04를 사용해 보았고 이해를 바탕으로 다음과 같은 파티션을 만들었습니다.

  • 2GB 스왑(2GB RAM이 있음)
  • /boot다른 커널 버전을 설치할 예정이므로 1GB (커널 개발을 시작 중입니다)
  • 35GB/var
  • 40GB/usr/local
  • 407GB/home
  • 15GB /(루트)

이제 Ubuntu 12.04와 함께 OpenSUSE 12.2를 설치하고 싶습니다. 두 운영 체제 간에 합계를 공유할 수 있나요 /var? /usr/local패키지가 서로 다른 두 가지 배포판이라는 것을 알고 있지만 디스크 공간을 공유할 수 있는 방법이 있습니까? 그러면 두 OS 모두 /usr/local동일한 파티션에 자체 OS를 가질 수 있습니까?

답변1

공유할 수 있습니다 /usr/local. 때로는 두 배포판에서 서로 다른 버전의 라이브러리를 사용할 수 있으므로 한쪽 또는 다른 쪽 또는 자체에 일부 라이브러리를 설치해야 할 수도 있습니다 /usr/local. 이상한 추가 라이브러리를 설치하는 부담은 /usr/local.

/usr/local시스템 중 하나에 만 특정 프로그램을 설치하려는 경우 , /usr/local공유하는 대신 다른 방식으로 구성할 수 있습니다.가게/usr/local두 시스템 모두에 저장소를 저장하고 심볼릭 링크를 설정합니다.

/usr/local공유하기 위해 별도의 파티션을 둘 필요가 없습니다 . 한 시스템의 시스템 파티션에 저장하고, 다른 시스템의 원하는 위치에 설치하고, 심볼릭 링크를 만들 수 있습니다.

공유할 수 없습니다 /var. 디렉토리는 약간 다르게 배열되어 있으며 각 배포에는 고유한 사용자 ID가 있습니다. /var메일 풀과 같은 일부 콘텐츠를 공유할 수 있습니다 .

35GB는 /var많습니다. 기본 시스템의 경우에는 필요하지 않습니다. 여기에 많은 데이터를 저장하려는 경우(예를 들어 웹 서버 루트가 여기에 있기 때문에) 데이터에 따라 파일 시스템의 크기를 조정하십시오. /var루트 파티션에서 분할하는 것은 의미가 없으므로 병합합니다. 목록에서 언급 하지 않았습니다 /usr. 루트 파티션을 분할할 필요도 없습니다. 각 운영 체제에 대한 시스템 파티션과 공유 파티션을 생성하기만 하면 됩니다 /home. 설치하려는 프로그램을 매우 보수적으로 사용하지 않는 한 시스템 파티션에는 15GB 이상이 필요합니다. 50GB 시스템 파티션을 생성하기만 하면 됩니다.

/boot다른 요구 사항(예: 시스템 파티션 암호화)이 없으면 별도의 파티션이 필요하지 않습니다.

답변2

심볼릭 링크 외에도 다음을 사용할 수도 있습니다 bind mounts. http://docs.1h.com/Bind_mounts

기본적으로 파티션과 파일 시스템을 가질 수 있습니다(Anthon의 설정과 유사). 이 경우 파일 시스템이 이미 설치되어 있다고 가정하고 /mnt/localubuntu mount --bind /mnt/local/ubuntu /usr/local설치 및 mount --bind /mnt/local/suse /usr/localsuse 설치에서 이를 수행하십시오.

이것의 장점 중 하나는 /usr/local실제 /usr/local디렉토리를 삭제/이동하지 않고도 기존 디렉토리에서 이 작업을 수행할 수 있다는 것입니다.

예는 다음과 같습니다.

# mkdir foo
# touch foo/nowyouseeme
# mkdir bar
# touch bar/nowyoudont
# ls foo
nowyouseeme
# mount --bind ./bar ./foo
# ls foo
nowyoudont
# umount foo
# ls foo
nowyouseeme

답변3

/usr/local(즉, 로컬로 컴파일/설치된 소프트웨어)는 제대로 작동해야 합니다.사용된 시스템 라이브러리가 호환되는 한. 이는 대략 같은 기간에 출시된 "데스크톱 사용" 릴리스를 사용하면 이 문제를 해결할 수 있음을 의미합니다. Fedora와 RHEL/CentOS를 혼합하여 사용하려는 경우모두기본 라이브러리는 glibc(대부분) 이전 버전과 상당히 호환되므로 이전 라이브러리(이 경우 RHEL/CentOS)의 배포판을 기반으로 구축하세요. 너~ 할 것이다C++ 문제(C++ 런타임은 버전 간에 많이 변경되는 경향이 있음)로 인해 일부 그래픽 라이브러리는 인터페이스를 임의로 변경합니다. 데스크탑 환경과 관련된 모든 것(KDE, Gnome 등)은 아마도 의문의 여지가 없습니다.

답변4

컴퓨터에 여러 설치를 설정하는 방법은 이러한 설치를 사용하는 스타일에 따라 다릅니다. 명심해야 할 또 다른 사항은 실제 파티션을 사용하여 멋진 가상 머신 작업을 수행하려는 경우가 아니면 두 설치가 동시에 작동하지 않는다는 것입니다.

제 경험상 /home파티션은 별 문제 없이 공유가 가능해야 합니다. 응용 프로그램( dovecot, ) 을 위해 특별히 생성된 사용자이지만 시스템에는 일반적 으로 "일반 사용자"와 같은 실제 디렉터리가 fetchmail없습니다 . /home다른 Ubuntu 버전 간에 로그인을 공유하지만 홈 디렉터리의 구성 파일이 자동으로 변환되기 때문에 이전 설치로 돌아갈 때 문제가 발생하는 경우가 있습니다. 이러한 문제를 해결하기 위해 동일한 로그인에 대해 다른 홈 디렉터리를 사용하고 있지만 /home동일한 사용자 ID와 그룹 ID를 사용하여 데이터를 공유하고 있습니다. 특정 하위 디렉터리(예: 음악이 포함된 디렉터리) 간에는 언제든지 링크를 만들 수 있으므로 호환되지 않거나 되돌릴 수 없는 업그레이드가 발생할 위험이 없습니다.

저는 80년대 중반에 PDP 11/70을 사용한 이후 별도의 파티션을 만들어본 적이 없는데 왜 친구가 이것을 추천하는지 모르겠습니다. 또한 소스에서 설치하는 경우 일부 프로그램은 기본적으로 설치됩니다 /usr/local. 예를 들어 pipPython 모듈을 설치해도 동일한 작업이 수행됩니다. 문제를 방지하기 위해 /mnt/local각 컴퓨터에 지정된 파티션을 마운트하고 /usr/local해당 파티션에 디렉터리 ubuntususe소프트 링크( )를 만듭니다 ln -s /usr/local /mnt/local/ubuntu. 기계. 이렇게 하면 실수로 덮어쓸 위험 없이 해당 파티션의 공간을 공유할 수 있습니다. 나중에 특별히 공유하고 싶은 콘텐츠 사이에 언제든지 링크를 만들 수 있습니다.

제가 제안할 수 있는 또 다른 방법은 각 설치와 함께 설치된 항목에 대한 일종의 로그를 유지하는 것입니다(저는 변경 로그 모드에서 emacs를 사용하고 각 컴퓨터 릴리스 조합에 대한 파일을 생성합니다). 어떤 추가 항목을 설치했는지 기억해야 합니다. 이제 설치 후 개정 관리를 setupnewsystem포함하여 모든 추가 작업을 수행하는 스크립트가 있습니다./etcmercurial

관련 정보