답변:
이 디렉토리를 만드는 것은 확실하게 말할 수는 없지만 DKMS를 사용하여 NVIDIA 또는 VirtualBox와 같은 타사 Linux 커널 드라이버를 설치하거나 부작용으로 지원되지 않는 다른 설치 관리자 스크립트에 의해 생성 된 부작용 일 수 있습니다. 우분투. 이 디렉토리는 rpm 기반 배포와 deb 기반 배포를 모두 지원하는 설치 프로세스의 부작용으로 생성되었을 것입니다. DKMS는 이러한 설치 스크립트이므로 적절한 조건에서이 디렉토리를 만들 수 있습니다. 시스템을 손상시키지 않고 디렉터리를 안전하게 삭제할 수 있지만 나중에 업데이트를 설치할 때 다시 만들 수 있습니다. 이 문제를 추적하는 공개 버그 보고서는 버그 # 1069350 을 참조하십시오 .
그것은 짧은 대답입니다. 이제 좀 더 자세히 설명하겠습니다.
아시다시피 rpm은 소프트웨어 패키지 형식이며 패키지를 설치하고 설치된 패키지 및 해당 상호 종속성의 데이터베이스를 유지 관리하기위한 도구 세트입니다. 많은 배포본에서 사용되지만 우분투 및 기타 deb 기반 배포에서는 사용되지 않습니다. 불행히도 Ubuntu의 경우 rpm
명령을 사용하려면 유효한 "rpmdb"데이터베이스가 존재하거나 생성되어야합니다.
rpm 기반 배포판에서는 정의에 따라 시스템 전체 rpmdb가 있기 때문에 문제가되지 않습니다. Ubuntu 시스템에서는 시스템 전체 rpm 데이터베이스가 필요하지 않기 때문에 rpm
각 사용자의 홈 디렉토리 아래에 데이터베이스를 사용하도록 구성됩니다 $HOME/.rpmdb
. 이 데이터베이스는 rpm
실행될 때마다 필요에 따라 자동으로 작성 됩니다. 각 사용자의 홈 디렉토리에 있기 때문에 공유 권한에 문제가 있거나 관리자가 데이터베이스를 작성해야합니다. 모든 사용자는 자신의 개인 빈 rpm 데이터베이스를 얻습니다.
일부 프로젝트는 배포가 rpm 기반이든 deb 기반이든 아니든 모든 배포에서 작동하는 설치 스크립트를 만드는 것을 좋아합니다. DKMS는 그러한 프로젝트 중 하나이며, 시스템이 실행중인 Linux 커널에 상관없이 써드 파티 드라이버를 빌드 할 수 있으며 배포판 전체에서 작동하도록 작성되었습니다. 실행중인 배포와 존재하는 커널 버전을 확인하는 논리의 일부로 rpm
데이터베이스를 쿼리 하는 명령을 실행 합니다. 앞에서 설명한 것처럼 .rpmdb
현재 사용자의 홈 디렉토리에 디렉토리가 없으면 자동으로 디렉토리가 작성됩니다 . Ubuntu는 rpm 기반 배포가 아니므로 DKMS가 계속 진행되므로 데이터베이스 쿼리가 실패해야합니다.
VirtualBox, NVIDIA, ndiswrapper 또는 openswan과 같은 Ubuntu에서 추가 Linux 커널 드라이버 패키지를 설치하는 경우 DKMS를 사용하여 해당 드라이버를 커널에 설치할 수 있습니다. 이것은 일반적으로 드라이버가 Ubuntu 리포지토리에서 설치 될 때 자동으로 수행됩니다. 따라서 커널 또는 드라이버 업데이트가 설치 될 때마다 DKMS가 다시 실행되어 사용 가능한 모든 커널 버전의 드라이버를 다시 빌드합니다. 이러한 패키지가 업데이트 될 때 /root/.rpmdb
루트가 업데이트를 설치해야하므로 루트의 홈 디렉토리에 있는 디렉토리가 실제로 표시되는 것으로 나타났습니다.
rpm
배포 유형을 감지하는 방법으로 명령을 실행할 수있는 다른 특정 타사 설치 스크립트는 알지 못하지만 확실히 가능합니다. 예를 들어, Initech에서 LargeProprietaryProgram을 설치하고이를 위해 install.sh
루트 로 스크립트 를 실행할 수 있습니다 . 이 스크립트는 rpm 데이터베이스를 쿼리하여 rpm 기반 배포를 실행하고 있는지 다시 확인하려고 할 수 있습니다 /root/.rpmdb
.
그 설명 그래서 당신은 왜 볼 수 있습니다 /home/user/.rpmdb
및 /root/.rpmdb
디렉토리 시스템에 표시됩니다. 그러나 왜 시스템 루트 디렉토리에 있습니까?
이것에 대한 가장 쉬운 설명은 $HOME
환경 변수가 실행되는 일부 프로세스 컨텍스트에서 설정되지 않았다는 것 rpm
입니다. rpm
명령 을 실행할 수 있다는 것을 확실히 알고 있기 때문에 논쟁을 위해 DKMS를 사용합시다 . 일반적으로 패키지가 설치되거나 업데이트 될 때 실행되므로 사용중인 패키지 관리자의 환경에서 실행됩니다. sudo apt-get
패키지를 설치 하는 데 사용 하면 올바른 패키지를 상속합니다 $HOME
. PackageKit을 사용하면 $HOME
변수 가 전혀 없을 수 있습니다 . Synaptic 또는 Ubuntu Software Center가 어떤 환경을 제공하는지 잘 모르겠습니다.
따라서 DKMS가 $HOME
변수 가없는 환경에서 실행되고 rpm 데이터베이스가 정의 된 방식으로 인해 빈 rpm 데이터베이스가 /.rpmdb
대신 생성됩니다 /root/.rpmdb
. 이것은 rpm
14.10 개발 버전의 Ubuntu 패키지 에서 수정 되었으므로 정의되지 않은 /root/.rpmdb
경우에도 작성해야합니다 $HOME
.
.rpmdb
우분투 시스템에 디렉토리가 왜 있는지 , 왜 자동으로 보이는지, 왜 루트 디렉토리에서 올바른 조건 세트 아래에 디렉토리를 만들 수 있는지 설명하기를 바랍니다. 걱정할 필요가 없으며,이 디렉토리의 존재에 악의적 인 것이 없으며, 미학이나 보안 스캐너에 불쾌감을주는 경우 삭제 될 수 있습니다.
RPM (Red Hat Package Manager)은 패키지 관리 시스템입니다. RPM은 원래 1997 년 Erik Troan과 Marc Ewing이 Red Hat Linux 에서 사용하기 위해 작성 했지만 현재는 많은 GNU / Linux 배포판에서 사용됩니다.
패키지 관리자의 배후에는 RPM 데이터베이스 ( RPMDB )가 저장되어 /var/lib/rpm
있습니다. 설치된 rpm 의 모든 메타 정보를 포함하는 단일 데이터베이스 (패키지)로 구성됩니다 . 데이터베이스는 사용자 (RPM 사용) 가 패키지를 설치할 때 변경되고 생성 된 모든 파일을 추적하는 데 사용 되므로 RPM을 통해 사용자가 변경 사항을 취소하고 나중에 패키지를 제거 할 수 있습니다.
alien
/.rpmdb
우분투 시스템 (rpm을 사용하지 않는)에 나타나는 이유를 설명하는 것과 어떻게 관련이 있습니까?