Làm thế nào để nói với apt rằng các phụ thuộc được giải quyết bằng tay?


14

Giả sử có một phần mềm tôi không muốn cài đặt apt, nhưng bằng tay. (TeXLive, vì tôi muốn sử dụng phiên bản 2011 và aptchỉ có phiên bản 2009.)

Giả sử có một phần mềm khác tôi muốn cài đặt apt, tuy nhiên phụ thuộc vào phần mềm đầu tiên. (Vim LaTeXSuite, vì thật khó để cài đặt thủ công để sử dụng trên toàn hệ thống.)

Theo mặc định, aptkhông "thấy" phần mềm đầu tiên và tiến hành cài đặt nhiều phần mềm không cần thiết và không mong muốn (ví dụ TeXLive 2009) chỉ để đáp ứng siêu dữ liệu phụ thuộc.

Làm thế nào tôi có thể:

  • Hãy nói aptrằng một gói nhất định (ví dụ texlive) được cài đặt cho tất cả các mục đích thực tế và rằng nó không nên được cài đặt như là sự phụ thuộc của một số gói khác?

  • Nói aptđể cài đặt một gói nhất định (ví dụ vim-latexsuite) mà không bận tâm về các phụ thuộc của nó?

Tôi đã rây qua nhiều apttrang man -related và đã đưa ra sản phẩm nào, và cũng có thể tìm thấy câu hỏi này trên trang web này nhưng cảm thấy rằng có phải là một cách ít hackish để làm điều này, không có?

(Từ thời Gentoo của tôi, tôi nhớ emerge --inject/etc/portage/package.provides, về cơ bản là đang tìm kiếm những thứ apttương đương.)


TeX Live 2011 đã được thêm vào Debian Sid gần đây, do đó, nó cũng sẽ sớm được tuyên truyền cho Mint (nhưng Ubuntu 12.04 đã "bỏ lỡ" nó, vì vậy không sớm hơn cuối tháng 10 với Ubuntu 12.10). Nếu bạn thực sự thích phiêu lưu, có lẽ bạn có thể lấy các gói từ Debian Sid, nhưng vì trong trường hợp này, nó liên quan đến rất nhiều gói, có lẽ đó không phải là một giải pháp tốt. Có một PPA tại launchpad.net/~texlive-backports/+archive/ppa được thiết lập (xem báo cáo lỗi này trong Ubuntu ) mà có lẽ bạn cũng có thể sử dụng trong Mint.
Daniel Andersson


Không bình luận downvote ba năm sau ... quan tâm để giải thích?
DevSolar

@DevSolar: Có vẻ như ai đó đã hạ cấp câu hỏi và cả hai câu trả lời ba năm sau thực tế, mà không làm rõ lý do tại sao. Tốt nhất chỉ nên nhún vai và đi tiếp, tôi đoán :-).
Daniel Andersson

Câu trả lời:


13

Bạn nên sử dụng equivsgói để tạo các gói meta cung cấp các phụ thuộc này và sau đó sử dụng dpkgđể cài đặt các gói này.

Cài đặt equivsvà đọc tài liệu của nó là đủ, nhưng hướng dẫn này cho Ubuntu khá rộng rãi và cũng nên áp dụng cho các hệ thống APT khác.


Ngoài ra, nếu bạn cảm thấy rằng một gói sẽ có thể được cài đặt mà không có sự phụ thuộc được chỉ định, bạn nên gửi một lỗi đối với gói đó, giải thích trường hợp không cần phụ thuộc.

Trong trường hợp này , texlive-base-bindường như chỉ là "Được đề xuất" và không phải là "Phụ thuộc" trong bản phân phối Debian cơ bản (có lẽ một phần texlivelà do một gói rất lớn), nhưng vì thường cài đặt TeX Live trên Debian kể từ khi phiên bản phân phối thường bị tụt lại phía sau rất nhiều (vì lý do gói đó là một con quái vật mà nó thường không thể được đóng gói mà không có công việc đáng kể, chủ yếu được thực hiện bởi một hoặc một số người, những người tuyên bố họ có cuộc sống bên cạnh Debian), equivsThủ thuật thường được sử dụng với TeX Live (wow, câu đó đã vượt quá tầm tay :-)).


Bổ sung : Để có hướng dẫn chi tiết hơn cho những người muốn cài đặt TeXLive bên ngoài hệ thống gói, các hướng dẫn này trên TeX.SXphạm vi rộng hơn và nhiều khả năng sẽ tiếp tục được cập nhật. Chúng cũng bao gồm các hướng dẫn rõ ràng hơn về equivsbước này.


Tôi không biết làm thế nào điều này xảy ra, nhưng Linux Mint làm cho texlive trở thành một phụ thuộc "cứng" ... sẽ thử equivsgói.
DevSolar

equivslàm việc tuyệt vời Tôi đã tạo phiên bản 9999 texlive-base-bin, ghi đè gói "giả" ban đầu cùng tên (được cung cấp bởi texlive-binaries) và cài đặt vim-latexsuitemà không gặp bất kỳ rắc rối nào.
DevSolar

1

Bạn có thể sử dụng --nodepscờ trên dpkg, nên cài đặt gói không có phụ thuộc nào cả.

   --ignore-depends=package,...
          Ignore  dependency-checking for specified packages (actu-
          ally, checking is performed, but only warnings about con-
          flicts are given, nothing else)

Có một câu hỏi rất giống nhau trên Serverfault cũng đáng để xem xét


Uh ... không có điều đó sao? (Ít nhất là không có trong hộp Linux Mint 12 tôi có ở đây.)
DevSolar

1
hm, tôi dường như đã phạm sai lầm - đó là vì dpkg, không phải apt-get - đã chỉnh sửa câu trả lời của tôi để phản ánh điều này
Journeyman Geek

Đó là điều khiến tôi bối rối không có hồi kết với Debian bắt nguồn: Vô số giao diện quản lý gói. Tôi cho rằng không có những chuyến đi liên quan khi trộn chúng? Hay tôi sẽ phải bám lấy một trong số họ?
DevSolar

tất cả mọi thứ đều dựa trên dpkg, về cơ bản, apt và apt apt là mặt trước cho điều đó, và có kết thúc trước cho apt và apt. dpkg thường được sử dụng khi bạn muốn cài đặt các gói ra khỏi tệp .deb. Tôi có xu hướng gắn bó với apt-get và dpkg cho phần lớn bản thân mình. Việc trộn các trình quản lý gói có hương vị debian 'mặc định' thường sẽ an toàn một cách hợp lý
Journeyman Geek

Điều đó làm cho câu trả lời của bạn là giải pháp ưa thích cho vấn đề thực tế của tôi , vì không có gì phụ thuộc vào vim-latexsuite. Tuy nhiên, giải pháp này không đánh dấu "texlive" là hiện tại , nó chỉ khiến vim-latexsuite không yêu cầu nó. Như vậy, câu trả lời của Daniel phù hợp hơn với tiêu đề của câu hỏi. Dấu kiểm đi đến anh ta, kudos đi đến bạn. ;-)
DevSolar

1

Sau đây sẽ loại bỏ phần phụ thuộc khỏi tệp .deb, trong trường hợp này loại bỏ phần phụ thuộc libperl5.20 khỏi freeradius:

dpkg-deb -x freeradius_2.2.5+dfsg-0.2+deb8u1_amd64.deb freeradius
dpkg-deb -e freeradius_2.2.5+dfsg-0.2+deb8u1_amd64.deb freeradius/DEBIAN
sed -i  -e 's/, libperl5.20 (>= 5.20.2)//g' freeradius/DEBIAN/control
dpkg-deb -b freeradius freeradius_2.2.5+dfsg-0.2+deb8u1_amd64.deb

Điều này cho phép bạn cài đặt gói mà không cần apt biết sự phụ thuộc tồn tại.

Nếu bạn đang cài đặt thủ công các phiên bản cụ thể của gói thì bạn cũng có thể muốn dừng apt-get upgradenâng cấp gói trong tương lai:

apt-mark hold freeradius
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.