Điểm:0

Debian: cách cài đặt gói mà không có phần phụ thuộc cụ thể (git không có Perl)

lá cờ cn

Tôi đang cố gắng cài đặt gói apt mà không có một trong các phần phụ thuộc của nó (cụ thể là git không có Perl để giảm kích thước hình ảnh Docker xuống> 50 MB).

Tôi có thể nghĩ đến hai lựa chọn:

  1. cài đặt gói mà không có sự phụ thuộc cụ thể này
  2. cài đặt gói với tất cả các phụ thuộc và loại bỏ phụ thuộc sau đó

và tôi đã điều tra cả hai, và không cái nào hiệu quả. Vì vậy, câu hỏi của tôi là: có cách nào sạch sẽ để làm điều đó không?

Dưới đây là những gì tôi đã cố gắng cho đến nay.

1. Cài đặt gói không có phụ thuộc cụ thể này

Phần lớn gợi ý giới thiệu

apt tải xuống git
dpkg --ignore-depends=perl -i git*.deb

Thật không may, điều này không cài đặt các phụ thuộc khác, vì vậy bản sao git thất bại vì thiếu thư viện.

Vì vậy, để khắc phục điều đó, một số đề xuất khác khuyên bạn nên sử dụng

cài đặt apt-get -f

sau đó, nhưng lệnh này sẽ cố cài đặt Perl, đây là điều tôi đang cố gắng tránh.

Ok, vì vậy tôi khuyên bạn không nên chạm vào Perl với:

apt-mark giữ perl

nhưng sau đó cài đặt apt-get -f cố gắng loại bỏ git.

Ok, vì vậy tôi đang bảo hãy để git một mình:

apt-mark giữ git

nhưng sau đó cài đặt apt-get -f bỏ cuộc, vì nó không thể cài đặt Perl và không thể gỡ cài đặt git. Sự kết thúc của câu chuyện.

2. cài đặt gói với tất cả các phụ thuộc và loại bỏ phụ thuộc sau đó

Tôi đã cài đặt git với Perl:

cài đặt apt -y git

sau đó loại bỏ Perl với

dpkg -P --force-phụ thuộc perl

nhưng điều này không loại bỏ các phụ thuộc khác do Perl mang lại, vd. perl-mô-đun. Vì vậy, nỗ lực không thành công.

Nikita Kipriyanov avatar
lá cờ za
Đây là con đường sai lầm, hay đúng hơn tôi nên nói là con đường chắc chắn sẽ tự bắn vào chân mình. Nếu bạn muốn bỏ qua một số phụ thuộc, bạn phải xây dựng lại các gói phụ thuộc đúng cách mà không có phụ thuộc đó. Điều đó không khó đến vậy đâu.
Lukasz Guminski avatar
lá cờ cn
Vấn đề là tôi hoàn toàn kiểm soát hệ thống (hình ảnh Docker) và tôi biết chắc chắn rằng perl sẽ không cần thiết, vì git chỉ được sử dụng cho các kho lưu trữ nhân bản. Mặt khác, việc xây dựng lại git sẽ làm tăng đáng kể thời gian xây dựng hình ảnh Docker của tôi.
lá cờ in
Nếu kích thước là một vấn đề, bạn có thể muốn thử một hình ảnh khác, chẳng hạn như Alpine. Nó nhỏ hơn đáng kể và git không phụ thuộc vào perl ở đó.
Lukasz Guminski avatar
lá cờ cn
Vấn đề là Alpine sử dụng [musl](https://musl.libc.org/) thay vì glibc và tôi không muốn mạo hiểm [các vấn đề về tính không ổn định](https://pythonspeed.com/articles/alpine- docker-python/). Tuy nhiên, thật tốt khi biết rằng không có sự phụ thuộc vào perl ở đó.
Nikita Kipriyanov avatar
lá cờ za
Hãy thử đóng gói lại tệp git deb mà không có sự phụ thuộc đó. Điều đó cũng không khó. Hiểu rằng, bạn đang cố gắng sử dụng trình quản lý gói cho các tính năng của nó như phân giải phụ thuộc (bằng cách cài đặt git và các phụ thuộc bạn cần), đồng thời bạn muốn cố tình lạm dụng khả năng phân giải phụ thuộc của nó bằng cách nào đó (để bỏ qua một số phụ thuộc). Điều đó sẽ không làm việc. Trình quản lý gói Debian không được xây dựng với ý tưởng này. (Portage, trình quản lý gói của Gentoo đã làm, và nó sử dụng một thứ gọi là "USE-flags" cho việc đó. Nhưng đó lại là một câu chuyện hoàn toàn khác.)
Lukasz Guminski avatar
lá cờ cn
Nó là thú vị. Về cơ bản, bạn đang nói rằng nguyên nhân gốc rễ là do chính cách đóng gói của git, cho thấy rằng cần phải có thứ gì đó như `git-minimal`.Tôi sẽ điều tra việc đóng gói lại để xem liệu tùy chọn này có khả thi hay không.
djdomi avatar
lá cờ za
hoặc bạn tự xây dựng nó mà không cần hỗ trợ Perl nếu có thể, cách thực hiện điều đó thực sự không khó và được ghi chép đầy đủ theo [cách debian](https://wiki.debian.org/HowToPackageForDebian)

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.