Üdv,
Lehet kicsit bonyolúltan fogalmaztam, de tömör akartam lenni ;)
Hogyan tudnám Debian alatt kilistáztatni a telepített csomagokat az szerint, hogy honnét (melyik repo listából) került telepítésre??
Az '/etc/apt/sources.list'-emben extraként egyedül a Debian Multimedia repo van benne. Arra lenne szükségem, hogy azokat a csomagokat ki tudjam listázni, amelyek ebből a multimedia repo-ból lettek feltelepítve.
A probléma forrása az (amellyel valszeg többen is találkoztak már), hogy a vlc videó lejátszása nem működik Debian Lenny-m alatt egy frissítés óta. A neten megtaláltam a megoldást és tudni, hogy mely csomagokat kellene eltávolítani, majd a Multimedia repo nélkül újratelepíteni, de én mégis kíváncsi lennék rá, hogyan lehetne így listázni a már telepített csomagokat.
Minden ötletet előre is köszi.
(Man oldalakban és neten sem találtam semmi infót sem a dpkg-vel, sem apt-cache-sel és hasonlókkal kapcsolatban)
- 2771 megtekintés
Hozzászólások
grep "Package:" /var/lib/apt/lists/*Packages > ide_ird_listat.txt
Ez speciel az osszes repot nezi es kiirja egy file-ba.
Ha *Packages helyett megadod a nevet (ami szinten Packages-re vegzodik), akkor csak azt a repot nezi:
grep "Package:" /var/lib/apt/lists/http.us.debian*testing*Packages > ide_ird_listat.txt
Ez csak az amcsi Debian szerverrol, testingbol szarmazo csomagok.
grep -A2 "Package:" /var/lib/apt/lists/*Packages > ide_ird_listat.txt
Ez a neven kivul kiirja a prioritast es a szekciot is (x11, kde, admin, stb)
Ha mar kigyujtotted, onnan mondjuk egy ujabb greppel mar konnyen lehet mazsolazni (csovezni is lehet persze a grepeket, ahogy gondolod)
- A hozzászóláshoz be kell jelentkezni
Nagyon köszi. Így tényleg egyszerűen tudom listázni az adott repo-ban található csomag neveket.
Viszont ezek közül ki kellene választanom a telepítettet is. Habár asszem azt le tudom scriptezni, hogy 'dpkg -l' -ben megnézem, hogy 'ii' van-e a csomag neve mellett (ha van), és akkor tudom hogy telepített.
Egyszerűbb ötlet esetleg? :)
- A hozzászóláshoz be kell jelentkezni
az apt-show-version nem jó erre?
"A very intelligent turtle, found programming UNIX a hurdle
The system, you see ran as slow as did he,And that’s not saying much for the turtle."
- A hozzászóláshoz be kell jelentkezni
megnéztem az apt-show-versions -t, nekem az alábbi módon listáz:
apt-show-versions acroread
acroread/lenny uptodate 8.1.2.su1-0.0
Az acroread-et a debian-multimedia.org-ról telepíti, mégsem látom a különbséget más csomagokhoz képest.
- A hozzászóláshoz be kell jelentkezni
/var/lib/dpkg/info konyvtarban van az osszes telepitett csomag (list, post/preinst, post/prerm meg anyamtyukja dolgok.) Neha itt szoktam kiloni az utkozeseket :) Pl. ha az xy csomag nem megy fel, mert az xy-1 csomagban van az /usr/share/doc/xy/copyrigth.gz , akkor az xy-1.list filebol nyugodt szivvel torlom az erre vonatkozo bejegyzest es megszunt a gond.
- A hozzászóláshoz be kell jelentkezni
Köszi, de sajna semmi. Megnézegettem a fájlokat, de nem látszik hogy mi "honnét jött" :)
Ez sem ad semmit:
find /var/lib/dpkg/info -print0 | xargs -0 grep -i "debian-multimedia"
- A hozzászóláshoz be kell jelentkezni
Arra ott az elozo...Vagyis ahol a csomagok fel vannak sorolva egy list file-ban. A file neveben benne van, hogy honnan valo...
- A hozzászóláshoz be kell jelentkezni
eredetuk szerint leginkabb
- A hozzászóláshoz be kell jelentkezni
Egyetértek - javítva, köszi. :)
- A hozzászóláshoz be kell jelentkezni
keresem a választ. a "vrms" sem írja ki, hogy mi települt egyéb helyről, kivéve "contrib" és "non-free".
- A hozzászóláshoz be kell jelentkezni
egyéb ötlet esetleg?
- A hozzászóláshoz be kell jelentkezni
Megoldottam végre a kérdést, köszönet a segítségért a hozzászólóknak. Írtam rá egy script-et, ami kilistázza az adott repo-ból telepített csomagokat:
szerk.: Magyarázatnak annyi, hogy csinál egy listát, ami az összes telepített csomag nevét tartalmazza, meg csinál még egyet, ami az adott repo teljes telepíthető csomag lista nevét tartalmazza, majd ezt összehasonlítja és kiírja az egyező neveket.
Megjegyzés: ha a csomagnév mindkét repo-ban megtalálható (main és multimedia pl.), akkor is kiírásra kerül.
# --------------------------------------------------
# LIST PACKAGES INSTALLED FROM PARTICULAR REPOSITORY
# --------------------------------------------------
# MULTIMEDIA LENNY (benne kell hogy legyen a sources.list-ben és kell egy update is, hogy meg legyen a lista)
# echo "deb http://www.debian-multimedia.org lenny main" >> /etc/apt/sources.list
# apt-get update
#LIST=/var/lib/apt/lists/*contrib*Packages
#LIST=/var/lib/apt/lists/*non-free*Packages
LIST=/var/lib/apt/lists/*debian-multimedia*Packages
TEMP=`mktemp -d temp_directory_for_list.XXXXXXXX`
cd $TEMP
dpkg -l | grep -i "^ii" | tr -s " " "," | cut -d"," -f2 > list1
cat $LIST | grep -i "^Package:" | tr -s " " "," | cut -d"," -f2 > list2
diff -u list1 list2 | grep "^ " | tr -d " "
cd ..
rm -rf $TEMP
- A hozzászóláshoz be kell jelentkezni
Még egy megoldás, talán még jobb. Ez a script az összes olyan telepített csomag nevét kilistázza, amely NEM a main tárolóból lett telepítve:
# --------------------------------------------------
# LIST PACKAGES INSTALLED FROM OUTSIDE OF MAIN
# --------------------------------------------------
# (main and security packages together)
LIST=/var/lib/apt/lists/*main*Packages
TEMP=`mktemp -d temp_directory_for_list.XXXXXXXX`
cd $TEMP
dpkg -l | grep -i "^ii" | tr -s " " "," | cut -d"," -f2 > list1
cat $LIST | grep -i "^Package:" | tr -s " " "," | cut -d"," -f2 > list2
diff -u list1 list2 | grep -v "^@" | grep -v "^--" | grep "^-" | cut -b2-100
cd ..
rm -rf $TEMP
- A hozzászóláshoz be kell jelentkezni