Apt

 ( varadyz | 2019. február 1., péntek - 11:25 )

Ha le akarok szedni egy programot apt segítségével, de a függőségei közt meg akarom nézni hogy mik vannak már telepítve korábbról a szerveren azt hogy tudnám megcsinálni?
Tehát pl apache hoz magával 300 lib-et, de a gépen ebből meg van már 15 db akkor hogy tudom megnézni hogy mik vannak már fent?
Vagy ami már fent van azt nem bántja?
Azért érdekelne mert félek hogy valami olyan cuccot szedek le ami felül vág egy másik verziójú függőséget amit viszont egy másik program használ és emiatt egy másik program nem fog működni ami korábban működött.
Vagy ettől nem kell félnem? Hogy működik ez az egész a háttérben?

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

apt-get install --dry-run <csomagnév>

Például:

root@alderaan:/tmp# apt-get install --dry-run emacs
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  emacs25 emacs25-bin-common emacs25-common emacs25-el libm17n-0 libotf0 m17n-db
Suggested packages:
  emacs25-common-non-dfsg m17n-docs
The following NEW packages will be installed:
  emacs emacs25 emacs25-bin-common emacs25-common emacs25-el libm17n-0 libotf0 m17n-db
0 upgraded, 8 newly installed, 0 to remove and 3 not upgraded.
Inst emacs25-common (25.2+1-6 Ubuntu:18.04/bionic [all])
Inst emacs25-bin-common (25.2+1-6 Ubuntu:18.04/bionic [amd64])
Inst libotf0 (0.9.13-3build1 Ubuntu:18.04/bionic [amd64])
Inst m17n-db (1.7.0-2 Ubuntu:18.04/bionic [all])
Inst libm17n-0 (1.7.0-3build1 Ubuntu:18.04/bionic [amd64])
Inst emacs25 (25.2+1-6 Ubuntu:18.04/bionic [amd64])
Inst emacs (47.0 Ubuntu:18.04/bionic [all])
Inst emacs25-el (25.2+1-6 Ubuntu:18.04/bionic [all])
Conf emacs25-common (25.2+1-6 Ubuntu:18.04/bionic [all])
Conf emacs25-bin-common (25.2+1-6 Ubuntu:18.04/bionic [amd64])
Conf libotf0 (0.9.13-3build1 Ubuntu:18.04/bionic [amd64])
Conf m17n-db (1.7.0-2 Ubuntu:18.04/bionic [all])
Conf libm17n-0 (1.7.0-3build1 Ubuntu:18.04/bionic [amd64])
Conf emacs25 (25.2+1-6 Ubuntu:18.04/bionic [amd64])
Conf emacs (47.0 Ubuntu:18.04/bionic [all])
Conf emacs25-el (25.2+1-6 Ubuntu:18.04/bionic [all])

Szerk:

Ja, leszed.

Akkor nem install, hanem remove :D

--
trey @ gépház

Olyat nyilván nem fog leszedni, ami más, még telepített programnak szintén a függősége. Sőt konkértan kb. semmit nem fog leszedni az autoremove nélkül, de azzal is csak olyat, ami másnak nem kell.
(bár az nem teljesen tiszta, mit jelent a 'másik verziójú függőség')

Szerintem azt jelentheti, hogy az "A" program amit telepíteni akar, hoz függőségként egy "Fg"-v2.5 programot, de van már telepítve egy "B" program aminek ugyanaz a függősége, de "Fg"-v2.1 alatti verzióig.
--
Tertilla; Tisztelem a botladozó embert és nem rokonszenvezem a tökéletessel! Hagyd már abba!; DropBox

„Azért érdekelne mert félek hogy valami olyan cuccot szedek le ami felül vág egy másik verziójú függőséget amit viszont egy másik program használ és emiatt egy másik program nem fog működni ami korábban működött.”

Ebből nekem már az is bizonytalan, hogy mit ért a „szedek le” alatt. Mert a „felül vág” veszélyét inkább telepítéshez kötném.

Az eredeti kérdéshez: Ha csak a „gyári” repókat használod, akkor ez nem lehet probléma. 3rd party repók esetén esetleg lehet belőle gond, de ilyenkor az apt figyelmeztetni szokott.

Az "apt install apache" parancs leszedi az apache-ot.
Leszed = letölt és telepít. Ami függőség miatt frissíti az "Fg"-v2.1 programot "Fg"-v2.5-re így nem megy a korábban telepített "B" program. :)
Vagy másik megközelítésben "leszedi" a Fg"-v2.1 programot, mert ugye frissebbet tesz fel.
--
Tertilla; Tisztelem a botladozó embert és nem rokonszenvezem a tökéletessel! Hagyd már abba!; DropBox

Ohjaj, én a 'leszed'-et remove-nak 'fordítottam'.., akkor már ez sem egyértelmű a kérdésben:-)

Az utolsó sorban hagytam ám egérutat a te verziódnak is! :)
--
Tertilla; Tisztelem a botladozó embert és nem rokonszenvezem a tökéletessel! Hagyd már abba!; DropBox

Ha külső repoval miért kell vigyázni? Ezt a részt picit bővebben ki tudnád fejteni Ironcat példával?
Külső repos a környezet...

Fordítsuk meg: A gyári repókban levő programok elvileg ne okozhatnak ilyen problémát, mert ott illik biztosítani, hogy nem legyen ilyen függőségi probléma.

Viszont a 3rd party repó készítője sokszor pont azért üzemelteti a külön repót, mert valamelyik library-ból újabb, vagy régebbi kell, mint ami a distro saját repójában van. Aztán, hogy az újabb, vagy a régebbi libraryvel képes-e a többi program működni, az jó kérdés.

Egyébként: Felrakod, kipróbálod, megtudod. Ha nem működik, akkor leszeded. Ha nem akarod teleszemetelni a működő rendszered, akkor ugyanezt egy virtuális gépben követed el.

Dejo jól megfogtad a lényeget. Ettől félek hogy B program használja az Fg v2.1-et de A program le fogja szedni az Fg -v2.5-öt így B program nem fog tovább működni.

Azt értem, hogy mitől félsz, de én még sohasem futottam ilyen problémába.
Egy disztribúción belül azért csak össze vannak ezek hangolva.
Ha külön 3rd repóból is telepítettél valamit akkor, azt kell megnézni, hogy annak mik a függőségei és megnézni, hogy az adott terjesztésben azokból milyen verzió van.
De ez is csak akkor jelent problémát, ha az újabb libbel vagy egyéb függő újabb programmal nem menne. Ez ezért nem mondom, hogy lehetetlen, de nem valószínű. A 3rd repó is általában konkrét terjesztés konkrét verziójához van.
--
Tertilla; Tisztelem a botladozó embert és nem rokonszenvezem a tökéletessel! Hagyd már abba!; DropBox

Ilyen nem fordulhat elő, ha minden program csomagból lett telepítve. Az apt nem csak bután végrehajtja azt, amit kérsz, hanem végignézi előtte a csomagok függőségeit.
Ha az Fg 2.5-öt kell telepíteni azért, hogy az A program menjen, akkor ezt látja. Ilyenkor egyébként általában az a következő lépés, hogy B programot is frissítjük, arra a verzióra, ami már szintén a 2.5-ös libbel együtt tud dolgozni.

Figyi, ha ennyire nem tudod, hogy az apt mit fog csinálni, szerintem tedd fel az aptitude csomagot, és azzal próbáld meg azt, amit akarsz.*

Ugyanazt csinálja a háttérben, mint az apt, viszont amikor kiválasztasz egy csomagot, akkor látod, hogy miket akar még telepíteni vele, szól ha valami nem megy (piros kiemelés, Broken flag, B betűvel végig tudsz menni egyesével az összes broken állapotú csomagon).
Emellett meg tudod vizsgálni minden csomag függőségeit, azon belül lefelé ásva. Reverse dependency-t is lehet nézni (mi függ ettől a csomagtól, amit épp le akarok szedni).
A lényeg, hogy kiválaszthatod amit akarsz, átnézheted, hogy mi fog történni, ha elégedett vagy, akkor jóváhagyhatod és megcsinálja. Erről logot ír, szóval ha később úgy tűnik, hogy valami nem működik, akkor megnézheted, hogy mikor mit tett fel, mit vett le.

* Az aptitude persze nem csak annak jó, aki nem ismeri az apt parancsot, a fenti előnyök miatt én ha egy egyszerű csomag telepítésénél több kell, mindig ezt indítom el.

Szinte mindig aptitude-ot indítok..
Pont ezek miatt. Sokkal többet tudok a rendszerről.
Például azt is megmutatja, hogy milyen csomagok lettek "nem tisztán" eltávolítva.... (Értsd: nem purge-al.)
Néha azt is eljátszom vele, hogy minden csomagot el akarom távolítani, amit persze nem szeretne... ("Yes, I know that this is a very bad idea") És aztán végigmegyek a Broken csomagokon... Volt már rá példa, hogy néhány "szükségtelen" csomagtól megszabadultam ettől... :)
--
Debian Linux rulez... :D
RIP Ian Murdock