설치 단계를 피하기 위해 특정 패키지의 설치 디렉터리를 다른 컴퓨터로 전송할 수 있습니까?

설치 단계를 피하기 위해 특정 패키지의 설치 디렉터리를 다른 컴퓨터로 전송할 수 있습니까?

내 Linux 시스템에 하나의 패키지를 설치했는데 동일한 패키지를 다른 Linux 시스템에 설치하고 싶습니다. 설치된 디렉터리를 한 컴퓨터에서 다른 컴퓨터로 직접 복사할 수 있나요? 설치 디렉토리를 복제한다는 의미입니다.

답변1

APT/DPKG와 함께 설치된 소프트웨어 고려

Ubuntu를 포함한 대부분의 Linux 시스템에는 패키지에 대한 단일 설치 디렉터리가 없습니다. 하지만 때때로 타사 소프트웨어의 모든 파일이 단일 디렉터리에 있을 수 있습니다.

대신 패키지에는 여러 파일 시스템 위치에 배치되는 파일 세트가 포함되어 있습니다. whereis패키지에서 실행하면 주요 부분이 포함된 디렉터리가 표시됩니다.

$ whereis gimp
gimp: /usr/bin/gimp /usr/lib/gimp /etc/gimp /usr/share/gimp /usr/share/man/man1/gimp.1.gz

우리는 gimp가 최소한 /usr/bin, /usr/lib및 에 파일을 가지고 있음 /etc을 볼 수 있으며 /usr/share, 이들 모두는 다른 패키지에 속하는 많은 파일을 포함하고 있습니다.

dpkg-query -L또는 옵션을 사용하여 --listfilesdpkg에 알려진 패키지의 파일 목록을 읽을 수 있습니다.

$ dpkg --listfiles g++
/.
/usr
/usr/bin
/usr/share
/usr/share/doc
/usr/share/man
/usr/share/man/man1
/usr/bin/g++
/usr/bin/x86_64-linux-gnu-g++
/usr/share/doc/g++
/usr/share/man/man1/g++.1.gz
/usr/share/man/man1/x86_64-linux-gnu-g++.1.gz

목록에는 g++ 패키지가 분명히 상위 디렉터리를 제공하지 않았음에도 불구하고 모든 상위 디렉터리가 포함되어 있습니다(파일만 얻으려면 다음과 같은 작업을 수행할 수 있지만 for i in $(dpkg --listfiles g++); do [[ -f "$i" ]] && echo "$i"; done일부 패키지 설치에서는 디렉터리를 생성함).

하나는 g++매우 작은 파일 목록입니다 ...

$ dpkg --listfiles gimp | wc -l
254
$ dpkg --listfiles xkb-data | wc -l
331
$ dpkg --listfiles linux-image-4.10.0-24-generic | wc -l
1312

또한 모든 관련 파일을 다른 시스템의 모든 관련 위치에 복사했다면 패키지 관리자는 이에 대해 아무것도 알지 못하므로 패키지가 업데이트되지 않고 해당 종속성이 설치되지 않으므로 아마도 작동하지 않을 것입니다. 디버깅하기 어려운 이유로 전혀.

결론적으로 APT로 설치할 수 있는 소프트웨어의 경우 가장 쉬운 설치 방법은 APT를 사용하는 것입니다. 각 시스템에서 다운로드 비용을 절약하려면 다음을 참조하세요.인터넷 없이(오프라인) 소프트웨어나 패키지를 어떻게 설치할 수 있나요?.

어떤 사람들은 이러한 분산 설치 스타일을... 버그라고 생각합니다. 예를 들어 패키지를 개별적으로 설치하는 배포판을 만들거나 모든 종속성을 포함하여 개별 설치를 허용하는 스냅과 같은 크로스 플랫폼 패키징 솔루션을 개발하는 등 많은 사람들이 이에 대해 조치를 취하고 있습니다.

관련 정보