Jak powiedzieć aptowi, że zależności są rozwiązywane ręcznie?

14

Powiedzmy, że istnieje oprogramowanie, którego nie chcę instalować apt, ale ręcznie. (TeXLive, ponieważ chcę korzystać z wersji 2011 i aptma tylko wersję 2009).

Powiedzmy, że istnieje inne oprogramowanie, które chciałbym zainstalować apt, które jednak zależy od pierwszego oprogramowania. (Vim LaTeXSuite, ponieważ instalacja ręczna jest trudna do użytku w całym systemie).

Domyślnie aptnie „widzi” pierwszego oprogramowania i instaluje wiele niepotrzebnych i niepożądanych cruft (tj. TeXLive 2009) tylko po to, aby spełnić metadane zależności.

Jak mogę:

  • Powiedz, aptże dany pakiet (np. texlive) Jest zainstalowany we wszystkich praktycznych celach i że nie powinien być instalowany jako zależność od innego pakietu?

  • Powiedz, aptaby zainstalować dany pakiet (np. vim-latexsuite) Bez zawracania sobie głowy jego zależnościami?

Przeszukałem różne aptpowiązane strony i znalazłem puste, a także znalazłem to pytanie na tej stronie, ale czuję, że musi być mniej hackerski sposób, aby to zrobić, prawda?

(Z czasów Gentoo pamiętam emerge --injecti /etc/portage/package.provideszasadniczo szukam aptodpowiedników.)

DevSolar
źródło
TeX Live 2011 został niedawno dodany do Debian Sid, dlatego też powinien prędzej czy później rozprzestrzenić się także na Mint (ale Ubuntu 12.04 go „przegapił”, więc nie wcześniej niż pod koniec października w Ubuntu 12.10). Jeśli jesteś naprawdę żądny przygód, być może mógłbyś pobrać pakiety z Debian Sid, ale ponieważ w tym przypadku dotyczy to wielu pakietów, prawdopodobnie nie jest to dobre rozwiązanie. Istnieje PPA na stronie launchpad.net/~texlive-backports/+archive/ppa (patrz ten raport o błędach w Ubuntu ), którego być może możesz również użyć w Mennicy.
Daniel Andersson,
Brak komentarza trzy lata później ... chcesz wyjaśnić?
DevSolar,
@DevSolar: Wydaje się, że ktoś zrewidował to pytanie i obie odpowiedzi odpowiedziały trzy lata po fakcie, bez wyjaśnienia dlaczego. Chyba najlepiej po prostu wzruszać ramionami i iść dalej :-).
Daniel Andersson

Odpowiedzi:

13

Powinieneś użyć tego equivspakietu do wygenerowania meta-pakietów zapewniających te zależności, a następnie użyć dpkgdo zainstalowania tych pakietów.

Instalowanie equivsi czytanie dokumentacji powinno wystarczyć, ale ten przewodnik dla Ubuntu jest dość obszerny i powinien mieć zastosowanie również do innych systemów APT.


Ponadto, jeśli uważasz, że pakiet powinien być w stanie zostać zainstalowany bez określonej zależności, powinieneś zgłosić błąd w pakiecie, wyjaśniając przypadek, w którym zależność nie jest potrzebna.

W tym przypadkutexlive-base-bin wydaje się , że jest to tylko „zalecane”, a nie „zależność” przynajmniej w podstawowej dystrybucji Debiana (prawdopodobnie częściowo, ponieważ texlivejest to tak ogromny pakiet), ale ponieważ powszechne jest instalowanie wcześniejszego TeX Live na Debianie od czasu wersja dystrybucyjna często pozostaje znacznie w tyle (z powodu tego, że pakiet jest tak bestią, że często nie można go spakować bez znacznej pracy, co w większości wykonuje jedna lub kilka osób, które twierdzą, że żyją obok Debiana), equivstrick jest często używany w TeX Live (wow, to zdanie wymknęło się spod kontroli :-)).


Dodatek : Aby uzyskać bardziej szczegółowe instrukcje dla osób chcących zainstalować TeXLive poza systemem pakietów, instrukcje te w TeX.SX są bardziej rozbudowane i najprawdopodobniej będą nadal aktualizowane. Zawierają również bardziej wyraźne instrukcje dotyczące equivskroku.

Daniel Andersson
źródło
Nie wiem, jak to się stało, ale Linux Mint sprawia, że ​​texlive jest „twardą” zależnością ... wypróbuje equivspakiet.
DevSolar,
equivsdziałało świetnie. Utworzyłem wersję 9999 texlive-base-bin, zastępując oryginalny „atrapę” o tej samej nazwie (dostarczonej przez texlive-binaries), i zainstalowałem vim-latexsuitebez żadnych problemów.
DevSolar,
1

Możesz użyć --nodepsflagi na dpkg, która powinna zainstalować pakiet w ogóle bez zależności.

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

Na Serverfault jest bardzo podobne pytanie, na które również warto się przyjrzeć

Journeyman Geek
źródło
Uh ... nie ma czegoś takiego? (Przynajmniej nie na pudełku Linux Mint 12, które mam tutaj.)
DevSolar,
1
hm, wydaje mi się, że popełnił błąd - jego dpkg, a nie apt-get - edytowane moją odpowiedź na to odzwierciedlać
Journeyman Geek
Jest to coś, co mylę mnie bez końca z pochodnymi Debiana: mnogość interfejsów menedżera pakietów. Zakładam, że podczas ich mieszania nie występują żadne potknięcia? A może musiałbym trzymać się jednego z nich?
DevSolar,
wszystko opiera się na dpkg, w zasadzie apt i aptitude są do tego frontonami, i są frontony do apt i aptitude. dpkg jest zwykle używany, gdy chcesz zainstalować pakiety z pliku .deb. Zazwyczaj sam trzymam się apt-get i dpkg. Mieszanie „domyślnych” menedżerów pakietów o smaku Debiana powinno zazwyczaj być względnie bezpieczne
Journeyman Geek
To sprawia, że ​​twoja odpowiedź jest moim preferowanym rozwiązaniem mojego rzeczywistego problemu, ponieważ nic nie zależy od vim-latexsuite. Jednak to rozwiązanie nie oznacza, że ​​„texlive” jest obecne , po prostu powstrzymuje vim-latexsuite przed pytaniem o to. W związku z tym odpowiedź Daniela lepiej pasuje do tytułu pytania. Zaznaczenie idzie do niego, chwały do ​​ciebie. ;-)
DevSolar,
1

Poniższe usunie zależność z pliku .deb, w tym przypadku usuwając zależność libperl5.20 z 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

Pozwala to zainstalować pakiet bez wiedzy, że istnieje zależność.

Jeśli ręcznie instalujesz określone wersje pakietów, możesz także przestać apt-get upgradeaktualizować pakiet w przyszłości:

apt-mark hold freeradius
A.Badger
źródło