Cài đặt apt-get làm gì dưới mui xe?


60

Không những gì apt-get install ...lệnh làm gì?

Khi tôi nhập apt-get install ...lệnh, có một số văn bản xuất hiện trên màn hình, nhưng điều đó không có đủ thông tin cho tôi. Tôi muốn biết nếu có bất kỳ tập tin nào được tạo / chỉnh sửa, bất kỳ dịch vụ nào được bắt đầu và các hoạt động khác ...

.shtập tin nào được thực thi khi apt-get install ...chạy không? Nếu vậy, làm thế nào tôi có thể xem nội dung của shtập tin đó ?

Lý do cho câu hỏi này là gần đây tôi đã cố gắng cài đặt tomcat7 với apt-get install tomcat7. Mọi thứ hoạt động tốt cho đến khi tôi cài đặt tomcat7-admin(ứng dụng quản lý web), máy chủ trở nên không phản hồi với bất kỳ yêu cầu nào. Tôi đã thử điều này nhiều lần, và điều này luôn xảy ra.



Đồng thời truy cập Askubfox.com/questions/481241/ khăn
Pandya

truy cập wiki.debian.org/Apt để biết thêm chi tiết
Pandya

2
Từ 14.04, apt-getđang được thay thế bởi apt. Sự thay thế chưa hoàn thành, nhưng nó hoạt động cho install, upgradedist-upgradetrong số những người khác.
Paddy Landau

@PaddyLandau Đây có phải là tiện ích thay thế phù hợp hay tiện ích bổ sung / bao bọc không?
muru

Câu trả lời:


49

Hầu hết, apt-getthực hiện những điều sau đây:

  • kiểm tra các phụ thuộc (và yêu cầu cài đặt chúng),
  • tải gói, xác minh nó và sau đó bảo dpkgcài đặt nó.

dpkg sẽ:

  • trích xuất gói và sao chép nội dung vào đúng vị trí và kiểm tra các tệp có sẵn và sửa đổi trên chúng,
  • chạy tập lệnh bảo trì gói : preinst,, postinst(và prerm, postrmtrước các tập lệnh này, nếu gói đang được nâng cấp)
  • thực hiện một số hành động dựa trên các kích hoạt

Bạn có thể quan tâm đến các tập lệnh bảo trì, thường được đặt tại /var/lib/dpkg/info/<package-name>.{pre,post}{rm,inst}. Đây thường là các kịch bản shell, nhưng không có quy tắc cứng. Ví dụ:

$ ls /var/lib/dpkg/info/xml-core.{pre,post}{rm,inst}
/var/lib/dpkg/info/xml-core.postinst
/var/lib/dpkg/info/xml-core.postrm
/var/lib/dpkg/info/xml-core.preinst
/var/lib/dpkg/info/xml-core.prerm

30

Nói tóm lại : apt-get installmọi thứ cần thiết mà hệ thống của bạn có thể thực hiện thành công ứng dụng phần mềm đã cài đặt mới.

Lâu hơn:

Sơ bộ:

Từ trang hướng dẫn :

Tất cả các gói được yêu cầu bởi (các) gói được chỉ định để cài đặt cũng sẽ được truy xuất và cài đặt.

Những gói được lưu trữ trên một kho lưu trữ trong mạng. Vì vậy, apt-gettải tất cả những thứ cần thiết vào một thư mục tạm thời ( /var/cache/apt/archives/). Chúng sẽ được tải xuống từ một máy chủ web hoặc ftp. Chúng được chỉ định trong cái gọi là sources.list; một danh sách các kho lưu trữ. Từ đó trở đi, họ được cài đặt từng cái một.

Những cái đầu tiên là những cái, không có sự phụ thuộc nữa; vì vậy không có gói nào khác phải được cài đặt cho chúng. Thông qua đó, các gói khác (đã có phụ thuộc trước đây) giờ không còn phụ thuộc nữa. Hệ thống tiếp tục thực hiện quá trình đó nhiều lần cho đến khi các gói được chỉ định được cài đặt.

Mỗi gói trải qua một quy trình cài đặt.

Cài đặt gói:

Trong các bản phân phối Linux dựa trên Debian, như Ubuntu, các gói đó có định dạng chuẩn được chỉ định gọi là: deb - Định dạng gói nhị phân Debian .

Gói như vậy chứa các tệp sẽ được cài đặt trên hệ thống. Ngoài ra, chúng có chứa một tập tin kiểm soát . Tập tin đó chứa các tập lệnh mà hệ thống đóng gói sẽ thực thi trong một tình huống cụ thể; cái gọi là kịch bản duy trì . Các tập lệnh này được chia thành:

  • preinst: trước khi cài đặt các tệp vào hệ thống filehierarchy
  • postinst: sau khi cài đặt
  • prerm: trước khi gỡ cài đặt
  • postrm: sau khi gỡ cài đặt

Có một hình ảnh thú vị, cho thấy quy trình cài đặt gói mới:

cài đặt

Ngoài ra còn có nhiều tệp điều khiển hơn, quan trọng nhất là như sau:

  • control: Danh sách các phụ thuộc và thông tin hữu ích khác để xác định gói
  • conffiles: Danh sách các tệp cấu hình (thường là các tệp trong /etc)
  • debian-binary: chứa phiên bản gói gỡ lỗi, hiện là 2.0
  • md5sums: Danh sách md5sums của mỗi tệp trong gói để xác minh
  • templates: Một tệp có mô tả lỗi và hộp thoại trong khi cài đặt

11

Đối với thực tế dưới-the-hood thứ, bạn sẽ cần phải lấy các nguồn Apt. Khá đơn giản nếu bạn có kho lưu trữ nguồn được kích hoạt:

apt-get source apt

Các apt-getlệnh riêng của mình sống ở cmdline/apt-get.cc. Thật khó để đọc qua nhưng hầu hết các apt-gethành động được phát âm khá rộng rãi trong đó. Tuy nhiên, cài đặt được ánh xạ thông qua một DoInstallchức năng sống apt-private/private-install.{cc,h}.

Bạn phải nhớ rằng apt-get chỉ là một mặt của đồng tiền.
dpkgđang xử lý cài đặt thực tế nhưng DoInstallkhông biết về dpkgtrực tiếp. apt-getthực sự đáng ngạc nhiên là nhà quản lý gói bất khả tri. Tất cả các chức năng được trừu tượng hóa thông quaapt-pkg/package-manager.cc

Tôi chỉ tìm kiếm một cách ngắn gọn nhưng ngay cả ở đó tôi cũng không thể thấy nơi này thực sự gắn vào các dpkghệ thống. Một số trong số này dường như được cấu hình tự động thông qua apt-pkg/aptconfiguration.ccnhưng đây là một giếng sâu. Bạn có thể dành nhiều ngày để làm sáng tỏ điều này.

Các tài liệu nguồn là tốt mặc dù. Bạn có thể làm những điều tồi tệ hơn là đi qua từng tệp và đọc tiêu đề để tìm hiểu điều gì đang thực sự xảy ra.


6

Có một số câu trả lời tuyệt vời ở đây tốt hơn câu trả lời ngắn này, nhưng một số điều bạn có thể cân nhắc để giúp bạn hiểu rõ hơn về những thay đổi được thực hiện bởi người quản lý gói là Docker . Bạn có thể tìm các thay đổi được thực hiện trong một thùng chứa bằng cách sử dụng docker diff <container>và nó sẽ hiển thị cho bạn tất cả các thay đổi. Điều này đặc biệt hữu ích cho việc xem dưới mui xe để xem những gì apt-get installlàm cho một hệ thống. Một tìm kiếm nhanh sẽ giúp bạn có một số tài nguyên để giúp thực hiện điều này.


1
Cảm ơn bạn đã đưa ra quan điểm của bạn. Trong Docker container, tôi đã cài đặt firefox và trong một tab thiết bị đầu cuối khác, tôi đã theo dõi chặt chẽ sự khác biệt của container và tìm hiểu tất cả các tệp đang thay đổi trong container. Nó giúp tôi hiểu rõ hơn.
abhy
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.