LINUX.ORG.RU
решено ФорумAdmin

Как исправить пакетную базу в Debian-базед дистрибутиве?

 , , ,


0

2

Дистрибутив Astra 1.6.

В момент установки пакета с большим количеством зависимостей веселые ребята принудительно потушили сервер. Когда сервер включили, выяснилось, что невозможно устанавливать некоторые пакеты. Они просто не видны.

Пробовали делать во всяких последовательностях:

apt update
apt upgrade
apt -f install
apt-get clean

Толку никакого.

Решил проверить, сколько пакетов вообще видно:
apt list | wc -l
1616

А должно быть over 11000, то есть в несколько раз больше. На трех соседних серверах с теми же самыми репозитариями количество пакетов 11293, это никак не 1616.

Вопрос: как восстановить пакетную базу?



Перемещено hobbit из general

★★★★★

Ответ на: комментарий от einhander

Может они за 10 минут развернут из резервной копии и пустят в работу. Сколько бы при их навыках ушло на решение проблемы apt*?

ЗЫ Столько лет прошло, а в apt так и не появились транзакции.

sagittarius
()
Ответ на: комментарий от pihter

Не знаю, что там ТС рефлексирует, но он с 2008го года использует дебиан, даже не пытаясь понять, как работает пакетная система.

Не понимаю пакетную систему APT: есть пакет или нет пакета? (комментарий)

И, судя по

Пробовали делать во всяких последовательностях

до сих пор ни малейшего понятия об этом не имеет. «А давайте повыполняем рандомные команды, которые непонятно что делают, но иногда в интернете в качестве решения других проблем мелькают», ага.

gremlin_the_red ★★★★★
()
Ответ на: комментарий от einhander

Все виндоус-онли админы, мне известные про такие вещи слыхом не слыхивали, и Винду накатывают только руками.

Или из готовых образов. Или это не настоящие вын админы :) Я не про «Вася, живу по соседству, накачу шинду, заберу деньгу» говорю.

anc ★★★★★
()
Ответ на: комментарий от gremlin_the_red

до сих пор ни малейшего понятия об этом не имеет.

Это точно. Давай, для начала, разберемся хотя бы с этим:

Как узнать список всех пакетов в репозитарии

Три программы, три разных результата.

Плюс, надо разобраться с терминологией, об этом тоже написано.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

dpkg -l показывает список установленных пакетов.

apt-cache search - доступных.

По aptitude надо ман читать, но мне лень.

Но уже видно, что автор по ссылке сравнивает теплое с мягким. Если твои познания на том же уровне, то ты таки не разбираешься от слова совсем.

UPD: Таки почитал man. aptitude показывает виртульные пакеты, apt-cache - нет. Всё описано в документации. Три совершенно разные команды выводят ожидаемо разный результат.

shell-script ★★★★★
()
Последнее исправление: shell-script (всего исправлений: 1)
Ответ на: комментарий от shell-script

dpkg -l показывает список установленных пакетов.

Ты точно с -L не путаешь?

-l, --list package-name-pattern...
               List packages matching given pattern.
-L, --listfiles package-name...
               List files installed to your system from package-name.

Откуда пользователь может получить информацию что -l - это про установленные пакеты?

apt-cache search - доступных.
По aptitude надо ман читать, но мне лень.
Но уже видно, что автор по ссылке сравнивает теплое с мягким.
Если твои познания на том же уровне, то ты таки не разбираешься от слова совсем.

Значит, сматри. Я уже написал, что я не разбираюсь. Если ты вместо ответов по существу на этом техническом форуме будешь писать другим людям что они не разбираются, или плохо понимают невнятную документацию, или в тебе вдруг проснется врач и тебе жгуче захочется ставить психические/психиатрические диагнозы, то ты неиллюзорно рискуешь быть посланным на хуй.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea
       dpkg-query actions
           See dpkg-query(1) for more information about the following actions, and other actions and options not exposed by the dpkg front-end.

           -l, --list package-name-pattern...
               List packages matching given pattern.

           -s, --status package-name...
               Report status of specified package.

(c) man dpkg

DESCRIPTION
       dpkg-query is a tool to show information about packages listed in the dpkg database.

...

If no package-name-pattern is given, list all packages in /var/lib/dpkg/status,
           excluding the ones marked as not-installed (i.e.  those which have been previously purged).
(c) man dpkg-query

Маны читать надо внимательно.

По существу - пожалуйста. Когда я не разбирался, я делал вот так: http://cppmm.blogspot.com/2012/02/debian.html

Но ты уже реинсталлишь систему, поэтому не вижу смысла рассказывать.

И научись нормально общаться, обидчивый ты наш.

shell-script ★★★★★
()
Ответ на: комментарий от shell-script

Маны читать надо внимательно.

В твоей портянке упоминание установленных пакетов нет вообще.

Но хорошо, предположим, нам хотят сказать о том, что мы смотрим на установленные пакеты через отрицание (непонятно зачем, но предположим). Упоминание неустановленных пакетов можно найти только в этой фразе:

If no package-name-pattern is given, list all packages in /var/lib/dpkg/status,
excluding the ones marked as not-installed (i.e. those which have been previously purged).

Если шаблон имени пакета не указан, перечисляются все пакеты в /var/lib/dpkg/status, за исключением тех, которые помечены как неустановленные (т. е. те, которые были ранее очищены).


И вот эта приписка в скобках добавляет непонятности. Что сие значит? Перечисляются все пакеты, которые были ранее очищены, за исключением тех, которые помечены как неустановленные? Или перечисляются все пакеты за исключением тех которые были ранее очищены? Как из этих заковыристых утверждений пользователь должен догадаться, что ему показываются установленные пакеты?

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Мне за тебя весь ман перечитать? Там подробно расписано, что и когда записывается в файл status. А в разделе примеров и вовсе прямым текстом:

EXAMPLES
       To list installed packages related to the editor vi(1) (note that dpkg-query does not load the available file anymore by default, and the dpkg-query
       --load-avail option should be used instead for that):

        dpkg -l '*vi*'

shell-script ★★★★★
()
Последнее исправление: shell-script (всего исправлений: 1)
Ответ на: комментарий от shell-script

Мне за тебя весь ман перечитать?

Если ты так хорошо знаешь английский, тебе бы стоило man перевести. Не за меня, а для всех.

Я смотрю здесь:
https://www.opennet.ru/man.shtml?topic=dpkg&category=1&russian=0

И смотрю здесь:
https://man.cx/dpkg(8)/ru

И там про installed ни слова:

ПРИМЕРЫ
To list packages related to the editor vi(1):

     dpkg -l aq*vi*aq

ПРИМЕРЫ
Чтобы перечислить пакеты, относящиеся к редактору vi:

     dpkg -l ’*vi*’

На опеннете еще и форматирование перевода кривое, загадочное aq вместо ".

Я понимаю, что ты сейчас заведешь волынку про знание онглийскага, но проблема в том, что ты согласился учить буржуинский и развивать англоговорящую среду хотя бы своим присутствием. При этом отстранился от развития русскоговорящей среды, тыкая зачем-то на русскоязычном форуме в английские маны. Я понимаю что для тебя это норма, ты по-другому даже представить себе не можешь. А вот англосацкий мир настолько начал подссыкивать из-за того, что в айтишном пространстве может широко появиться микропроцессор и другие устройства, на который документация и компетенции существуют только на русском, что первое что сделал - заблокировал развитие сектора. Представляешь, какой перекос мы наблюдаем.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от shell-script

Кстати, вот здесь:

https://debian-handbook.info/browse/ru-RU/stable/sect.manipulating-packages-w...

Пишут, что для dpkg опция --list (или -l) показывает список пакетов, известных системе. Обманывают?

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Я понимаю, что ты сейчас заведешь волынку про знание онглийскага

Вот я тут просто мимокродил, но я правильно понял, что ты не в состоянии немного напрячь мозг, и прочитать на простейшем техническом языке оригинала инструкцию, оправдывая это какой-то диванной политотой? И вместо этого, из-за какого-то дебильного принципа, предпочитаешь жрать непонятно кем и как переведённые маны неизвестного срока протухания?

Ну тогда жри свой кактус сам и не захламляй своимим эмоциями технический ресурс, где на русском языке помогояют понять маны, написанные, в том числе, и на английском.

her_s_gory
()
Ответ на: комментарий от Xintrea

Нет, не обманывают. Вот только если не вырывать фразу из контекста и опять же читать ман полностью, то известен системе в данном случае пакет становится только после установки. Это если говорить упрощённо. Перечислять все статусы пакета и когда они могут меняться - не вижу смысла в рамках данной дисскуссии.

shell-script ★★★★★
()
Ответ на: комментарий от Xintrea

Если я займусь переводом всех манов/книг/инструкций/технических статей, которые мне приходится читать ежедневно, мне придётся уволиться с должности системного администратора и на полный день работать переводчиком. Увы, я к этому не готов.

А цитаты я привожу из манов на английском, потому что других у меня в системе нет. Мне даже мысли в голову не пришло искать их в интернете на других языках.

shell-script ★★★★★
()
Ответ на: комментарий от sagittarius

Как минимум в дебиане есть ежедневный бекап status-файла, из которого можно восстановить предыдущее состояние пакетной базы и пофиксить ошибки переустановкой нужных пакетов.

А вообще, сейчас говорить сложно, что там сломалось, возможно, можно и иначе пофиксить. Я подобных сбоев давно не встречал.

shell-script ★★★★★
()
Ответ на: комментарий от shell-script

Нет, не обманывают. Вот только если не вырывать фразу из контекста и опять же читать ман полностью, то известен системе в данном случае пакет становится только после установки.

Это значит, что неустановленные и одновременно не прошедшие через систему dpkg, но присутствующие в репозитариях не будут видны.

Иными словами, в dpkg видны будут либо установленные пакеты, либо установленные и потом удаленные (а значит известные для dpkg). Я правильно понял?

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от her_s_gory

Вот я тут просто мимокродил, но я правильно понял, что ты не в состоянии немного напрячь мозг, и прочитать на простейшем техническом языке оригинала инструкцию

man для dpkg - это не инструкция. Это перечень опций для тех, кто знает как эта хрень устроена из каких-то других источников, мне неизвестных. Прекращай уже подменять понятия и рассказывать что в man-е все написано. Ничего, что должно было бы пролить свет на предметную область, которую автоматизирует dpkg, в мане нет.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Вбиваем в консоль man dpkg:

This manual is intended for users wishing to understand dpkg's command line options and package states in more detail than that provided by dpkg --help.

Копируем и вставляем в переводчик:

Это руководство предназначено для пользователей, желающих разобраться в параметрах командной строки dpkg и состояниях пакетов более подробно, чем в dpkg --help.

есличо: https://translate.google.com/?sl=en&tl=ru&text=This%20manual%20is%20intended%20for%20users%20wishing%20to%20understand%20dpkg%27s%20command%20line%20options%20and%20package%20states%20in%20more%20detail%20than%20that%20provided%20by%20dpkg%20--help.&op=translate

Руководство - это, конечно, не инструкция, как я выразился, но и далеко не подмена понятий, как выразился ты.

Так что давай, ты перестанешь фигнёй заниматься, и примешь то, что тебе тут говорят, вместо своих фантазий.

her_s_gory
()
Ответ на: комментарий от Xintrea

В общем случае, да. Подробнее в man dpkg-query. Например, вот список статусов:

The first three columns of the output show the desired action, the package status, and errors, in that order.

           Desired action:

           u = Unknown
           i = Install
           h = Hold
           r = Remove
           p = Purge

           Package status:

           n = Not-installed
           c = Config-files
           H = Half-installed
           U = Unpacked
           F = Half-configured
           W = Triggers-awaiting
           t = Triggers-pending
           i = Installed

           Error flags:

           <empty> = (none)
           R = Reinst-required

При обычном использовании чаще всего пользователь никогда не встречает ничего кроме ii и un. Во вторую категорию могут попасть пакеты из рекомендуемых, которые никогда не были установлены, если я ничего не путаю. Но список абсолютно всех пакетов, доступных для установки, через dpkg не получить.

shell-script ★★★★★
()
Ответ на: комментарий от her_s_gory

Вбиваем в консоль man dpkg:
Копируем и вставляем в переводчик:

Что и требовалось доказать.

Руководство - это, конечно, не инструкция, как я выразился, но и далеко не подмена понятий, как выразился ты.
Так что давай, ты перестанешь фигнёй заниматься, и примешь то, что тебе тут говорят, вместо своих фантазий.

Как у тебя легко уживаются взаимоисключающие параграфы.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от shell-script

Но список абсолютно всех пакетов, доступных для установки, через dpkg не получить.

Вот, об этом и речь. Я знавал товарища, который утверждал обратное, но выяснить каким образом получить в dpkg список всех пакетов мне так и не удалось.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

dpkg - пакетный менеджер. Он отвечает за зависимости и статусы пакетов. Он ничего не знает про источники и репозитарии, он знает что ему надо, но не знает, что ему доступно.

apt, apt-get/apt-cache, aptitude - надстройки над dpkg, которые уже работают с источниками и умеют искать расширенную информацию о пакетах.

Точно так же, как в rpm-based есть именно rpm и есть urpmi, yum, dnf и прочие.

А особые умельцы используют apt поверх rpm.

shell-script ★★★★★
()
Ответ на: комментарий от Xintrea

Что и требовалось доказать.

Доказать что?!!! Что аноним с ЛОРА не умеет читать и ему лучше дать ссылку на машинный перевод?

Как у тебя легко уживаются взаимоисключающие параграфы.

https://www.youtube.com/watch?v=5GqXFm41h1Y

her_s_gory
()
Ответ на: комментарий от her_s_gory

Доказать что?!!! Что аноним с ЛОРА не умеет читать и ему лучше дать ссылку на машинный перевод?

Я пишу: «man для dpkg - это не инструкция. Это перечень опций»

Ты пишешь/переводишь: «Это руководство предназначено для пользователей, желающих разобраться в параметрах командной строки»

По сути, мы написали одно и то же, только разными словами. Но ты считаешь что это не так, потому что у тебя: http://risovach.ru/upload/2014/09/mem/klichko_62149433_orig_.png

Xintrea ★★★★★
() автор топика