Знакът на КАГАМИ КАГАМИ
kagami.bg/academy · lesson · machine-readable viewUPDATED 2026-10-03
IDENTITY
module
KW I30 · Unwanted package from a factory image: prove it, remove it
series
KAGAMI Way · Track I — Infrastructure
level
Intermediate
duration
~15 min
trust_label
UPDATED 2026-10-03 (apt-get, apt-mark, apt-cache, dpkg commands checked against the Debian manual pages; not run on live hardware in this revision)
language
human view: bg · english edition: /en/academy/moduli/KW_I30_Parasite_Package.html
previous
KW_I29_Five_Untested_Trials.html
next
moduli_index.html · all KAGAMI Way modules (end of track)
PURPOSE

Teach a method for a Debian-family machine whose factory image ships a package nobody chose: gather evidence of where it came from, find what depends on it, measure any claimed harm, remove it with a dry run first, and record the decision. Evidence before verdict; unmeasured claims are labelled as observations.

KEY CONCEPTS
COMMANDS / PATHS
CHECKLIST
NEXT MODULE

moduli_index.html · all KAGAMI Way modules · offer: Quick experiment (kagami.bg/stalbata/)

SOURCES
TAGS
aptdpkgmetapackagedry-runreverse-dependenciesfactory-imagechange-record
ОБНОВЕНО · 03.10.2026

Нежелан пакет от фабричния образ: докажи го, махни го

Новата машина идва с програми, които никой не е поискал. Едни само заемат място, други въртят процесор, трети са вързани за нещо друго и махането им го повлича със себе си. Този урок е методът: първо следа и доказателство, после пробно махане, едва тогава истинско — и запис на решението.

⏱ ~15 мин Средно Инфраструктура apt · dpkg · зависимости · пробно махане
Командният ред на машината (apt, dpkg)🔒 локално
🔄
ОБНОВЕНО · 03.10.2026 — какво
Урокът е обобщен от наш по-ранен случай до общ метод за Debian-семейство системи. Конкретните имена на програми, машини, числа и вътрешни пътища са махнати. Командите apt-get, apt-mark, apt-cache и пътят на дневника на dpkg са сверени с ръководствата на Debian (apt 3.0.3). Добавено: поглед към обратните зависимости с --installed и правилото „измерено или не“ за всяко твърдение за вреда.
⚠️ Непроверено: командите не са пускани от нас на жива машина в тази ревизия — затова етикетът е ОБНОВЕНО, не ТЕСТВАНО и не ПРОВЕРЕНО. Поведението на разни дистрибуции извън Debian-семейството не е проверявано.

01Какво ще научиш

02Преди да започнеш

⚠️
Какво НЕ е доказано тук
Командите са сверени с официалните ръководства, но не са пускани от нас в тази ревизия. Примерите са общи: <пакет>, <метапакет>, <програма> са плейсхолдъри — не изпълнявай нищо, преди да ги замениш и да прочетеш пробния резултат.

03Стъпки

  1. Следа: кога и с какво е дошъл

    Дневникът на dpkg пази кога е инсталиран всеки пакет (път по подразбиране: /var/log/dpkg.log, по-старите са в dpkg.log.1 и т.н.). Намери реда на пакета и виж какво още е инсталирано в същия час. Ако в една минута са дошли стотици пакети, най-вероятно това е образът или масова инсталация, не наша команда.

    bash · кога е инсталиран пакетът
    # редовете за пакета; сменете <пакет>
    grep " install <пакет>" /var/log/dpkg.log*
    # пакети, инсталирани ръчно (поискани изрично)
    apt-mark showmanual
    ⚠️
    Следа, не присъда
    „Дошъл е с образа“ е извод от дата и съседни инсталации. Записвай го като извод. Дневникът може да е завъртян и старите редове да ги няма.
  2. Кой го държи: обратните зависимости

    Преди да махнеш нещо, виж кой го изисква. Ако друг инсталиран пакет зависи от него, махането му повлича и този пакет. Особено внимавай за метапакети — пакети, които са само списък от други пакети (например „целият работен плот“).

    bash · кой го изисква и какво носи метапакетът
    # само инсталирани пакети, които зависят от него
    apt-cache rdepends --installed <пакет>
    # какво изисква самият метапакет
    apt-cache depends <метапакет>
    ✅
    Правило
    Ако обратните зависимости са само метапакети, не махай „на сляпо“. Първо прочети списъка на метапакета — стъпка 5 обяснява защо.
  3. Какво реално прави: измерено или не

    Най-честата грешка е да се напише „вреди“ без числа. Затова при всяко твърдение за вреда го отбележи: измерено (има число, дневник или копие преди и след) или наблюдение (така ни се е струвало). Типични неща, които се мерят: заето място, процеси, които висят и ядат процесор, грешки в дневниците.

    Една класическа причина за висящ процес: програма, която при стартиране пуска друг, помощен процес. Когато изтече времето на извикващата страна и тя убие само първия, помощният остава сирак и продължава да работи. Затова при „ядро на 100%“ погледни и родителя, не само името на програмата.

    bash · кои процеси ядат най-много процесор (не е пускано)
    ps aux --sort=-%cpu | head -n 10
    ℹ️
    Честният запис
    Пиши „измерено: …; не е измерено: …“. Така следващият човек знае какво е факт и какво е предположение.
  4. Провери собствения си код

    Нежеланият за теб пакет може да е нужен на твой скрипт, който никой не е записал като зависимост. Потърси името на програмата във всичките си скриптове, преди да махнеш пакета. Ако намериш повикване — първо подготви заместител и го изпитай, после махай.

    bash · къде се вика програмата
    grep -rI "<програма>" <папка-със-скриптовете>
  5. Пробно махане и маркиране на останалото

    apt-get -s (--simulate) пресмята какво би станало и нищо не променя. Редовете Remv са каквото ще се махне. Прочети ги един по един — ако виждаш програма, която искаш, спри.

    Ако пакетът е част от метапакет, махането му маха и метапакета, а всичко, което метапакетът е донесъл, става „ненужно“ и един по-късен autoremove може да го почисти. Лечението е да маркираш останалото като ръчно инсталирано, преди да махаш.

    bash · пробно, после маркиране
    # 1. пробно: какво ще падне
    apt-get -s purge <пакет>
    # 2. прегледай какво носи метапакетът и избери какво да остане
    apt-cache depends <метапакет>
    # 3. маркирай избраното като ръчно (списъкът е твой)
    apt-mark manual <пакет-1> <пакет-2>
    ⚠️
    Капан: autoremove на сляпо
    След махането apt-get autoremove маха пакети, инсталирани автоматично и вече ненужни. Ако не си маркирал останалото, може да отнесе още програми. Първо го пусни пробно: apt-get -s autoremove.
  6. Истинско махане, проверка и запис

    Когато пробният резултат те устройва, махни пакета. purge маха и конфигурационните файлове; remove ги оставя. Избери осъзнато: ако може да се наложи връщане, remove е по-мек.

    bash · махане и проверка
    apt-get purge <пакет>
    # проверка: програмата вече я няма
    command -v <програма> || echo "няма я"
    # autoremove — само пробно
    apt-get -s autoremove

    Накрая запиши решението: какво е махнато, кога, защо, какво го замества и как се връща. Без запис следващата актуализация или следващият човек може да върне пакета и да започне отначало.

    ✅
    Правило
    Първо пробно, после истинско, и никога автоматично почистване на сляпо. Всяка стъпка оставя следа.

04Проверка

1. Какво ти казва редът за пакета в дневника на dpkg?

2. Защо не пускаш autoremove веднага след purge?

3. Кое е правилно преди purge?

4. Как пишеш за вредата от пакета?

05Какво следва

06Източници

  1. apt-get(8) — -s/--simulate, purge, remove, autoremove (apt 3.0.3; сверено 03.10.2026).
  2. apt-mark(8) — manual, auto, showmanual.
  3. apt-cache(8) — depends, rdepends, --installed.
  4. dpkg(1) — дневникът /var/log/dpkg.log.
  5. Собствен по-ранен случай на КАГАМИ с нежелан пакет на AI машина — обобщен в метод; конкретните данни не са публикувани и не са повторени за тази ревизия.