Thư mục không xác định trên hệ thống gốc /.rpmdb


16

Ai đó có thể giải thích thư mục /.rpmdb trong thư mục gốc là gì không? Ứng dụng nào tạo ra nó và đang sử dụng nó?

Câu trả lời:


11

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.

.Rpmdb là gì?

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 rpmlệ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 rpmchạ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ọ.

Tại sao vòng / phút sẽ được chạy ở tất cả trên Ubuntu?

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 rpmlệ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 .rpmdbthư 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/.rpmdbthư 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 rpmcá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.shtậ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/.rpmdbvà các /root/.rpmdbthư 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?

Tại sao .rpmdb được tạo trong thư mục gốc?

Giải thích đơn giản nhất cho điều này là $HOMEbiế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 rpmcá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ó $HOMEbiế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ó $HOMEbiế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 /.rpmdbthay vì /root/.rpmdb. Điều này đã được sửa trong rpmgói cho Ubuntu trong phiên bản phát triển 14.10, do đó, giờ đây nó sẽ tạo /root/.rpmdbngay cả khi $HOMEkhông được xác định.

Tôi hy vọng điều này giải thích tại sao có .rpmdbtấ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.


-1

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 đó.


Tham khảo: http://en.wikipedia.org/wiki/RPM_Package_Manager


4
Làm thế nào điều này có liên quan để giải thích tại sao /.rpmdbsẽ xuất hiện trên một hệ thống Ubuntu (không sử dụng vòng / phút)?
Gilles 'SO- ngừng trở nên xấu xa'

1
có thể được sử dụngalien
máy bay phản lực
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.