Få fram minsta antalet paket som behöver installeras

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Användarvisningsbild
CryingFreeman
Inlägg: 2817
Blev medlem: 29 aug 2007, 22:32
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Östersund

Få fram minsta antalet paket som behöver installeras

Inlägg av CryingFreeman »

Jag sitter och klurar på ett problem.

Jag behöver få fram en lista på installerade paket på en maskin. Listan får inte ha någon redundans, dvs. de paket som står där ska kunna installera ett komplett system utan att ett paketnamn används två gånger utan istället tillfredsställs genom dependencies. Istället för att ange alla paket som finns i ubuntu-desktop ska jag alltså bara behöva ange ubuntu-desktop i listan.

Syftet med detta är att få en så komprimerad lista som möjligt.

En alternativ lösning på problemet skulle kunna vara att ha en komplett lista, för att sedan stryka paket utifrån dependencies till metapaket som ubuntu-desktop, build-essential, ubuntu-restricted-extras osv.

Jag hoppas att ni förstår hur jag menar. Jag är ingen scriptkung, men jag börjar inse att det är dags att lära sig ...
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Få fram minsta antalet paket som behöver installeras

Inlägg av Osprey »

Att få fram en lista över vilka paket som är installerade på en burk är inga större problem, men att se eller ta reda på vilka som är installerade direkt och vilka som är det via beroenden är nog betydligt värre... :-\

Men det kanske finns någon som vet...?
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
CryingFreeman
Inlägg: 2817
Blev medlem: 29 aug 2007, 22:32
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Östersund

Re: Få fram minsta antalet paket som behöver installeras

Inlägg av CryingFreeman »

Hade en tanke om att man kanske skulle kunna använda apt-rdepends, men jag vet inte riktigt hur man ska kunna få fram informationen som jag vill åt..
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Få fram minsta antalet paket som behöver installeras

Inlägg av Osprey »

CryingFreeman skrev:Hade en tanke om att man kanske skulle kunna använda apt-rdepends, men jag vet inte riktigt hur man ska kunna få fram informationen som jag vill åt..
Hmmm, kikade lite på det och det kanske går... ska titta lite mer på det, för det vore himla spännande om det går... O0

Provade förresten att köra rdepends på coreutils just nu, och det blev en hiskelig lista... men med lite sortering löser man det mesta... ;)
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Få fram minsta antalet paket som behöver installeras

Inlägg av Konservburk »

CryingFreeman skrev:En alternativ lösning på problemet skulle kunna vara att ha en komplett lista, för att sedan stryka paket utifrån dependencies
Det borde ju gå att angripa problemet från det hållet. Så låt oss utgå ifrån en komplett lista över alla installerade paket:

Kod: Markera allt

dpkg --get-selections
Min tanke är att vi sedan går igenom listan paket för paket och helt enkelt testar vilka som går att avinstallera rakt av utan att det finns andra paket som kommer att sakna dem:

Kod: Markera allt

dpkg --no-act --purge
Detta är då bara en simulerad avinstallation och det borde endast lyckas för de paket som inte är beroenden till något/några andra installerade paket. Det blir förstås en massa skräp-utdata som vi inte är intresserade av, men den kan vi lätt göra oss av med genom att stänga stdout och stderr:

Kod: Markera allt

>&- 2>&-
Sen ska det bara vara att skriva ut paketnamnet i de fall den simulerade avinstallationen lyckades. Se efter vad som finns i $? eller använd en vanlig if-sats eller kör helt enkelt med && rakt av. Jag tänker mig något i den här stilen:

Kod: Markera allt

dpkg --get-selections |
while read pkg state
do dpkg --no-act --purge "$pkg" >&- 2>&- && echo "$pkg"
done
Kanske inte världens snabbaste metod, men den borde åtminstone ge det resultat du är ute efter.
Användarvisningsbild
CryingFreeman
Inlägg: 2817
Blev medlem: 29 aug 2007, 22:32
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Östersund

Re: Få fram minsta antalet paket som behöver installeras

Inlägg av CryingFreeman »

Funkade inte riktigt som det var tänkt (ingen output alls), men jag ska fortsätta att labba lite. :) Tack för hjälpen!
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Få fram minsta antalet paket som behöver installeras

Inlägg av Konservburk »

CryingFreeman skrev:Funkade inte riktigt som det var tänkt (ingen output alls), men jag ska fortsätta att labba lite. :) Tack för hjälpen!
Lät du den köra klart? Den var inte jättesnabb när jag testade.
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Få fram minsta antalet paket som behöver installeras

Inlägg av Osprey »

Jag provade och den skapar en rätt snygg lista, men den fick med en hel del lib:ar (dvs. libxxxx),,,

Rimligtvis borde de allra flesta av dessa vara installerade för att något program är beroende av dem, istället för att de som det verkar är explicit installerade eftersom inget verkar vara beroende av dem...

Vad kan vara orsaken till detta..?
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
andol
Inlägg: 3093
Blev medlem: 31 dec 2007, 00:19
OS: Ubuntu
Utgåva: 23.10 Mantic Minotaur

Re: Få fram minsta antalet paket som behöver installeras

Inlägg av andol »

Osprey skrev:Jag provade och den skapar en rätt snygg lista, men den fick med en hel del lib:ar (dvs. libxxxx),,,

Rimligtvis borde de allra flesta av dessa vara installerade för att något program är beroende av dem, istället för att de som det verkar är explicit installerade eftersom inget verkar vara beroende av dem...

Vad kan vara orsaken till detta..?
Gissningsvis så är de definierade i default-seeden alternativt installerade som ett Recommends.
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Få fram minsta antalet paket som behöver installeras

Inlägg av Konservburk »

CryingFreeman skrev:Funkade inte riktigt som det var tänkt (ingen output alls), men jag ska fortsätta att labba lite. :) Tack för hjälpen!
Jag upptäckte just att den av någon anledning inte gillar när man stängt stdout utan att vara root... vilket är ganska konstigt. Kör in skiten i /dev/null istället så borde det gå bättre för dig:

Kod: Markera allt

dpkg --get-selections |
while read pkg state
do dpkg --no-act --purge "$pkg" >/dev/null 2>&1 && echo "$pkg"
done
Användarvisningsbild
Ulsak
Inlägg: 4808
Blev medlem: 06 aug 2007, 19:04
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Göteborg

Re: Få fram minsta antalet paket som behöver installeras

Inlägg av Ulsak »

Hepp, jag hade förmånen att kunna hänga med min idol konservburk på releaseträffen nyssens. Det är också alltid roligt att se honom i aktion här på forumet. Jag ville också ta mig en liten kik på hur det ser ut för min del med installerade paket så daskade in detta kommando:

Kod: Markera allt

dpkg --get-selections
Initialt såg det ju bra om inte det vore att jag kan alfabetet även för de bokstäver som kommer före "O" . I själva verket verkar det som om alla paket som borde listats före openoffice.org-hyphenation har klippts av. Vad gör jag för fel?
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Få fram minsta antalet paket som behöver installeras

Inlägg av Osprey »

Ulsak skrev:Initialt såg det ju bra om inte det vore att jag kan alfabetet även för de bokstäver som kommer före "O" . I själva verket verkar det som om alla paket som borde listats före openoffice.org-hyphenation har klippts av. Vad gör jag för fel?
Det är inte så enkelt att de bara "scrollar upp över kanten"..?

Prova isåfall med:

Kod: Markera allt

dpkg --get-selections | more
Eller för den delen less om du vill...
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
Ulsak
Inlägg: 4808
Blev medlem: 06 aug 2007, 19:04
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Göteborg

Re: Få fram minsta antalet paket som behöver installeras

Inlägg av Ulsak »

less is more.. :) ( ja, jag tycker fortfarande det är roligt) more gjorde jobbet...men jag är lite smådum och försökte flagga less, insåg inte att det ska vara pipe.
Användarvisningsbild
dmz
Inlägg: 3292
Blev medlem: 29 jul 2008, 19:42
OS: Arch Linux

Re: Få fram minsta antalet paket som behöver installeras

Inlägg av dmz »

Ulsak skrev: Initialt såg det ju bra om inte det vore att jag kan alfabetet även för de bokstäver som kommer före "O" . I själva verket verkar det som om alla paket som borde listats före openoffice.org-hyphenation har klippts av. Vad gör jag för fel?
Givet att du scrollade upp och det tog stopp, så har din buffer i terminalen tagit slut.
Gör så som osprey sade och använd en pager, t.ex less eller more.

@Osprey: less is more then less, and most is most. :)
Jag föredrar dock vim själv eftersom man får alla fina funktioner gratis även i sin pager då.
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
Användarvisningsbild
CryingFreeman
Inlägg: 2817
Blev medlem: 29 aug 2007, 22:32
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Östersund

Re: Få fram minsta antalet paket som behöver installeras

Inlägg av CryingFreeman »

Konservburk skrev:
CryingFreeman skrev:Funkade inte riktigt som det var tänkt (ingen output alls), men jag ska fortsätta att labba lite. :) Tack för hjälpen!
Jag upptäckte just att den av någon anledning inte gillar när man stängt stdout utan att vara root... vilket är ganska konstigt. Kör in skiten i /dev/null istället så borde det gå bättre för dig:

Kod: Markera allt

dpkg --get-selections |
while read pkg state
do dpkg --no-act --purge "$pkg" >/dev/null 2>&1 && echo "$pkg"
done
Det är så j-vla underbart att ha privilegiet att få hänga med alla begåvade människor som finns på det här forumet! :D

Funkade ju klockrent!
Skriv svar

Återgå till "Terminalforum"