Как переустановить пакет с помощью «apt-get»?

186

Кажется, у меня aptitudeкак-то сломалось

sudo aptitude update
0% [Working]Segmentation fault

dmesg
[223282.616599] aptitude[30972]: segfault at 67707f ip 7f954dcfae5d sp 7ffff5a5f950 error 4 in libapt-pkg-libc6.7-6.so.4.6.0[7f954dca5000+bd000]

Поэтому я хотел бы переустановить aptitudeс помощью apt-get.

К сожалению, кажется apt-get, нет возможности переустановить.

Как я мог aptitudeснова приступить к работе?

Вполне возможно, что я нашел основную причину ошибки в aptitude. Вот как я могу воспроизвести это:

  1. 'ssh' удаленный вход в систему на компьютере Debian через терминал Cygwin rxvt (из 64-разрядной версии Windows 7 на немецком языке).
  2. Увеличьте окно rxvt, чтобы оно охватывало два монитора (да, у меня есть два монитора)
  3. Беги aptitude update. Примечание: когда я изменяю размер терминала rxvt на нормальный, у меня не возникает этих ошибок сегментации!
Vokuhila-Oliba
источник

Ответы:

320
$ man apt-get | grep reinsta -A2
       --reinstall
           Re-Install packages that are already installed and at the newest
           version. Configuration Item: APT::Get::ReInstall.

Итак, чтобы использовать его для переустановки aptitudeиспользуйте:

sudo apt-get install --reinstall aptitude
user23307
источник
14
что это -A5ты за фигня?
Вокухила-Олиба
86
человек grep | grep - "-A"
grawity
34
Что это --ты за фигня?
Дести
13
man getopt, смотрите подPARSING
Тино
28
-A5показывает совпавшую линию плюс следующие 5 строк. --останавливает синтаксический анализ параметров, таким образом интерпретируя все, что следует после, как позиционные аргументы, избегая необходимости экранировать черту в выражении, -Aкоторое иначе интерпретировалось бы как опция для grep.
jjmontes
115

Вы можете переустановить пакет с помощью sudo apt-get install --reinstall packagename. Это полностью удаляет пакет (но не пакеты, которые зависят от него), а затем переустанавливает пакет.

Это может быть удобно, когда пакет имеет много обратных зависимостей.

Милад Хаджави
источник
10
Спасибо за то, что вы единственный правильный, полный, не прихотливый ответ.
Cerin
6
@Cerin: я бы не назвал другие ответы чрезмерно ворчливыми: даже «прочитайте справочную страницу», на самом деле дал ответ, а также то, как его найти.
Дэвид Спиллетт
45
@DavidSpillett, я категорически не согласен. Страницы руководства обычно очень плохо написаны и очень недружелюбны к новичкам. Например, в абзаце опции «--reinstall» не упоминается, что вы должны использовать его с аргументом «install». Новичок может по праву спросить: «Почему я должен сказать ему, чтобы установить И переустановить?» Ответ, в котором кто-то говорит RTFM, является наихудшим ответом, и мне больно видеть его с большинством голосов, особенно когда полный и действительно полезный ответ находится в самом низу.
Cerin
20

Иногда вам нужно восстановить конфигурационные файлы тоже! не просто переустановить.

sudo apt-get install --reinstall xxxx

Переустановите приложение, сохраните файлы конфигурации.

Это может быть полезно, но иногда вам нужно начинать с нуля, поэтому я использую следующее:

sudo dpkg -r xxxx //to remove that xxxx package
sudo dpkg -P xxxx //to purge all related files

тогда

sudo apt-get install xxxx
andreskwan
источник
6
И если вам нужно восстановить только конфигурационные файлы, в некоторых случаях (если они управляются ucf) вы должны использовать UCF_FORCE_CONFFMISS=1 apt-get --reinstall install [pkgname].
Скиппи ле Гран Гуру
2
Этот ответ заслуживает БОЛЬШОГО комментария. Это то, что вам нужно, когда вы хотите «полностью переустановить» пакет. Например, простой --reinstall vsftpd не создает заново файл конфигурации, даже если файл больше не существует. «Remove + Purge + (Re) install» выполняет эту работу.
Kar.ma
13

Вы должны безопасно удалить aptitude и переустановить, так как это не повлияет на другие утилиты apt. Итак: apt-get remove aptitudeследует apt-get install aptitude, или , если по- прежнему не удается , попробуйте apt-get purge aptitudeследует apt-get install aptitude.

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

Дэвид Спиллетт
источник
Большое спасибо! apt-get removeа затем apt-get installсделал трюк!
Вокухила-Олиба
Давным-давно я делал вещи, похожие a full filesystem checkили похожие. Не могли бы вы дать мне краткий совет, как это сделать?
Вокухила-Олиба
1
fsck -f <block_device>такие как fsck /dev/sda1. Файловая система должна быть размонтирована или смонтирована только для чтения, так как это, вероятно, ваша корневая файловая система, которую вы должны перезагрузить в однопользовательском режиме или загрузиться с чего-то другого, например, с живого компакт-диска.
Дэвид Спиллетт
2
Вы можете использовать, tune2fsчтобы пометить файловую систему как смонтированную больше раз, чем установленное ограничение, что должно вызвать проверку при следующей загрузке. Предполагая, что файловая система - ext2 / 3/4:, tune2fs -C 99 <device>или если у вас отключена проверка на основе счетчика монтирования, включите ее одновременно с чем-то вроде tune2fs -c 17 -C 99 <device>.
Дэвид Спиллетт
2
touch / forcefsck; перезагрузка
user23307
1
sudo apt remove --purge package
sudo apt install package

Как будто вы никогда не устанавливали пакет раньше. Я делаю это часто с движением и такими вещами.

Niwla23
источник