RHEL/CentOS/Rocky/stb. 8 minimális csomagok kiíratása

Fórumok

Van egy 8-as rendszer telepített csomagokkal. Létezik-e olyan program/parancs, amellyel kiíratható, hogy mi az a minimális csomag aminek a telepítésével reprodukálható a jelenlegi telepített csomagok telepítése. Tudom, lehetne hogy kiíratom az összes csomagot mondjuk rpm -qa-val és azt használom, csak lett egy ilyen ötletem, kerestem a neten, nem találtam megoldást és gondoltam megkérdezem itt.

Egyszerű példa. "A" csomag függősége "B", "B" csomag függősége "C", tehát ha "A" csomagot telepítem, a függőségek miatt települ "B" és "C" csomag is. Ha minden telepített csomagot kiíratok, akkor bekerül "A" "B" "C" csomag, ezzel szemben egy olyan lenne jó, hogy a program kimenete a függőségek figyelembevételével csak egy "A" lenne. Három csomagnál ez nem nagy dobás, sok csomagnál lehet érdekes, hogy kiírja a minimális szükséges csomagot.

Hozzászólások

Hát nem tudom, én mindig minimalt választom, de az annyira minimál már, hogy a wget sincsen benne, de az még elmegy, viszont tar is kimarad már a minimalbol ... Ellenben iwl* firmware csomag benne van :D

Érdekes csomagválaszték  egy szervernél ...

Fedora 38, Thinkpad x280

Háát, végülis tényleg törekedtek a minimumra. :-)

Ez egy munkaállomás, nem szerver, igazából nem azt szeretném tudni, hogy mi a minimális telepíthető csomag amivel elindul egy gép úgy általában, hanem a használt gépemen jelenleg telepített csomagokat milyen minimális csomaggal tudom reprodukálni.

"Az élet tele van kérdésekkel. Az idióták tele vannak válaszokkal."

"Its easier to fool a man than it is to convince they have been fooled"

Csupán az én agymenésem. Nekem tisztább, szárazabb érzést ad, ha azt adom meg ami minimálisan kell és minden mást a saját függőségei szerint telepít. :-) Igazából a gépelés nincs az okok között, mert állományba menteném és onnan tölteném be telepítéskor. De írtam is, tudom, hogy létezik az rpm -qa irány, ha nem lesz megoldás a csomag minimalizására, akkor marad az rpm -qa és összes csomag.

"Az élet tele van kérdésekkel. Az idióták tele vannak válaszokkal."

"Its easier to fool a man than it is to convince they have been fooled"

UNIX haladó -> Linux-haladó

trey @ gépház

A dnf-hez van egy repograph nevű eszköz: https://github.com/rpm-software-management/dnf-plugins-core/blob/master…

De sajnos ez csak egy repositoryra építi fel a csomagfüggőségi gráfot, nem a telepített csomagokra.

Van a dnf leaves plugin: megmondja, hogy mik azok a csomagok, amelyek nem függnek egyik másik csomagtól sem.

De ez sem jó, ez azokat a csomagokat mondja meg, amiket ha uninstallálsz, akkor más nem fog törlődni.

nem tudok olyan dnf plugint, ami ezt tudná.

Köszi, ez a repograph nekem nem jött le találatnak keresésnél, viszont lehet érdekes, mert hiába az egész repora csinálja meg a függőség gráfot, lehet ott tudok metszetet képezni a telepített csomagjaimra és akkor pont jó lesz az eredmény. Elméletileg. Nem feltétlen dnf plugin-t keresek, bármilyen program megfelel, most a cél számít.

"Az élet tele van kérdésekkel. Az idióták tele vannak válaszokkal."

"Its easier to fool a man than it is to convince they have been fooled"

Nem, a leaves a leveleket mutatja meg (nem a fa gyökereit). Ha jól értem.

 

Szerk: neked van igazad. A dnf5 dokumentációja részletesen le is írja:

 

  • All the packages on this list is either needed by you, other users of the system or not needed at all – if it was required by another installed package it would not be on the list.

  • If you want to uninstall anything from your system (without breaking dependencies) it must involve at least one package on this list.

  • If there is anything installed on the system which is not needed it must be on this list – otherwise it would be required as a dependency by another package.

Köszi, megnézem, bár jelenleg:

# dnf leaves
No such command: leaves. Please use /usr/bin/dnf --help
It could be a DNF plugin command, try: "dnf install 'dnf-command(leaves)'"

Leírás (https://dnf-plugins-core.readthedocs.io/en/stable/leaves.html) alapján a dnf-plugins-core része.

# dnf install dnf-plugins-core
Last metadata expiration check: 0:02:20 ago on Mon 27 Nov 2023 03:11:04 PM UTC.
Package dnf-plugins-core-4.0.21-23.el8.noarch is already installed.
Dependencies resolved.
Nothing to do.
Complete!

Ajánlott parancs:

# dnf install 'dnf-command(leaves)'
Last metadata expiration check: 0:02:40 ago on Mon 27 Nov 2023 03:11:04 PM UTC.
No match for argument: dnf-command(leaves)
Error: Unable to find a match: dnf-command(leaves)

Holnap visszatérek rá miért nincs nálam, pedig van hozzá tartozó csomag telepítve, plusz amit ő ajánl parancsot miért nem érti. Lehet később érkezett a plugin csomagba, mint az én verzióm.

"Az élet tele van kérdésekkel. Az idióták tele vannak válaszokkal."

"Its easier to fool a man than it is to convince they have been fooled"

Szerkesztve: 2023. 11. 27., h – 12:03

Nomostan attól, hogy tudod, hogy a B és C csak függőség miatt került fel, mennyivel vagy "előrébb" egy yum-debug-dumo/yum-debug-restore párosnál?

Nem feltétlen vagyok "előrébb", nem is ilyen oldalról néztem, egyszerűen nekem jobban "tetszik" ha csak "A" van felsorolva, a többit meg a csomagkezelő döntse el. De megnézem amiket írtál, köszi, soha nem használtam őket.

"Az élet tele van kérdésekkel. Az idióták tele vannak válaszokkal."

"Its easier to fool a man than it is to convince they have been fooled"

Olyasmi lenne a kérdés, hogy a telepített komponensek közül melyeket lehet elhagyni, de úgy, hogy utána is ugyanazok a komponensek legyenek telepítve, mint most?

Nem egészen azt csinálja, amit kértél, ellenben gyanús, hogy azt, amit igazából akarsz :)

dnf repoquery --userinstalled
 

Ezt megnézem, köszi, értem a logikát ami miatt megfelelhet, de a leírása alapján nem tudom eldönteni, hogy nekem jó-e. A kérdés, hogy szerinte mi minősül általam telepítettnek és mi nem.

"Az élet tele van kérdésekkel. Az idióták tele vannak válaszokkal."

"Its easier to fool a man than it is to convince they have been fooled"

      dnf history userinstalled
             Show  all  installonly  packages,  packages installed outside of DNF and packages not installed as dependency. I.e. it lists packages that will stay on the system when Autoremove Command or Remove Command along with
             clean_requirements_on_remove configuration option set to True is executed. Note the same results can be accomplished with dnf repoquery --userinstalled, and the repoquery command is more powerful  in  formatting  of
             the output.

     --userinstalled
             Limit the resulting set to packages installed by the user. The exclude option in the configuration file might influence the result, but if the command line option  --disableexcludes is used, it ensures that all  in‐
             stalled packages will be listed.

 

Gyakorlatilag azt, amit explicit kértél, hogy tegyen fel, nem valaminek a dependenciájaként érkezett. (Az installonly a kernel és környéki csomagok, amiket nem upgradel, hanem simán feltesz, meg egy idő után leszed)

Próbáltam, de nem ugyanazok kerültek fel a "célgépre", hanem kevesebb csomag, megnézem mi lehet az oka, de iránynak jónak tűnik. Lehet valami modul szarakodás mögötte.

"Az élet tele van kérdésekkel. Az idióták tele vannak válaszokkal."

"Its easier to fool a man than it is to convince they have been fooled"

Szerkesztve: 2023. 12. 02., szo – 07:06

A dnf leaves mellé ajánlom még ezt:
dnf repoquery --userinstalled

Vagy:
dnf history

Ezekkel kiszűrheted a leaves listából, amit kézileg te tettél fel, így tényleg csak azok a csomagok maradnak, amik a rendszerrel alaptelepítésben jönnek és nem függőségként kerültek fel.

Ha valakit érdekel, Arch-on ugyanez: pacman -Qtq. Bár ott nincs minimális rendszer, mert az települ, amit a user feltesz a Wiki alapján, ha nagyon minimális szettet kéne mondanom, akkor a linux, linux-firmware, base csomagokat mondanám, meg valamelyik bootloader csomagját, ezekkel lehet egy bootképes rendszert kapni, bár önmagában nem lesz túl sok mindenre használható, még egy text editor se lesz benne, se ed, se vi, se semmi, de be fog bootolni tty-ra, meg lesz minimális hálózat, GNU coreutils, Bash, stb..

Debian/Ubuntu vonalon az apt-tal nem is tudom hogy kell ilyet, de emlékeim szerint elég pain in the ass lekérdezni.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

"Debian/Ubuntu vonalon az apt-tal nem is tudom hogy kell ilyet, de emlékeim szerint elég pain in the ass lekérdezni."

apt-mark showmanual

Persze ez nem/sem tesz különbséget a kézzel feltelepített és pl. telepítéskor automatikusan (base-files pl.), vagy scriptből felkerült csomagok között.

Aztán lehet még ügyeskedni pl. így:

apt-cache depends --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --recurse base-files

Az összes essential csomagra:

apt-list ?essential

Vagy ezt kivonni a showmanualból, vagy azt mondani, hogy minden más manual csomag és jónapot. Vagy nem.