별도의 HDD에 응용 프로그램을 설치하는 방법은 무엇입니까?


10

나는 창문이 너무 좋았고 이제는 완전한 바보 같은 느낌이 든다.

우분투 용 SSD를 가지고 있으며 대부분의 프로그램을 별도의 HDD에 설치하고 싶지만 실마리는 없습니다.
내가 시도한 모든 검색은 이중 부팅 설치로만 나타납니다.

  • (해결됨->) "/ etc /"를 찾는 데 문제가 있습니다. 구체적으로 Conky를 수정합니다.
    이 용어를 검색하면 사람들이 파일에 액세스하는 방법이 아니라이 파일에 액세스하도록 지시하는 인스턴스 만 표시됩니다.

1
이것 좀보세요 , 시작하겠습니다.
Mitch

모든 것이 홈 폴더에서 확장되었다는 인상을 받았습니다. 으악. 링크 한 해당 페이지가 내 문제와 관련하여 도움이되지 않았지만 지금 읽어보고 많이 배우고 있으므로 감사합니다.
plaguedoctor

mount 및 fstab 태그를 추가했습니다. 특정 파일 시스템을 특정 파티션이나 드라이브에 마운트하도록 수동으로 설정하여 설명하는 것을 수행 할 수 있습니다.
belacqua 2016 년

@belacqua 그 외에 다른 방법이 있습니까? 다른 드라이브의 특정 파일 시스템을 원하지 않고 특정 프로그램의 모든 파일 시스템을 원합니다. 그렇게하면 시스템에 얼마나 집중적인지, SSD에 게임 / 가상 상자 등이 있고 HDD 중 하나에 libreoffice / Thunderbird와 같은 것들이 있습니다.
plaguedoctor

주어진 설치와 파일이 어디에 있는지를 결정하는 것은 쉽지 않습니다. Mitch가 언급 한 링크에서 답변을보십시오. 심볼릭 링크와 같은 것을 사용할 수도 있지만 간단하게 시작하는 것이 좋습니다. 예제 응용 프로그램을 찾고 여기에 대한 특정 질문을하거나 덜 일반적으로 수정하십시오. 또는 신중하게 실험하십시오.
belacqua 2016 년

답변:


22

Windows와 GNU / Linux에는 큰 차이가 있습니다. Windows에서는 각 프로그램이 종속 된 모든 라이브러리와 함께 별도의 폴더에 설치되는 것이 일반적입니다. 이로 인해 라이브러리를 사용하는 각 프로그램에 대해 라이브러리가 여러 번 설치되어 디스크 공간이 많이 낭비되는 경우가 많습니다.

Linux에서 프로그램은 FHS ( Filesystem Hierarchy Standard)에 따라 설치됩니다 . 즉, 프로그램이 의존하는 라이브러리는 모두 공용 전용 위치에 설치되므로 프로그램을 사용하는 프로그램 수에 관계없이 일반적으로 한 번만 설치됩니다. 또한 프로그램은 특정 라이브러리의 동일한 버전을 사용하는 방식으로 빌드됩니다. 이렇게하면 디스크 공간 (및 런타임에 RAM)이 절약되지만 최소한 시스템 구성 파일을 편집하지 않으면 (예 : /etc/ld.so.conf.d) 다른 파티션이나 하드 디스크에 프로그램을 자유롭게 설치할 수 없다는 단점이 있습니다. 다른 라이브러리 폴더를 포함하려면).

데비안 패키지 시스템은 FHS를 염두에두고 구현되었으므로 내가 아는 한, 데비안 패키지를 원래의 폴더와 다른 폴더에 설치하고 수동으로 이동하지 않고 작동시키는 쉬운 방법은 없습니다 나중에 파일을 편집합니다. 컴파일 타임에 경로가 하드 코드되어 있기 때문입니다. 따라서 dpkg --instdir=folder/ package.deb명령 줄에서와 같이 다른 폴더에 패키지를 설치하더라도 프로그램은 여전히 ​​'folder / etc'가 아니라 '/ etc'에서 해당 구성을 찾습니다. 물론 패키지는 'folder / etc'에 설치되었습니다 ... 메뉴 파일은 폴더 / usr / share /가 아니라 '/ usr / share applications'에 있어야하므로 프로그램은 메뉴에 추가되지 않습니다. 신청.

물론 소스 파일에서 프로그램을 수동으로 구성하고 컴파일하여 원하는 위치에 이진 및 데이터 부분을 설치하고 구성 파일을 FHS 호환 위치에 설치하는 것은 물론 권장하는 사항입니다. 고급 사용자. 소스에서 컴파일하려는 경우 자동으로 데비안 패키지를 생성하는 도구 인 checkinstall을 살펴보십시오 .

linuxfromscratch 에서 제안 된 다른 옵션 은 패키지를 적절한 위치에 압축 해제 한 다음 해당 FHS 위치에 설치된 모든 파일에 대한 심볼릭 링크를 만드는 것입니다.

의견에서 당신은 게임을 언급하고 있기 때문에 : Ubuntu Software Center를 통해 구입하지 않은 많은 게임은 설치 프로그램 실행 파일로 제공되며 모든 폴더, 일반적으로 홈 디렉토리의 하위 폴더에 설치할 수 있습니다. WINE을 사용하여 실행되는 Windows 게임은 원하는 디렉토리에 설치할 수도 있습니다. 와인의 경우 WINEPREFIX라는 환경 변수가 있으며 각각 고유 한 가상 C : 드라이브를 포함하여 수많은 독립적 인 WINE 폴더를 설정할 수 있습니다. 자세한 내용은 WINE 매뉴얼 페이지를 참조하십시오.

게임 / 프로그램이 데비안 패키지로 제공 되더라도 좋아하는 아카이브 관리자에서 패키지 내용을 볼 수 있습니다. / opt에 게임을 설치하려는 경우 일반적으로 FHS를 준수하지 않는 프로그램의 설치 위치로 / opt가 사용되므로 일반적으로 다른 폴더에 안전하게 설치할 수 있습니다.


정확하고
공감할

1
그럼에도 불구하고, 임의의 위치에서 패키지를 설치하는 데 필요한 사항, 편집해야 할 파일 및 설정해야 할 환경 변수에 대해 자세히 설명하지 않았으므로 완료되지 않았습니다. 나는 그것이 중간 크기의 소설이 될까봐 두려운 데…
soulsource

1
나는 귀찮게하지 않을 것입니다. 다른 곳에 / etc /를 마운트하십시오. ssd에서 디스크로드의 90 %를 차지합니다.
Rinzwind

5

TL; DR

  1. 방금 설치 한 Ubuntu 버전으로 외부 USB 디스크를 부팅하면 /dev/sdaSSD와 /dev/sdbHDD 라고 가정 합니다.

  2. gparted를 사용하여 설치하려는 모든 응용 프로그램 (64GB 라고 가정 함)을 포함하도록 HDD에 파티션을 만들고 이것이 HDD에서 생성 할 세 번째 파티션이라고 가정합니다 ( /dev/sbd3)

  3. 다음 명령을 실행하십시오.

    mkdir /media/apps
    mount /dev/sdb3 /media/apps
    mkdir /media/apps/usr
    cp --preserve=all --recursive /opt /media/apps
    cp --preserve=all --recursive /usr/bin /media/apps/usr
    
  4. sudo nanofstab에는 /dev/sda1/etc/애프터 다음과 같은 권리 포함 할 /항목 (루트 디렉토리)

    /dev/sdb3  /media/apps          ext4   errors=remount-ro  0   0 
    /opt       /media/apps/opt      none   defaults,bind      0   0
    /usr/bin   /media/apps/usr/bin  none   defaults,bind      0   0
    
  5. 재부팅 및 테스트

긴 버전 :

유닉스 / 리눅스 / 우분투는 나중에 데스크탑을 사용하는 서버 OS 인 것으로 생각되었지만 Windows는 데스크탑 OS 인 것으로 간주되어 서버는 나중에 생각했습니다.

따라서 Linux Filesystem Hierarchy Standard를 사용하면 어느 곳에 나 드라이브 / 파티션을 무제한 으로 배치 할 수 있으며 사용자에게 투명성을 제공하여 올바른 드라이브 또는 파티션에 바인딩 할 수 있으며 Windows OS는 최대 24 개의 액세스 가능한 드라이브 / (파티션 C:관통 Z:A:B:플로피 디스크를 위해 예약된다.)

직접 설치하는 대부분의 응용 프로그램은 /opt//usr/bin에 설치되므로 Ubuntu를 정상적으로 설치 한 다음 /dev/sdaSSD, /dev/sdbHDD 및 /dev/sddUSB 스틱이라고 가정하는 아래 단계를 사용하십시오 .

  1. 방금 설치 한 Ubuntu 버전으로 외부 USB 디스크를 부팅하십시오.
  2. gparted를 사용하여 설치하려는 모든 응용 프로그램 (64GB 라고 가정 함)을 포함하도록 HDD에 파티션을 만들고 이것이 HDD에서 생성 할 세 번째 파티션이라고 가정합니다 ( /dev/sbd3)
  3. 해당 파티션을 임시 디렉토리에 마운트하십시오.

    mkdir /media/apps
    mount /dev/sdb3 /media/apps
    
  4. 기존 /opt/usr/bin거기에 복사하십시오 :

    mkdir /media/apps/usr
    cp --preserve=all --recursive /opt /media/apps
    cp --preserve=all --recursive /usr/bin /media/apps/usr
    
  5. sudo nanofstab에는 /dev/sda1/etc/애프터 다음과 같은 권리 포함 할 /항목 (루트 디렉토리)

    /dev/sdb3  /media/apps          ext4   errors=remount-ro  0   0 
    /opt       /media/apps/opt      none   defaults,bind      0   0
    /usr/bin   /media/apps/usr/bin  none   defaults,bind      0   0
    
  6. 재부팅 및 테스트

  7. 모든 것이 올바르게 작동하면 USB 스틱으로 다시 재부팅하고에있는 모든 것을 삭제 /dev/sda1/opt하고 /dev/sda1/usr/bin이미 다른 곳에 마운트 된 더 이상 사용되지 않는 디렉토리로 사용중인 디스크 공간을 되 찾으십시오.

경고 : HW 오류로 인해 마운트하지 않을 경우 마지막 명령으로 인해 시스템이 중단 될 수도 있습니다./dev/sbd3


Windows는 실제로 약 10 년 동안 루트가 아닌 경로에 드라이브를 마운트하는 것과 동일한 지원을합니다. 이러한 드라이브 문자는 사용자별로 매핑 될 수 있으므로 H : \는 사용자 별 홈 디렉토리가 될 수 있습니다. 당연한 일입니다. Windows NT 제품군은 VMS (다중 사용자 시스템)에서 영감을 얻었습니다. AT & T는 전화 스위치를 만들어 서버 운영체제로 생각하지도 않았다. 그리고 UNIX는 처음에는 다중 사용자 지향적이지 않다는 점에서 Multics의 영감과는 다릅니다. 전화기 스위치에는 필요하지 않습니다.
MSalters

@MSalters 와우, ... 나는 AT & T 전화 스위치 비트를 몰랐다 기억 할 VMS에서 / NT 부분과 M $가 너무 12월의 원리 엔지니어 및 OS / 2 일부를 고용,하지만 그 전에 , 그것은 단일했다 사용자가 선점 적으로 멀티 태스킹 데스크탑 셸. > :-) 업데이트!
Fabby

1
또한 Windows가 아닌 문자 드라이브 (지원 1:, !:등), 같은 DOS의 일부 버전을했다 (다른 문자와 [:등). Windows는 24 개의 파티션으로 제한 되지 않습니다 (볼륨 마운트 지점 조회). 초기 버전의 Windows (95 이전)는 Windows 프로세스간에 선제 적이 아닌 협력적인 멀티 태스킹을 사용했습니다. DOS VM 만 선점 적으로 멀티 태스킹되었습니다 (향상된 모드).
Stephen Kitt

1
저는 UNIX 그룹의 AT & T에서 일했습니다. 전화 스위치로서의 삶은 시작되지 않았습니다.
stevegt

@MSalters Unix는 담당 회사가 개발 한 것 외에는 전화 스위치와 관련이없는 것 같습니다. 이름이 만들어 졌을 무렵부터 초기에 여러 명의 사용자가 사용 된 것으로 보입니다. SE RC 에서이 답변 을 참조하십시오 .
피터-복원 모니카

2

크롬 북에 사용한 솔루션은 패키지를 설치하지 않고 .tar.gz를 다운로드하는 것입니다.

이것은 당신이 찾고있는 것이 아닐 수도 있지만, 매우 작은 드라이브가 있고 중요한 소프트웨어 (GNOME 데스크탑, 웹 브라우저)를 추가 소프트웨어 (GIMP, IDE, 게임)에서 분할하여 로컬 공간을 절약하고 외장 드라이브없이 컴퓨터를 계속 작동 시키십시오. 지금까지 IMO가 최고의 솔루션입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.