අතින් ස්ථාපනය කර ඇති පැකේජ ලැයිස්තුවක් ජනනය කිරීම සහ තනි පැකේජ විමසීම


201

අතින් ස්ථාපනය කර ඇති පැකේජ ලැයිස්තුවක් ලබා ගැනීමට aptහෝ පැකේජයක් අතින් හෝ ස්වයංක්‍රීයව ස්ථාපනය කර aptitudeඇත්දැයි සොයා ගැනීමට මා කැමතිය foobar. විධාන රේඛාවෙන් එය කිරීමට පිළිවෙලක් තිබේද?


කොටස් පැකේජ පෙරහන් කරන විසඳුමක් සඳහා unix.stackexchange.com හි මෙම පිළිතුර බලන්න .
ඩර්ක් බර්ග්ස්ට්‍රෝම්

විය හැකි අනුපිටපත්? - askubuntu.com/questions/365
jrg


පෙරනිමියෙන් ස්ථාපනය කර ඇති පැකේජ බැහැර කරන හොඳ විසඳුමක්: උබුන්ටු ලැයිස්තුව පැහැදිලිවම ස්ථාපනය කර ඇති පැකේජ
pcworld

පිළිතුරු පිළිබඳ අදහස් මෙහි ප්‍රවේශම් වන්න. වැඩි පැකේජ පෙන්වන ආකාරයට මිනිසුන් නොකියයි, නමුත් අත්පොතකින් ස්ථාපනය කර ඇති පරායත්තතා පැකේජ ඇති බව ඔවුන්ට අමතක ය.
ඇන්ඩ්‍රේ ෆිගියිරෙඩෝ

Answers:


226

ඔබට මෙම එක්-ලයිනර් දෙකෙන් එකක් භාවිතා කළ හැකිය. දෙකම මගේ යන්ත්‍රයේ එකම ප්‍රතිදානය ලබා දෙන අතර මේ දක්වා (2014 ජූලි 6) මේ දක්වා යෝජනා කර ඇති සියලු විසඳුම් වලට වඩා නිරවද්‍ය ය.

භාවිතා කිරීම apt-mark:

comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)

භාවිතා කිරීම aptitude:

comm -23 <(aptitude search '~i !~M' -F '%p' | sed "s/ *$//" | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)

මම මේ සැක නමුත් පැකේජ ඉතා සුළු තවමත්, සිදුරු තුලින් වැටී ඇත ඇත්තටම Totem ලැබෙන codec ස්ථාපකය මඟින් හෝ අයිතිය ස්ථාපනය කළ පසුව භාෂා ප්රාදේශීයකරණය පිහිටුවීම් හෝ උදා: හරහා, පරිශීලක විසින් ස්ථාපනය කරන ලදි. එසේම, ලිනක්ස්-හෙඩර් අනුවාදයන් සමුච්චය වී ඇති බව පෙනේ, මම ස්ථාපනය කර ඇත්තේ අනුවාද-විශේෂිත නොවන මෙටා පැකේජය පමණි. උදාහරණ:

libreoffice-help-en-gb
openoffice.org-hyphenation
gstreamer0.10-fluendo-mp3
linux-headers-3.13.0-29    

එය ක්‍රියාත්මක වන්නේ කෙසේද:

  1. අතින් ස්ථාපනය කර ඇති පැකේජ ලැයිස්තුව ලබා ගන්න. යෝග්‍යතාවය සඳහා, අතිරේක sedතීරු රේඛාවේ අවසානයේ ඉතිරිව ඇති හිස් අවකාශය ඉවත් කරයි.
  2. නැවුම් ස්ථාපනයකින් පසු ස්ථාපනය කර ඇති පැකේජ ලැයිස්තුව ලබා ගන්න.
  3. ලිපිගොනු සංසන්දනය කරන්න, 2 වන ගොනුවේ නොමැති 1 වන ගොනුවේ පේළි පමණක් ප්‍රතිදානය කරන්න.

වෙනත් හැකියාවන් ද ක්‍රියාත්මක නොවේ:

  • ubuntu-14.04-desktop-amd64.manifestගොනුව භාවිතා කිරීම ( මෙහි උබුන්ටු 14.04 සඳහා) වෙනුවට /var/log/installer/initial-status.gz. තවත් පැකේජ ඒවා නොමැති වුවද අතින් ස්ථාපනය කර ඇති බව පෙන්වයි.
  • apt-mark showautoවෙනුවට භාවිතා කිරීම /var/log/installer/initial-status.gz. apt-markඋදාහරණයක් ලෙස xserver-xorg පැකේජය ඇතුළත් නොවන අතර අනෙක් ගොනුවට ඇතුළත් වේ.

මම වෙනත් විවිධ ස්ටැක්එක්ස්චේන්ජ් පෝස්ට් යොමු ලෙස භාවිතා කළෙමි, කෙසේ වෙතත් කිසිවක් ක්‍රියාත්මක නොවන අතර ඉහත විසඳුම:

දෙකම ඉහත විසඳුමට වඩා වැඩි පැකේජ ලැයිස්තුගත කරයි.

සංස්කරණය කරන්න: ඔබ කලින් නිකුතුවකින් යාවත්කාලීන කර ඇත්නම් කුමක් කළ යුතුද:

ඔබ උබුන්ටු එක් නිකුතුවක සිට තවත් නිකුතුවකට යාවත්කාලීන කර ඇත්නම්, ඔබට මෙම ක්‍රියාවලිය සකස් කිරීමට අවශ්‍ය වනු ඇත. එවැනි අවස්ථාවකදී, වත්මන් නිකුතුවෙන් ආරම්භක-status.gz ගොනුවට අමතරව නව නිකුතුවේ මැනිෆෙස්ට් ගොනුව (ඉහත බලන්න) පරීක්ෂා කරමි. වෙනත් සංසන්දනයක් එකතු කිරීමෙන් ඔබට එය පහසුවෙන් කළ හැකිය. මැනිෆෙස්ට් ගොනුව අවාසනාවන්ත ලෙස ආරම්භක_ස්ටැටස්.ජී.එස් ගොනුව කරන සෑම දෙයක්ම අඩංගු නොවන බැවින් මැනිෆෙස්ට් ගොනුව භාවිතා කිරීම ක්‍රියා නොකරනු ඇත (මම පරීක්ෂා කළෙමි).


8
නැති නිසා /var/log/installer/initial-status.gzමෙය මට වැඩ කළේ නැත . එසේම මෙය දැන ගැනීම සඳහා යෝග්‍ය ලකුණු කිරීම මත රඳා පවතීද නැද්ද යන්න දැන ගැනීමට මට අවශ්‍යද manual?
අන්වර්

1
අහෝ, සේවාදායක අනුවාද සඳහා කිසිදු ප්‍රකාශනයක් නොමැත.
ඇන්ටි හාපාල

මම showmanualවිධානය ක්‍රියාත්මක කළෙමි (පහළ). comm(වර්ග කළ) ලැයිස්තු දෙක සංසන්දනය කිරීමට භාවිතා කරන්න. මෙම showmanualප්රතිඵලය මට 1.840 දුන් තවත් සිට අද්විතීය පැකේජ apt-mark showmanualමෙම ක්රමය මගින් පෙන්වා නැත. මෙම commවිධාන ප්‍රතිදානයට කිසිදු පැකේජයක් අද්විතීය නොවීය. මගේ පරිගණකය සඳහා පැකේජ 894 ක් ප්‍රති .ල දෙකෙහිම ලැයිස්තුගත කර ඇති බව සටහන් කිරීම වඩාත් සිත්ගන්නා සුළු යැයි මම සිතමි . මෙතරම් විශාල විෂමතාවයක් ඇත්තේ මන්දැයි නිශ්චිතවම කිව නොහැක. සමහර (බොහෝ?) පැකේජ විශේෂිත නිකුතුවක් ලෙස පෙනේ. XOrg, GTK සංරචක වැනි lib*දේවල් යාවත්කාලීන විය හැකිය. කෙසේ හෝ මෙම පිළිතුර ඉතා හොඳ ආරම්භයකි.
ඇත

මම ඔබේ විසඳුම් සමඟ සසඳා බැලුවෙමි apt-mark showmanual. වෙනස්කම් කොපමණ ප්‍රමාණයක් දැකිය හැකිද යන්න සිත්ගන්නා කරුණකි. ඔබේ ලැයිස්තුවේ පැකේජ 238 ක් ඇති අතර ප්‍රදර්ශනමය පැකේජ 1717 ක් ලබා දෙයි. ස්ථාපනය කර ඇති පැකේජ 2179 අතුරින් ලැයිස්තු දෙකෙහිම ඇත්තේ 223 ක් පමණි, 15 ක් ඇත්තේ ඔබගේ පමණි (උදාහරණ: nodejs, lightdm) සහ 223 ප්‍රදර්ශන අත්පොතෙහි පමණි (උදාහරණ: xserver-xorg, උබුන්ටු-ඩෙස්ක්ටොප්). ඔබේ ලැයිස්තුව වඩාත් ප්‍රයෝජනවත් යැයි හැඟේ, නමුත් මෙම වෙනස්කම් පැමිණෙන්නේ කොහෙන්දැයි නොදැන එය තීරණය කිරීම පහසු නැත ... (නමුත් මට විශ්වාසයි මම එන්ජින්එක්ස් සහ ලයිට් ඩීඑම් අතින් ස්ථාපනය කර ඇති බව ...) [සමාවෙන්න මම ලිව්වා ද;)]
ඩැනියෙල් ඇල්ඩර්

මා ස්ථාපනය කළ පැකේජ පිළිබඳ සංක්ෂිප්ත ලැයිස්තුවක් ලබා ගැනීමට ක්‍රමයක් තිබේද? මම 30-අයිෂ් අයිතම සහිත ලැයිස්තුවක් බලාපොරොත්තු වෙමි, නමුත් එය 1) මම මෙතෙක් අසා නැති දේවල් (වැනි zenity), 2) මා අසා ඇති නමුත් මූලික ක්‍රියාකාරිත්වය (වැනි acpi-support), 3) දේවල් එය මට 100% ක් printer-driver-xxxthunderbird-locale-en
නිෂ් less ලයි

68

පැකේජයේ නවතම අනුවාද වල, apt-mark විධානය ද ඇත

apt-mark showmanual

38
මෙය මා අතින් ස්ථාපනය කර ඇති ප්‍රමාණයට වඩා වැඩි පැකේජයක් පෙන්වයි.
උමාං

1
Man උමාං ඔබ හරි. මම මේ පිළිතුර ලියන විට මෙය එසේ නොවේ යැයි මම කියමි. linux-image-3.11.0-*-genericආදිය අත්පොත ලෙස සැලකීමට මගේ පද්ධතියේ කිසිදු හේතුවක් නැත
ඩැනියෙල් ඇල්ඩර්

1
Man උමාං සමහර විට මෙය ඔබට askubuntu.com/questions/432743/… සඳහා උපකාරී වනු ඇත , නමුත් පිළිතුර පිළිගනු නොලැබේ. සත්‍යය නම්, නැවුම් ස්ථාපනයක බොහෝ පැකේජ දැනටමත් අත්පොත ලෙස සලකුණු කර තිබීමයි. නමුත් තවමත් අමුතු දේවල් තිබේ. මගේ උදාහරණය සමඟ සිටීමට: linux-image-3.13.0-24-genericඅත්පොත නමුත් ධාරාව linux-image-3.13.0-27-genericස්වයංක්‍රීයයි. යොමු කිරීමේ පැකේජයක් උත්ශ්‍රේණිගත කිරීම (මෙම අවස්ථාවේ දී linux-image-generic, පරායත්තයන් වෙනස් කළ), අතින් සලකුණ ස්වයංක්‍රීයව සකසා ඇති බව පෙනේ
ඩැනියෙල් ඇල්ඩර්

6
An ඩැනියෙල් ඇල්ඩර් නැවුම් ස්ථාපනයක සමහර පැකේජ අත්පොත ලෙස සලකුණු කළ යුතුය. පැකේජයක් අත්පොත ලෙස සලකුණු කර නොමැති නම්, මුළු පද්ධතියම මකා දැමිය හැකිය apt-get autoremove. මෙය නියත වශයෙන්ම ඔබට අවශ්‍ය දේ නොවේ.
ඇන්ටන් කේ

2
"අතින් ස්ථාපනය කිරීම" යන්නෙන් අදහස් කරන්නේ "ආරම්භක මෙහෙයුම් පද්ධතිය ස්ථාපනය කිරීමෙන් පසු පරිශීලකයා විසින් ස්ථාපනය කර ඇති" යන්නයි, මෙය නිවැරදි පිළිතුරක් නොවේ.
සීමස්

24

උබුන්ටු 16.04 සඳහා, ලොග් ගොනුව බලන්න /var/log/apt/history.log.

උදාහරණයක් වශයෙන්:

zgrep 'Commandline: apt' /var/log/apt/history.log /var/log/apt/history.log.*.gz

එය පරිපූර්ණ නොවේ, නමුත් මා අතින් ස්ථාපනය කර ඇති දේ හරියටම පැහැදිලි කිරීම ඉතා හොඳයි. -B 1එය ස්ථාපනය කර ඇත්තේ කවදාදැයි බැලීමට grep එක මත තබන්න .

නිදර්ශන ප්‍රතිදානය

Commandline: apt install postgresql-9.5-plv8
Commandline: aptdaemon role='role-install-file' sender=':1.85'
Commandline: apt install task
Commandline: apt autoremove
Commandline: apt install atom
Commandline: apt upgrade
Commandline: apt-get install asciinema
Commandline: apt install iperf3
Commandline: apt upgrade
Commandline: apt-get install chromium-browser
Commandline: apt install joe cpanminus build-essential postgresql libdbd-pg-perl libcrypt-openssl-bignum-perl libcrypt-openssl-rsa-perl libio-socket-ssl-perl libnet-ssleay-perl libssl-dev
Commandline: aptdaemon role='role-commit-packages' sender=':1.2314'
Commandline: apt install git
Commandline: apt install sqlite
Commandline: apt install whois
Commandline: apt install libdbd-pg-perl
Commandline: apt install perl-doc
Commandline: apt upgrade

මෙය එන්නේද නැද්ද යන්න නිශ්චිත aptitudeනැත. එය උබුන්ටු මෘදුකාංග ඩෙස්ක්ටොප් යෙදුමෙන් ස්ථාපනය කර ඇති බවක් නොපෙනේ.


3
වසර ගණනාවක් පුරා ලැබී ඇති සියලුම පිළිතුරු අතුරින්, 18.04 සේවාදායකය තුළ පවා සමීප වන එකම පිළිතුර මෙයයි.
ක්වෙන්ටින් ස්කවුසන්

වරින් වර ල logs ු-සටහන් මකා දැමෙන බව අමතක නොකරන්න ...
ඩැනියෙල් ඇල්ඩර්

20

apt-mark showauto | grep -iE '^foobar$' පැකේජය ස්වයංක්‍රීයව ස්ථාපනය කර ඇත්නම් "foobar" ප්‍රතිදානය කරනු ඇත, වෙනත් කිසිවක් නැත.

aptitude search '!~M ~i'ස්වයංක්‍රීයව ස්ථාපනය කර නොමැති ඇසුරුම් ලැයිස්තුගත කරයි. 10.10 සිට උබුන්ටු ඩෙස්ක්ටොප් පරිගණකයේ පෙරනිමි ස්ථාපනයෙහි කොටසක් නොවනු ඇත.


aptitude searchසියලුම පැකේජයන් අතින් ස්ථාපනය කර ඇති ඒවා පමණක් නොවේ (OP ට අවශ්‍ය වූයේ එය යැයි මම සිතමි)
ඔලි

1
Li ඔලි: යෝග්‍යතා සෙවුම් රටා සොයා බලන්න; මම එහි භාවිතා කරන රටාව OP ට අවශ්‍ය දේ හරියටම කළ යුතුය.
ලී ලො

මම ඒක දිව්වා . එය ස්ථාපනය කර නොමැති පැකේජ රාශියක් පෙන්වයි.
ඔලි

7
මේ සමඟ යමක් හරි නැත, මම භාවිතා කරන aptitude search '!~M ~i'අතර එය පැකේජ 1043 ක් ලැයිස්තුගත කරයි. මම බොහෝ පැකේජ අතින් ස්ථාපනය කර ඇති ක්‍රමයක් නොමැත.
ThatGraemeGuy

මෙය අනිවාර්යයෙන්ම ඉල්ලූ පරිදි ක්‍රියා නොකරයි, පෙර ස්ථාපනය කළ පැකේජ මුද්‍රණය කරයි.
ඉර්ෆි

9

පහත දැක්වෙන ස්ක්‍රිප්ට් මඟින් ස්වයංක්‍රීය ස්ථාපනය සඳහා සකසා නොමැති සියලුම පැකේජ මුද්‍රණය කරනු ඇත.

#!/usr/bin/python

try:
    import apt_pkg
except ImportError:
    print "Error importing apt_pkg, is python-apt installed?"
    sys.exit(1)

apt_pkg.init()
STATE_FILE = apt_pkg.config.find_dir("Dir::State") + "extended_states"
auto = set()
tagfile = apt_pkg.TagFile(open(STATE_FILE))
while tagfile.step():
    pkgname = tagfile.section.get("Package")
    autoInst = tagfile.section.get("Auto-Installed")
    if not int(autoInst):
        auto.add(pkgname)
print "\n".join(sorted(auto))

එය පදනම් වී ඇත්තේ ස්වයංක්‍රීයව ස්ථාපනය කර ඇති පැකේජයන් apt-mark මුද්‍රණය කරන්නේ කෙසේද යන්න මතය.


ඔබට සුභ පැතුම් සර්. පිළිගත් පිළිතුරට වෙනස්ව මෙය සැබවින්ම ක්‍රියාත්මක වේ.
ඉර්ෆි

මා සඳහා පැකේජ කිහිපයක් පමණක් පෙන්වන්න --- අනිවාර්යයෙන්ම ඒවායින් බොහොමයක් මග හැරී ඇත.
Rmano

අතින්ම ස්ථාපනය කර ඇති පැකේජ මා විසින් ස්ථාපනය කළ විගසම අස්ථානගත වී ඇත.
ඩේවිඩ් ලුං මැඩිසන් ස්ටෙලර්

sys.exit(1)නොමැතිව භාවිතා කිරීමෙන් import sysපයිතන්ගේ නවතම අනුවාද වල දෝෂයක් ඇතිවිය හැකිය. එක්කෝ import sysහෝ භාවිතා කරන්න exit(1).
වීඩියෝනාත්

8

සියලුම පැකේජ ලැයිස්තුවක් ලබා ගැනීම සඳහා (ස්ථාපනය කර නැත, පරිශීලකයා විසින් ස්ථාපනය කර හෝ පෙරනිමියෙන් ස්ථාපනය කර ඇත, සියලු PPA හරහා), aptපහත දැක්වෙන ක්‍රමය භාවිතා කරයි:

apt list [option]

මේ සඳහා ප්‍රයෝජනවත් විය හැකි විකල්ප:

--installed පද්ධතියේ ස්ථාපනය කර ඇති පැකේජ පමණක් පෙන්වීමට (50,000+ ක් පමණ)

--manual-installedවිධානයක් මගින් පැහැදිලිව ස්ථාපනය කර ඇති පැකේජයන් සෘජුව හෝ පරායත්තයන් ලෙස ලැයිස්තු ගත කිරීමට.

විකල්පයක් ලෙස, ඔබට කළ හැක්කේ:

apt list --manual-installed | grep -F \[installed\] පරිශීලක විධාන සහ ඒවායේ පරායත්තතාවයන්ගෙන් පමණක් ඇති වූ පැකේජ ලැයිස්තුවක් ලබා ගැනීමට සහ අනුවාදය සහ ගෘහ නිර්මාණ සහාය වැනි අමතර තොරතුරු ලබා ගැනීමට (x86, x86_64, amd64, සියල්ල, ආදිය)


5

කිහිප දෙනෙකු අදහස් දක්වා ඇති පරිදි, apt-mark showmanual ටිකක් දෝෂ සහිත බව පෙනේ (මම එය දෝෂ 727799 ලෙස වාර්තා කළෙමි ). මම එය භාවිතා කරන විට, එය ඇත්ත වශයෙන්ම / var / lib / apt / extended_states (මෙය ගබඩා කළ යුතු තැන) තුළ පවා ලොග් වී නැති බොහෝ දේ වාර්තා කරයි, සහ apt-get මඟින් ස්ථාපනය කර ඇති ආකාරයට ලොග් නොවේ / var / lib / apt / extended_states (/ var / lib / dpkg / තත්වයෙන් පමණි). ඉහත txwikinger විසින් රචිත පයිතන් ස්ක්‍රිප්ට් / var / lib / apt / extended_states වෙතින් කෙලින්ම ඇද ගන්නා නමුත් ඔබ අද එය භාවිතා කරන්නේ නම් සින්ටැක්ස් ක්‍රියා නොකරනු ඇත (මගේ කුබුන්ටු 13.10 සමඟ දෝෂ ජනනය කිරීමට පටන් ගෙන ඇත). යාවත්කාලීන කළ වාක්‍ය ඛණ්ඩය:

#!/usr/bin/python
import sys

try:
    import apt_pkg
except ImportError:
    print "Error importing apt_pkg, is python-apt installed?"
    sys.exit(1)

apt_pkg.init()
STATE_FILE = apt_pkg.config.find_dir("Dir::State") + "extended_states"
auto = set()
tagfile = apt_pkg.TagFile(open(STATE_FILE))
while tagfile.step():
    pkgname = tagfile.section.get("Package")
    autoInst = tagfile.section.get("Auto-Installed")
    if not int(autoInst):
        auto.add(pkgname)
print "\n".join(sorted(auto))

මට නම් මෙය ඉතා නිවැරදි අයිතම 5 කින් යුත් ඉතා කෙටි ලැයිස්තුවකි.


1
sys.exit(1)නොමැතිව භාවිතා කිරීමෙන් import sysපයිතන්ගේ නවතම අනුවාද වල දෝෂයක් ඇතිවිය හැකිය. එක්කෝ import sysහෝ භාවිතා කරන්න exit(1).
වීඩියෝනාත්

4

මම GUI විසඳුමක් දීමට කැමතියි.

රූප විස්තරය මෙහි ඇතුළත් කරන්න

  1. විවෘත Synaptic Package Manager

  2. යන්න Status

  3. ක්ලික් කරන්න Installed (manual)

එය අතින් හෝ යෝග්‍යතාවයෙන් අතින් ස්ථාපනය කර ඇති පැකේජ ලැයිස්තුවක් ලබා දෙනු ඇත.

අවාසනාවකට පැකේජයක් අතින් හෝ ස්වයංක්‍රීයව ස්ථාපනය කර Custom Filtersඇත්දැයි සොයා බැලීමට මට වෙනත් විකල්පයක් සොයාගත නොහැකි විය foobar.

පැකේජය යටතේ ඇති Installedනමුත් යටින් නොමැති Installed (manual)නම් එය ස්වයංක්‍රීයව ස්ථාපනය කර ඇත. පැකේජය යටතේ තිබේ Installed (manual)නම් එය අතින් ස්ථාපනය කර ඇත.


2

Apr-something විධානයක් භාවිතයෙන් කිසිවෙකු ඔබට හොඳ පිළිතුරක් ලබා නොදෙන්නේ නම් ඔබට එය දුෂ්කර ආකාරයකින් කළ හැකිය හැකිය. Apt-get එහි තොරතුරු / var / lib / apt / extended_states තුළ ගබඩා කරයි. ස්වයංක්‍රීයව ස්ථාපනය කර ඇති ඕනෑම ගොනුවක් මෙම ගොනුවට එකතු වේ. ඔබ දැනටමත් මෙම ගොනුවේ අතින් පැකේජයක් ස්ථාපනය කරන්නේ නම්, පැකේජය මෙම ගොනුවේ පවතිනු ඇති නමුත් ස්වයංක්‍රීයව ස්ථාපනය කර ඇත: 0 දෙවන පේළියේ. එය මකා නැත.

සටහන: අපේක්ෂිත පරිදි වඩා හොඳ පිළිතුරු ගොනු ස්ථානගත කිරීම් වෙනස් වී ඇත්නම් ක්‍රියා කිරීමට ඉඩ ඇත. ලිපිගොනු පිහිටීම පිළිබඳ තොරතුරු ප්‍රයෝජනවත් නම් මම මගේ තබා ගන්නෙමි.


1
ජීවිතාරක්ෂාව ස්වයංක්‍රීයව ස්ථාපනය කර ඇති බව සලකුණු කිරීමට මම එම ගොනුව දෙස ඉක්මණින් බැලුවෙමි. මම එය කළ apt-get install lifereaඅතර එය ස්ථාපනය නොකළ නමුත් මට ප්‍රතිදානය ලැබුනේ එය “අතින් ස්ථාපනය කර ඇති ලෙස සලකුණු” කරමිනි. ඊලඟ පේළියට a 0වෙනුවට ආදේශකයක් හැරෙන්නට දැන් ලයිෆ්රියා තවමත් ගොනුවේ ඇත 1. එසේම, ඔබ ඔබේ රීජෙක්ස් රටාව " foobar$"සාධාරණ ලෙස වෙනුවට වෙනස් කළ යුතුය foobar.
උමාං

ඒක ඇත්ත. මගේ වරද, මගේ පද්ධතිය තුළ 0 සමඟ රේඛාවක් නොමැත, නමුත් එය දුර්ලභ සිදුවීමක් විය යුතුය. මම පිළිතුර යාවත්කාලීන කරමි.
ජේවියර් රිවේරා

2

ගොඩක් ගූගල් කිරීමෙන් පසුව, මම මෙම පිටපත එකලස් කිරීමට සමත් වී සිටිමි. එය මට හොඳින් ක්‍රියාත්මක වේ:

# List of all packages currently installed
current=$(dpkg -l | awk '{print $2}' | sort | uniq)

# List of all packages that were installed with the system
pre=$(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort | uniq)

# List of packages that don't depend on any other package
manual=$(apt-mark showmanual | sort | uniq)

# (Current - Pre) ∩ (Manual)
packages=$(comm -12 <(comm -23 <(echo "$current") <(echo "$pre")) <(echo "$manual") )

for pack in $packages; do
    packname=$(echo $pack | cut -f 1 -d ":")
    desc=$(apt-cache search "^$packname$" | sed -E 's/.* - (.*)/\1/')
    date=$(date -r /var/lib/dpkg/info/$pack.list)

    echo "# $desc"
    echo "# $date"
    echo "sudo apt-get install $pack"
    echo -e ""
done

sort -uඒ වෙනුවට ඔබට භාවිතා කළ හැකිය sort | unique. apt-markගෘහ නිර්මාණ ශිල්පය නොපෙන්වන පරිදි , ඔබ එය සැකසීමට පෙර (හෝ භාවිතා කිරීමට dpkg-query -W -f='${Package}\n') dpkg හි ප්‍රතිදානයෙන් ඉවත් කළ යුතුය . මීට අමතරව, දැනට ස්ථාපනය කර නොමැති සමහර පැකේජ dpkg ලැයිස්තුගත කළ හැකිය. "ඩෙස්ක්" සඳහා, ඔබට `dpkg-query -W -f = '# $ inary ද්විමය: සාරාංශය} \ n' $ ඇසුරුම භාවිතා කළ හැකිය, එය වේගවත්ය.
jarno

ඔහ්, apt-markසමහර පැකේජ සඳහා ගෘහ නිර්මාණ ශිල්පය ප්‍රදර්ශනය කළ හැකි නමුත් බොහෝ දෙනෙකුට නොවේ dpkg -l.
jarno

apt-cache searchමන්දගාමී වේ. Help.ubuntu.com/community/ListInstaledPackagesByDate වැනි දෙයක් භාවිතා කර කල්තියාම ස්ථාපනය කරන ලද දිනයන් ලැයිස්තුවක් ලබා ගැනීම වඩාත් කාර්යක්ෂම විය හැකිය
දෘෂ්ටි චක්‍රීය

1

ලී ලො පැවසූ පරිදි, apt-mark showautoස්වයංක්‍රීයව ස්ථාපනය කර ඇති දේවල් පිළිබඳ මේද ලැයිස්තුවක් ඔබට ලබා දිය යුතුය.

දැන් අතින් ස්ථාපනය කර ඇති දේවල් පෙන්වීමට, යෝග්‍යතාව සඳහා සුන්දර සරල සෙවුම් විකරණකාරකයක් ඇති බව පෙනේ. නමුත් ඔබට එය කිරීමට අවශ්‍ය නැත. ඔබට රොකට් විද්‍යාවක් කරන විශාල බාෂ් විධානයක් ලිවීමට අවශ්‍යයි.

සටහන: මෙය ඔබගේ සියලු මිතුරන්ට දැවැන්ත බැෂ් විධාන කඩ කිරීම කෙතරම් සිසිල්ද යන්න පිළිබඳ නිදර්ශනයකි.

comm -3  <(dpkg-query --show -f '${Package} ${Status}\n' | \n
grep "install ok installed" | cut --delimiter=' ' -f 1) <(apt-mark showauto)

කියවීමේ හැකියාව සඳහා මම එය පේළි දෙකකට කඩා දැමුවෙමි. මෙය කරන්නේ කුමක්ද?

  • පළමුව අපි ස්ථාපනය කර ඇති පැකේජ ලැයිස්තුවක් සඳහා dpkg විමසමු.
  • ඇත්ත වශයෙන්ම ස්ථාපනය කර ඇති ඒවා සඳහා අපි ඒවා පෙරහන් කරන්නෙමු (අවශේෂ වින්‍යාසය පමණක් නොවේ)
  • අපි තත්වය කපා දමමු
  • අපි එම ලැයිස්තුව ස්වයංක්‍රීය ලැයිස්තුව සමඟ සංසන්දනය කරමු apt-mark
  • අපිට පුළුවන් අපිට පුළුවන් නිසා.

Dpkg බොහෝ විට ස්ථාපනය කර නොමැති පැකේජ පෙන්වන බැවින් මෙය නිවැරදි යැයි මට සැකයි
txwikinger

ඔබ අදහස් කරන දේ මම දනිමි නමුත් මගේ බාෂ්-ෆු ප්‍රමාණවත් නොවේ. මම දන්නවා ඔබට dpkg-query වෙතින් තත්වය පෙන්විය හැකි අතර, එය පහත් කොට තත්ත්වය කපා දමන්න. මම යන්නම්.
ඔලි

comm -3 <(dpkg -l | grep '^ii' | cut -d \ -f 3|sort) <(apt-mark showauto|sort)නිසි ලෙස වඩා හොඳය;)
LassePoulsen

0

මෙය ප්‍රයෝජනවත් දැයි විශ්වාස නැත, නමුත් වර්තමාන පරිශීලකයා විසින් මෑතකදී අතින් ස්ථාපනය කරන ලද පැකේජ සොයා ගැනීමට, ඉතිහාසය සොයන්න. උදා, සඳහා bash:

$ history | egrep '\bapt\b'

විශේෂිත පැකේජ සඳහා පරීක්ෂා කිරීම සඳහා grep වෙනස් කරන්න.


-1

මෙය අතින් ස්ථාපනය කර ඇති සියලුම පැකේජ ලැයිස්තුගත නොකරනු ඇත: පරායත්තතා, අස්ථාපනය කළ පැකේජ, පද්ධති ස්ථාපනය අතරතුර ස්ථාපනය කර ඇති පැකේජ.

unopts() {
  in=`cat`
  echo "$in" | sed -r 's/ --[^ ]+//g;s/ -[^ ]+//g'
}

list() {
  cat '/var/log/apt/history.log' |
  grep --color=never -v '\-o APT::Status-Fd=4 \-o APT::Keep-Fds::=5 \-o APT::Keep-Fds::=6' |
  egrep --color=never "Commandline: apt-get.* $1" |
  sed -r "s/Commandline: apt-get//;s/ $1//" |
  unopts |
  tr ' ' '\n' |
  sed '/^$/d'
}

hapt() {
  tmp=`mktemp -d`
  installed=$tmp/installed
  deleted=$tmp/deleted
  dpkg=$tmp/dpkg
  list 'install' > $installed
  list '(remove|purge|autoremove)' > $deleted
  dpkg --get-selections |
  grep -v 'deinstall' |
  cut -f 1 > $dpkg
  while read package
  do
    sed -i "0,/$package/{//d;}" $installed
  done < $deleted
  while read package
  do
    if [ -z "`grep --color=never "^$package$" $dpkg`" ]
    then
      sed -i "0,/$package/{//d;}" $installed
    fi
  done < $installed
  cat $installed
  rm -r $tmp
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.