apt-get 설치 경로 변경

apt-get 설치 경로 변경

루트 파티션에 공간이 부족한 컴퓨터가 있습니다. 여유 공간이 충분한 또 다른 디스크가 있습니다. 다른 디스크/디렉토리에 패키지를 설치하도록 apt-get을 구성하는 방법은 무엇입니까?

답변1

당신은 그렇게하고 싶지 않습니다. 첫 번째는 루트 아래의 공간을 회수하는 것입니다. 이것은 가능할 수도 있습니다. 먼저 cd 를 /var/cache/apt/archives입력하고 du -hs. 이렇게 하면 적절하게 캐시된 deb 패키지가 사용하는 공간의 양을 알 수 있습니다. 수동으로 삭제하거나 를 사용할 수 있습니다 apt-get clean.

사용하지 않는 큰 패키지를 제거하는 도구도 있습니다. 예를 들어 wajig( apt-get install wajig)를 설치하여 사용할 수 있습니다 wajig large. 이렇게 하면 크기가 증가하는 순서로 패키지 목록이 제공됩니다.

그래도 문제가 해결되지 않으면(그리고 해결해야 한다면) 루트 파일 시스템을 늘리는 것을 고려해 볼 수 있습니다. LVM을 사용하고 있습니까? 어쨌든, 당신이 원하는 것은 루트 파일 시스템을 더 크게 확장하는 것입니다. LVM을 사용하면 다른 디스크로 쉽게 확장할 수 있지만 먼저 룸 파일 시스템을 마운트 해제해야 합니다. LVM을 사용하지 않는다면 더 어려울 수도 있습니다. 저는 오랫동안 LVM만 사용해왔기 때문에 어떤 옵션이 있는지 잘 모르겠습니다.

더 구체적인 정보가 필요한 경우 이 결과를 df -h질문에 붙여넣으세요.

답변2

apt-get(8)에는 설치 디렉터리를 변경하는 직접적인 옵션이 없습니다. dpkg(1)은 작동하지만 chroot 환경에서 작동합니다.

정상적으로 설치한 다음 응용 프로그램 파일을 이동하여 원래 위치에서 새 위치로 심볼릭 링크를 설정할 수 있습니다. 이는 모든 응용 프로그램에서 작동하지 않을 수 있습니다. 또한 프로세스를 되돌리지 않으면 제거 후 문제가 발생할 수 있습니다.

가장 좋은 방법은 /root 파티션을 정리하여 공간을 확보하는 것입니다. /usr 또는 기타 디렉터리(/root 파티션 아래에 있는 경우)를 여유 디스크로 이동하고 이를 루트 아래에 마운트하여 다른 디스크의 여유 공간을 사용합니다. 루트 파티션을 확장하거나 패키지를 다시 빌드하여 다른 곳에 설치하세요.

답변3

먼저 너무 많은 공간을 차지하는 대용량 로그 파일이나 이와 유사한 파일이 있는지 확인할 수 있습니다(su dufind찾아보세요).

어떤 방법으로도 공간을 회수할 수 없는 경우(예: apt-get clean대용량 파일이 있는지 확인 du -sh /*du -sh /bigger_directory/*) /usr을 동일한 디스크나 다른 디스크의 새 파티션으로 이동할 수 있습니다. 이는 일반적으로 모든 패키지가 설치되는 디렉터리이므로 이동하여 디스크 공간의 대부분을 복구해야 합니다.

저는 이 작업을 몇 번 수행했으며 비슷한 방법을 사용하여 전체 시스템을 마이그레이션하기도 했습니다(예: 랩톱의 운영 체제를 새 SSD 디스크로 이동). 내가 취한 단계:

  • 시스템과 데이터를 백업하십시오(항상 변경하기 전에).
  • 디스크에 파티션을 준비하고 포맷합니다(우리는 이를 /usr로 사용합니다).
  • LIVECD 또는 USB 스틱 Linux 배포판을 사용하여 시스템을 재부팅합니다.
  • Live CD에 있는 동안 터미널을 시작하고 루트가 됩니다.
  • 램디스크에 임시 파티션을 생성한 후, 해당 파티션에 로컬 PC 디스크를 마운트하여 사용하세요.
  • 필요한 명령을 실행하여 /usr 데이터를 새 디스크에 복사합니다. 내 기억을 되살리려면 (괜찮다고 생각합니다):

sudo su - root mkdir /temp ### Assuming / is /dev/sda1 : mount -t ext4 /dev/sda1 /temp cd /temp mv /temp/usr /temp/usr.OLD mkdir /temp/usr chown root:root /temp/usr chmod 755 /temp/usr ### Assuming your new partition is /dev/sda6 mount -t ext4 /dev/sda6 /temp/usr ### Copy the entire old /usr to the new disk rsync -avz /temp/usr.OLD/* /temp/usr ### Edit your fstab to automount /usr from the new location vim /temp/etc/fstab ### (add an entry like: /dev/sda6 /usr ext4 defaults 1 2) cd / umount /temp/usr umount /temp/ rmdir /temp exit

  • 이제 /usr 데이터를 새 파티션에 복사하고, 빈 /usr 디렉토리를 생성하고, 시스템이 부팅할 때 이 새 파티션에서 /usr을 마운트하도록 /etc/fstab 파일을 수정했습니다.
  • 이제 시스템을 부팅하고 제대로 작동하는지 확인할 수 있습니다.
  • 시스템이 제대로 작동하고 있다고 확신하면 /usr.OLD를 삭제하고 /usr에서 사용하는 모든 디스크를 복원할 수 있습니다.

어떤 종류의 문제가 발생하면 항상 동일한 방법(livecd로 부팅, /temp에 / 마운트, /etc/fstab 항목 제거, /usr 및 mv /usr 삭제)을 사용하여 이전 usr을 복원할 수 있다는 점을 기억하십시오. /와 같은 OLD 우리).

면책조항: 이는 매우 고급 프로세스는 아니지만 매우 주의해서 모든 단계를 완전히 이해해야 합니다. 이 과정에서 작동 여부를 테스트하기 전에는 아무것도 제거되지 않지만 이 과정을 수행하기 전에 모든 것을 확인하십시오. 먼저 테스트하려면 샘플 파티션(예: /opt)을 사용하여 연습할 수 있습니다.

답변4

서로 다른 파티션에 서로 다른 패키지를 설치하는 것은 기술적으로 가능하지만 어렵습니다. 당신이 사용할 수있는공동 설치모든 것을 일반 위치에 표시하면서 새로 설치된 패키지와 패키지 버전을 다른 파일 시스템으로 보내는 것은 과잉입니다.

다른 위치에 새 패키지를 설치하는 대신 큰 디렉터리 트리를 선택하여 다른 파일 시스템으로 옮긴 다음 심볼릭 링크를 만듭니다. 예를 들어, 마운트된 새 파일 시스템을 생성 하고 이 새 파일 시스템으로 /LARGE이동하기로 결정한 경우:/usr/share/doc

mv /usr/share/doc /LARGE/doc
ln -s /LARGE/doc /usr/share/doc

그런 다음 시스템을 정상적으로 계속 사용하십시오.

이상적으로는 루트 파일 시스템을 확장해야 합니다. LVM에서 주류 파일 시스템(예: ext4, btrfs) 중 하나를 사용하는 경우 시스템이 실행되는 동안 다음을 수행할 수 있습니다. LVM 볼륨을 늘립니다(물리 볼륨에 여유 공간을 확보한 다음 실행 lvextend). 그런 다음 해당 시스템의 파일을 늘려 볼륨을 채웁니다( resize2fs또는 실행 btrfs filesystem resize). LVM을 사용하지 않는 경우 루트 파티션을 확장하려면 라이브 시스템으로 재부팅해야 할 수도 있습니다.

관련 정보