Câu trả lời:
Tôi không thể nói chính xác những gì tạo ra thư mục này, nhưng có khả năng nó được tạo ra như là một tác dụng phụ của việc cài đặt trình điều khiển hạt nhân Linux của bên thứ ba như NVIDIA hoặc VirtualBox bằng DKMS hoặc bởi một số tập lệnh cài đặt không được hỗ trợ khác không được cung cấp bởi Ubuntu. Thư mục này có lẽ được tạo ra như là một tác dụng phụ của quá trình cài đặt xảy ra để hỗ trợ cả phân phối dựa trên vòng / phút và dựa trên deb. DKMS tình cờ là một tập lệnh cài đặt như vậy và chắc chắn có thể tạo thư mục này trong các điều kiện phù hợp. Thư mục có thể bị xóa một cách an toàn mà không làm hại hệ thống của bạn, nhưng nó có thể được tạo lại khi các bản cập nhật được cài đặt sau đó. Xem lỗi # 1069350 để biết báo cáo lỗi mở theo dõi vấn đề này.
Đó là câu trả lời ngắn, bây giờ một số chi tiết.
Như bạn có thể biết, vòng / phút là một định dạng đóng gói phần mềm và bộ công cụ để cài đặt các gói và duy trì cơ sở dữ liệu của các gói đã cài đặt và sự phụ thuộc lẫn nhau của chúng. Nó được sử dụng bởi nhiều bản phân phối nhưng không phải bởi Ubuntu và các bản phân phối dựa trên tranh luận khác. Thật không may cho Ubuntu, tuy nhiên, bất kỳ việc sử dụng rpm
lệnh nào cũng cần có cơ sở dữ liệu "rpmdb" hợp lệ để tồn tại hoặc được tạo.
Trên các bản phân phối dựa trên vòng / phút, đây không phải là vấn đề bởi vì chúng có định dạng rpmdb trên toàn hệ thống. Trên các hệ thống Ubuntu, do không cần cơ sở dữ liệu vòng / phút toàn hệ thống, rpm
được cấu hình để sử dụng cơ sở dữ liệu trong mỗi thư mục nhà của người dùng, cụ thể $HOME/.rpmdb
. Cơ sở dữ liệu này được âm thầm tạo ra khi cần thiết bất cứ khi nào rpm
chạy. Vì nó nằm trong thư mục nhà của mỗi người dùng, không có vấn đề gì với các quyền được chia sẻ hoặc yêu cầu cơ sở dữ liệu được tạo bởi quản trị viên. Mỗi người dùng chỉ có cơ sở dữ liệu vòng quay trống riêng của họ.
Nó chỉ ra rằng một số dự án muốn tạo các tập lệnh cài đặt sẽ hoạt động trên bất kỳ phân phối nào, cho dù phân phối đó dựa trên vòng / phút, dựa trên tranh luận hay không. DKMS là một trong những dự án như vậy, nó cho phép các trình điều khiển của bên thứ ba được xây dựng cho bất kỳ nhân Linux nào mà hệ thống đang chạy và nó được viết để hoạt động trên các bản phân phối. Trong một phần logic của nó để xác định phân phối nào nó đang chạy và phiên bản kernel nào có mặt, nó thực thi một rpm
lệnh để truy vấn cơ sở dữ liệu. Như tôi đã giải thích trước đó, điều này sẽ âm thầm tạo một .rpmdb
thư mục nếu nó chưa tồn tại trong thư mục chính của người dùng hiện tại. Truy vấn cơ sở dữ liệu sẽ thất bại, vì Ubuntu không phải là phân phối dựa trên vòng / phút và DKMS tiếp tục.
Nếu bạn cài đặt bất kỳ gói trình điều khiển nhân Linux bổ sung nào từ Ubuntu như VirtualBox, NVIDIA, ndiswrapper hoặc openswan, có lẽ bạn đang sử dụng DKMS để cài đặt các trình điều khiển đó cho kernel của mình. Điều này thường được thực hiện tự động khi trình điều khiển được cài đặt từ kho Ubuntu. Vì vậy, bất cứ khi nào cài đặt bản cập nhật kernel hoặc trình điều khiển, DKMS sẽ chạy lại để xây dựng lại trình điều khiển cho tất cả các phiên bản kernel có sẵn. Nó đã được chỉ ra rằng khi các gói đó được cập nhật, /root/.rpmdb
thư mục thực tế sẽ xuất hiện, đó là trong thư mục chính của root vì root được yêu cầu để cài đặt các bản cập nhật.
Tôi không biết bất kỳ tập lệnh cài đặt bên thứ ba cụ thể nào khác cũng có thể thực thi rpm
các lệnh như một cách phát hiện loại phân phối, nhưng chắc chắn là có thể. Ví dụ: bạn có thể muốn cài đặt Chương trình LargePropri tiền từ initech và để làm như vậy, bạn chạy một install.sh
tập lệnh với quyền root. Tập lệnh này có thể thử truy vấn cơ sở dữ liệu vòng / phút để xem bạn có đang chạy phân phối dựa trên vòng / phút không và /root/.rpmdb
được tạo lại.
Vì vậy, điều đó giải thích tại sao bạn có thể thấy /home/user/.rpmdb
và các /root/.rpmdb
thư mục hiển thị trên hệ thống của bạn. Nhưng tại sao trong thư mục gốc hệ thống?
Giải thích đơn giản nhất cho điều này là $HOME
biến môi trường không được đặt bằng cách nào đó trong một số bối cảnh quy trình chạy rpm
. Hãy sử dụng DKMS cho mục đích tranh luận vì chúng tôi chắc chắn biết rằng nó có thể chạy rpm
các lệnh. Bởi vì nó thường chạy khi các gói được cài đặt hoặc cập nhật, nên nó chạy trong môi trường của bất kỳ trình quản lý gói nào bạn sử dụng. Nếu bạn sử dụng sudo apt-get
để cài đặt các gói, nó sẽ kế thừa một chính xác $HOME
. Nếu bạn sử dụng PackageKit, nó có thể không có $HOME
biến nào cả. Tôi không chắc môi trường nào được cung cấp bởi Synaptic hoặc Ubuntu Software Center.
Vì vậy, nếu DKMS đang chạy trong một môi trường không có $HOME
biến và do cách xác định cơ sở dữ liệu vòng / phút, cơ sở dữ liệu vòng / phút trống sẽ được tạo /.rpmdb
thay vì /root/.rpmdb
. Điều này đã được sửa trong rpm
gói cho Ubuntu trong phiên bản phát triển 14.10, do đó, giờ đây nó sẽ tạo /root/.rpmdb
ngay cả khi $HOME
không được xác định.
Tôi hy vọng điều này giải thích tại sao có .rpmdb
tất cả các thư mục được gọi trên hệ thống Ubuntu, tại sao chúng có thể được tạo tự động và tại sao chúng có thể được tạo trong thư mục gốc theo đúng điều kiện. Không có gì phải lo lắng, không có gì độc hại trong sự tồn tại của thư mục này và nó có thể bị xóa đơn giản nếu sự hiện diện của nó gây khó chịu cho thẩm mỹ hoặc máy quét bảo mật.
RPM (Red Hat Gói Manager) là một hệ thống quản lý gói. Nó RPM ban đầu được viết vào năm 1997 bởi Erik Troan và Marc Ewing để sử dụng trong Red Hat Linux, nhưng bây giờ được sử dụng trong nhiều bản phân phối GNU / Linux.
Hoạt động đằng sau hậu trường của trình quản lý gói là cơ sở dữ liệu RPM ( RPMDB ), được lưu trữ trong /var/lib/rpm
. Nó bao gồm một cơ sở dữ liệu (Gói) chứa tất cả thông tin meta của các rpms đã cài đặt . Cơ sở dữ liệu được sử dụng để theo dõi tất cả các tệp được thay đổi và tạo khi người dùng (sử dụng RPM) cài đặt gói , do đó cho phép người dùng (thông qua RPM) đảo ngược các thay đổi và xóa gói sau đó.
alien
/.rpmdb
sẽ xuất hiện trên một hệ thống Ubuntu (không sử dụng vòng / phút)?