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

Если вы ищете готовое решение, и ваши PDF-файлы носят академический характер, вы можете попробовать Zotero, плагин Firefox.

К сожалению, это требует нескольких шагов, каждый из которых может быть немного медленным, если вы пытаетесь работать с большим количеством PDF-файлов одновременно:

Перетащите ваши PDF-файлы в Zotero. Щелкните их правой кнопкой мыши, чтобы получить метаданные (и автоматически загрузите библиографическую информацию). Если файлы были распознаны правильно, щелкните их правой кнопкой мыши, чтобы автоматически переименовать. Экспортируйте или переместите переименованные файлы туда, где они вам нужны.

Ответ на Zotero показывает, как сделать то же самое, используя Менделей. В Zotero этот процесс можно дополнительно автоматизировать с помощью Zotfile. Наконец, вот обширный список потенциально полезных инструментов в этом направлении.

8
задан 26 June 2011 в 20:11

20 ответов

Прежде всего, позвольте мне сказать, что удаление python может привести к тому, что многие основные команды больше не работают. Поэтому я не знаю, будет ли работать следующее.

Во-вторых, я предполагаю, что ошибка package names couldn't be found у вас есть, происходит от неправильного имени в командной строке или из пакета, установленного локально, а не доступный в репозиториях.

Затем, чтобы получить журнал удаленных пакетов, относительно последнего доступного журнала dpkg (я не думаю, что вам нужно учитывать старые журналы):

awk '$3 == "remove" { print $1, $2, $4 }' /var/log/dpkg.log | tee list

Затем отредактируйте файл list, созданный в текущем каталоге, и оставите строки только относительно пакетов, которые вы хотите переустановить, на основе метки времени строки. Скажем, вы сохранили измененный файл на list-mod.

Чтобы переустановить эти пакеты, используйте следующую команду:

sudo apt-get --simulate install $(awk '{ print $3 }' list-mod)

Я вставил параметр --simulate, чтобы увидеть, что команда сделал бы. Если это все в порядке, повторите команду с удалением этой опции.

Если команда говорит, что некоторые пакеты не могут быть найдены, просто удалите их из list-mod и повторите попытку.

15
ответ дан 25 May 2018 в 20:06
  • 1
    спасибо, я смог переустановить нужные мне пакеты! Один вопрос, хотя в журнале программного центра больше удалено более 200 пакетов, но в файле списка было около 150, означает ли это, что dpkg.log не содержит автоматические установки / зависимые пакеты? снова спасибо за это решение :) – Logan 26 June 2011 в 18:13
  • 2
    Этот файл журнала содержит каждый установленный, обновленный, удаленный или очищенный пакет и с каждым приложением от dpkg до apt-get, aptitude, Synaptic, Software Center, gdebi и т. Д. Вы можете посмотреть на более старые [ f5], см. ls -lrt /var/log/dpkg.log*. – enzotib 26 June 2011 в 18:19
  • 3
    @enzotib Я запустил скрипт для очистки старых заголовков linux, и я думаю, что регулярное выражение соответствовало многим пакетам, которые я не хотел удалять (очень важные!). Ваш ответ спас меня от определенной катастрофы. – shivisuper 28 June 2016 в 11:28
  • 4
    @enzotib Вы только что спасли меня от переустановки моей ОС после запуска плохого скрипта. Благодаря! – brndn2k 9 April 2018 в 11:24

Прежде всего, позвольте мне сказать, что удаление python может привести к тому, что многие основные команды больше не работают. Поэтому я не знаю, будет ли работать следующее.

Во-вторых, я предполагаю, что ошибка package names couldn't be found у вас есть, происходит от неправильного имени в командной строке или из пакета, установленного локально, а не доступный в репозиториях.

Затем, чтобы получить журнал удаленных пакетов, относительно последнего доступного журнала dpkg (я не думаю, что вам нужно учитывать старые журналы):

awk '$3 == "remove" { print $1, $2, $4 }' /var/log/dpkg.log | tee list

Затем отредактируйте файл list, созданный в текущем каталоге, и оставите строки только относительно пакетов, которые вы хотите переустановить, на основе метки времени строки. Скажем, вы сохранили измененный файл на list-mod.

Чтобы переустановить эти пакеты, используйте следующую команду:

sudo apt-get --simulate install $(awk '{ print $3 }' list-mod)

Я вставил параметр --simulate, чтобы увидеть, что команда сделал бы. Если это все в порядке, повторите команду с удалением этой опции.

Если команда говорит, что некоторые пакеты не могут быть найдены, просто удалите их из list-mod и повторите попытку.

15
ответ дан 25 July 2018 в 21:40

Прежде всего, позвольте мне сказать, что удаление python может привести к тому, что многие основные команды больше не работают. Поэтому я не знаю, будет ли работать следующее.

Во-вторых, я предполагаю, что ошибка package names couldn't be found у вас есть, происходит от неправильного имени в командной строке или из пакета, установленного локально, а не доступный в репозиториях.

Затем, чтобы получить журнал удаленных пакетов, относительно последнего доступного журнала dpkg (я не думаю, что вам нужно учитывать старые журналы):

awk '$3 == "remove" { print $1, $2, $4 }' /var/log/dpkg.log | tee list

Затем отредактируйте файл list, созданный в текущем каталоге, и оставите строки только относительно пакетов, которые вы хотите переустановить, на основе метки времени строки. Скажем, вы сохранили измененный файл на list-mod.

Чтобы переустановить эти пакеты, используйте следующую команду:

sudo apt-get --simulate install $(awk '{ print $3 }' list-mod)

Я вставил параметр --simulate, чтобы увидеть, что команда сделал бы. Если это все в порядке, повторите команду с удалением этой опции.

Если команда говорит, что некоторые пакеты не могут быть найдены, просто удалите их из list-mod и повторите попытку.

15
ответ дан 31 July 2018 в 11:05

Прежде всего, позвольте мне сказать, что удаление python может привести к тому, что многие основные команды больше не работают. Поэтому я не знаю, будет ли работать следующее.

Во-вторых, я предполагаю, что ошибка package names couldn't be found у вас есть, происходит от неправильного имени в командной строке или из пакета, установленного локально, а не доступный в репозиториях.

Затем, чтобы получить журнал удаленных пакетов, относительно последнего доступного журнала dpkg (я не думаю, что вам нужно учитывать старые журналы):

awk '$3 == "remove" { print $1, $2, $4 }' /var/log/dpkg.log | tee list

Затем отредактируйте файл list, созданный в текущем каталоге, и оставите строки только относительно пакетов, которые вы хотите переустановить, на основе метки времени строки. Скажем, вы сохранили измененный файл на list-mod.

Чтобы переустановить эти пакеты, используйте следующую команду:

sudo apt-get --simulate install $(awk '{ print $3 }' list-mod)

Я вставил параметр --simulate, чтобы увидеть, что команда сделал бы. Если это все в порядке, повторите команду с удалением этой опции.

Если команда говорит, что некоторые пакеты не могут быть найдены, просто удалите их из list-mod и повторите попытку.

15
ответ дан 31 July 2018 в 12:03

Прежде всего, позвольте мне сказать, что удаление python может привести к тому, что многие основные команды больше не работают. Поэтому я не знаю, будет ли работать следующее.

Во-вторых, я предполагаю, что ошибка package names couldn't be found у вас есть, происходит от неправильного имени в командной строке или из пакета, установленного локально, а не доступный в репозиториях.

Затем, чтобы получить журнал удаленных пакетов, относительно последнего доступного журнала dpkg (я не думаю, что вам нужно учитывать старые журналы):

awk '$3 == "remove" { print $1, $2, $4 }' /var/log/dpkg.log | tee list

Затем отредактируйте файл list, созданный в текущем каталоге, и оставите строки только относительно пакетов, которые вы хотите переустановить, на основе метки времени строки. Скажем, вы сохранили измененный файл на list-mod.

Чтобы переустановить эти пакеты, используйте следующую команду:

sudo apt-get --simulate install $(awk '{ print $3 }' list-mod)

Я вставил параметр --simulate, чтобы увидеть, что команда сделал бы. Если это все в порядке, повторите команду с удалением этой опции.

Если команда говорит, что некоторые пакеты не могут быть найдены, просто удалите их из list-mod и повторите попытку.

15
ответ дан 2 August 2018 в 03:16

Прежде всего, позвольте мне сказать, что удаление python может привести к тому, что многие основные команды больше не работают. Поэтому я не знаю, будет ли работать следующее.

Во-вторых, я предполагаю, что ошибка package names couldn't be found у вас есть, происходит от неправильного имени в командной строке или из пакета, установленного локально, а не доступный в репозиториях.

Затем, чтобы получить журнал удаленных пакетов, относительно последнего доступного журнала dpkg (я не думаю, что вам нужно учитывать старые журналы):

awk '$3 == "remove" { print $1, $2, $4 }' /var/log/dpkg.log | tee list

Затем отредактируйте файл list, созданный в текущем каталоге, и оставите строки только относительно пакетов, которые вы хотите переустановить, на основе метки времени строки. Скажем, вы сохранили измененный файл на list-mod.

Чтобы переустановить эти пакеты, используйте следующую команду:

sudo apt-get --simulate install $(awk '{ print $3 }' list-mod)

Я вставил параметр --simulate, чтобы увидеть, что команда сделал бы. Если это все в порядке, повторите команду с удалением этой опции.

Если команда говорит, что некоторые пакеты не могут быть найдены, просто удалите их из list-mod и повторите попытку.

15
ответ дан 4 August 2018 в 19:11

Прежде всего, позвольте мне сказать, что удаление python может привести к тому, что многие основные команды больше не работают. Поэтому я не знаю, будет ли работать следующее.

Во-вторых, я предполагаю, что ошибка package names couldn't be found у вас есть, происходит от неправильного имени в командной строке или из пакета, установленного локально, а не доступный в репозиториях.

Затем, чтобы получить журнал удаленных пакетов, относительно последнего доступного журнала dpkg (я не думаю, что вам нужно учитывать старые журналы):

awk '$3 == "remove" { print $1, $2, $4 }' /var/log/dpkg.log | tee list

Затем отредактируйте файл list, созданный в текущем каталоге, и оставите строки только относительно пакетов, которые вы хотите переустановить, на основе метки времени строки. Скажем, вы сохранили измененный файл на list-mod.

Чтобы переустановить эти пакеты, используйте следующую команду:

sudo apt-get --simulate install $(awk '{ print $3 }' list-mod)

Я вставил параметр --simulate, чтобы увидеть, что команда сделал бы. Если это все в порядке, повторите команду с удалением этой опции.

Если команда говорит, что некоторые пакеты не могут быть найдены, просто удалите их из list-mod и повторите попытку.

15
ответ дан 6 August 2018 в 03:27

Прежде всего, позвольте мне сказать, что удаление python может привести к тому, что многие фундаментальные команды больше не работают.

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

Затем, чтобы получить журнал удаленных пакетов, относительно последнего доступного журнала dpkg (я не знаю, t думаю, что вам нужно учитывать старые журналы):

  awk '$ 3 == "remove" {print $ 1, $ 2, $ 4}' /var/log/dpkg.log |  tee list  

Затем отредактируйте файл , созданный в текущем каталоге, и оставите строки только относительно пакетов, которые вы хотите переустановить, на основе метки времени строки. Скажем, вы сохранили измененный файл в list-mod .

Чтобы переустановить эти пакеты, используйте следующую команду:

  sudo apt-get -  -simulate install $ (awk '{print $ 3}' list-mod)  

Я установил параметр - simulate , чтобы увидеть, что будет делать команда. Если все в порядке, повторите команду с удалением этой опции.

Если команда говорит, что некоторые пакеты не могут быть найдены, просто удалите их из list-mod и повторите попытку.

15
ответ дан 7 August 2018 в 21:14

Прежде всего, позвольте мне сказать, что удаление python может привести к тому, что многие фундаментальные команды больше не работают.

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

Затем, чтобы получить журнал удаленных пакетов, относительно последнего доступного журнала dpkg (я не знаю, t думаю, что вам нужно учитывать старые журналы):

  awk '$ 3 == "remove" {print $ 1, $ 2, $ 4}' /var/log/dpkg.log |  tee list  

Затем отредактируйте файл , созданный в текущем каталоге, и оставите строки только относительно пакетов, которые вы хотите переустановить, на основе метки времени строки. Скажем, вы сохранили измененный файл в list-mod .

Чтобы переустановить эти пакеты, используйте следующую команду:

  sudo apt-get -  -simulate install $ (awk '{print $ 3}' list-mod)  

Я установил параметр - simulate , чтобы увидеть, что будет делать команда. Если все в порядке, повторите команду с удалением этой опции.

Если команда говорит, что некоторые пакеты не могут быть найдены, просто удалите их из list-mod и повторите попытку.

15
ответ дан 10 August 2018 в 09:33

Прежде всего, позвольте мне сказать, что удаление python может привести к тому, что многие фундаментальные команды больше не работают.

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

Затем, чтобы получить журнал удаленных пакетов, относительно последнего доступного журнала dpkg (я не знаю, t думаю, что вам нужно учитывать старые журналы):

  awk '$ 3 == "remove" {print $ 1, $ 2, $ 4}' /var/log/dpkg.log |  tee list  

Затем отредактируйте файл , созданный в текущем каталоге, и оставите строки только относительно пакетов, которые вы хотите переустановить, на основе метки времени строки. Скажем, вы сохранили измененный файл в list-mod .

Чтобы переустановить эти пакеты, используйте следующую команду:

  sudo apt-get -  -simulate install $ (awk '{print $ 3}' list-mod)  

Я установил параметр - simulate , чтобы увидеть, что будет делать команда. Если все в порядке, повторите команду с удалением этой опции.

Если команда говорит, что некоторые пакеты не могут быть найдены, просто удалите их из list-mod и повторите попытку.

15
ответ дан 13 August 2018 в 15:42
  • 1
    спасибо, я смог переустановить нужные мне пакеты! Один вопрос, хотя в журнале программного центра больше удалено более 200 пакетов, но в файле списка было около 150, означает ли это, что dpkg.log не содержит автоматические установки / зависимые пакеты? снова спасибо за это решение :) – Logan 26 June 2011 в 18:13
  • 2
    Этот файл журнала содержит каждый установленный, обновленный, удаленный или очищенный пакет и с каждым приложением от dpkg до apt-get , aptitude , Synaptic, Software Center, gdebi и т. Д. Вы можете посмотреть более старые файлы dpkg.log , см. [D5] ls -lrt /var/log/dpkg.log* [ ! d5]. – enzotib 26 June 2011 в 18:19
  • 3
    @enzotib Я запустил скрипт для очистки старых заголовков linux, и я думаю, что регулярное выражение соответствовало многим пакетам, которые я не хотел удалять (очень важные!). Ваш ответ спас меня от определенной катастрофы. – shivisuper 28 June 2016 в 11:28
  • 4
    @enzotib Вы только что спасли меня от переустановки моей ОС после запуска плохого скрипта. Благодаря! – brndn2k 9 April 2018 в 11:24

Итак, я совершу подобную ошибку: sudo apt-get purge python3.6* вместо sudo apt-get purge python3.6.*.

Я смог исправить ее довольно быстро, выполнив следующие шаги:

Открыл журнал vim /var/log/history.log. Искал мою неудачную команду с помощью команды vim /python3.6\*. Была строка Purge: unity-control-center-signon:amd64 (0.1.7~+14.04.20140211.2-0ubuntu4), ... с длинным списком очищенных пакетов (в случае удаления она начнется с Remove:), которую я скопировал в другой файл без части Purge: для работы с ним. В этом файле я запустил команду vim: %s/:[^,]*,//g, которая удалила часть версии и оставила мне список пакетов unity-control-center-signon lxc .... Наконец, я скопировал строку с предыдущего шага и запустил: sudo apt-get install unity-control-center-signon lxc ..., и именно так оно и было исправлено.
2
ответ дан 25 May 2018 в 20:06

Итак, я совершу подобную ошибку: sudo apt-get purge python3.6* вместо sudo apt-get purge python3.6.*.

Я смог исправить ее довольно быстро, выполнив следующие шаги:

Открыл журнал vim /var/log/history.log. Искал мою неудачную команду с помощью команды vim /python3.6\*. Была строка Purge: unity-control-center-signon:amd64 (0.1.7~+14.04.20140211.2-0ubuntu4), ... с длинным списком очищенных пакетов (в случае удаления она начнется с Remove:), которую я скопировал в другой файл без части Purge: для работы с ним. В этом файле я запустил команду vim: %s/:[^,]*,//g, которая удалила часть версии и оставила мне список пакетов unity-control-center-signon lxc .... Наконец, я скопировал строку с предыдущего шага и запустил: sudo apt-get install unity-control-center-signon lxc ..., и именно так оно и было исправлено.
2
ответ дан 25 July 2018 в 21:40

Итак, я совершу подобную ошибку: sudo apt-get purge python3.6* вместо sudo apt-get purge python3.6.*.

Я смог исправить ее довольно быстро, выполнив следующие шаги:

Открыл журнал vim /var/log/history.log. Искал мою неудачную команду с помощью команды vim /python3.6\*. Была строка Purge: unity-control-center-signon:amd64 (0.1.7~+14.04.20140211.2-0ubuntu4), ... с длинным списком очищенных пакетов (в случае удаления она начнется с Remove:), которую я скопировал в другой файл без части Purge: для работы с ним. В этом файле я запустил команду vim: %s/:[^,]*,//g, которая удалила часть версии и оставила мне список пакетов unity-control-center-signon lxc .... Наконец, я скопировал строку с предыдущего шага и запустил: sudo apt-get install unity-control-center-signon lxc ..., и именно так оно и было исправлено.
2
ответ дан 31 July 2018 в 11:05

Итак, я совершу подобную ошибку: sudo apt-get purge python3.6* вместо sudo apt-get purge python3.6.*.

Я смог исправить ее довольно быстро, выполнив следующие шаги:

Открыл журнал vim /var/log/history.log. Искал мою неудачную команду с помощью команды vim /python3.6\*. Была строка Purge: unity-control-center-signon:amd64 (0.1.7~+14.04.20140211.2-0ubuntu4), ... с длинным списком очищенных пакетов (в случае удаления она начнется с Remove:), которую я скопировал в другой файл без части Purge: для работы с ним. В этом файле я запустил команду vim: %s/:[^,]*,//g, которая удалила часть версии и оставила мне список пакетов unity-control-center-signon lxc .... Наконец, я скопировал строку с предыдущего шага и запустил: sudo apt-get install unity-control-center-signon lxc ..., и именно так оно и было исправлено.
2
ответ дан 31 July 2018 в 12:03

Итак, я совершу подобную ошибку: sudo apt-get purge python3.6* вместо sudo apt-get purge python3.6.*.

Я смог исправить ее довольно быстро, выполнив следующие шаги:

Открыл журнал vim /var/log/history.log. Искал мою неудачную команду с помощью команды vim /python3.6\*. Была строка Purge: unity-control-center-signon:amd64 (0.1.7~+14.04.20140211.2-0ubuntu4), ... с длинным списком очищенных пакетов (в случае удаления она начнется с Remove:), которую я скопировал в другой файл без части Purge: для работы с ним. В этом файле я запустил команду vim: %s/:[^,]*,//g, которая удалила часть версии и оставила мне список пакетов unity-control-center-signon lxc .... Наконец, я скопировал строку с предыдущего шага и запустил: sudo apt-get install unity-control-center-signon lxc ..., и именно так оно и было исправлено.
2
ответ дан 2 August 2018 в 03:16

Итак, я совершу подобную ошибку: sudo apt-get purge python3.6* вместо sudo apt-get purge python3.6.*.

Я смог исправить ее довольно быстро, выполнив следующие шаги:

Открыл журнал vim /var/log/history.log. Искал мою неудачную команду с помощью команды vim /python3.6\*. Была строка Purge: unity-control-center-signon:amd64 (0.1.7~+14.04.20140211.2-0ubuntu4), ... с длинным списком очищенных пакетов (в случае удаления она начнется с Remove:), которую я скопировал в другой файл без части Purge: для работы с ним. В этом файле я запустил команду vim: %s/:[^,]*,//g, которая удалила часть версии и оставила мне список пакетов unity-control-center-signon lxc .... Наконец, я скопировал строку с предыдущего шага и запустил: sudo apt-get install unity-control-center-signon lxc ..., и именно так оно и было исправлено.
2
ответ дан 4 August 2018 в 19:11

Итак, я совершу подобную ошибку: sudo apt-get purge python3.6* вместо sudo apt-get purge python3.6.*.

Я смог исправить ее довольно быстро, выполнив следующие шаги:

Открыл журнал vim /var/log/history.log. Искал мою неудачную команду с помощью команды vim /python3.6\*. Была строка Purge: unity-control-center-signon:amd64 (0.1.7~+14.04.20140211.2-0ubuntu4), ... с длинным списком очищенных пакетов (в случае удаления она начнется с Remove:), которую я скопировал в другой файл без части Purge: для работы с ним. В этом файле я запустил команду vim: %s/:[^,]*,//g, которая удалила часть версии и оставила мне список пакетов unity-control-center-signon lxc .... Наконец, я скопировал строку с предыдущего шага и запустил: sudo apt-get install unity-control-center-signon lxc ..., и именно так оно и было исправлено.
2
ответ дан 6 August 2018 в 03:27

Итак, я совершу подобную ошибку: sudo apt-get purge python3.6 * вместо sudo apt-get purge python3.6. * . [ ! d16]

Я смог исправить его довольно быстро, выполнив следующие шаги:

  1. Открыл журнал vim /var/log/history.log.
  2. Искал мою неудачную команду с помощью команды vim /python3.6 \ * .
  3. Была строка Purge: unit-control-center -signon: amd64 (0.1.7 ~ + 14.04.20140211.2-0ubuntu4), ... с длинным списком очищенных пакетов (в случае его удаления он начнется с Remove: ) , который я скопировал в другой файл без части Purge: , чтобы работать с ним.
  4. В этом файле я запустил команду vim: % s /: [^, ] *, // g , который удалил часть версии и оставил мне список пакетов unity-control-center-signon lxc ... .
  5. Наконец, я скопировал строку с предыдущего шага и запустил: sudo apt-get install unit-control-center-signon lxc ... , и вот как это исправлено.
  6. [!d 15]
2
ответ дан 7 August 2018 в 21:14

Итак, я совершу подобную ошибку: sudo apt-get purge python3.6 * вместо sudo apt-get purge python3.6. * . [ ! d16]

Я смог исправить его довольно быстро, выполнив следующие шаги:

  1. Открыл журнал vim /var/log/history.log.
  2. Искал мою неудачную команду с помощью команды vim /python3.6 \ * .
  3. Была строка Purge: unit-control-center -signon: amd64 (0.1.7 ~ + 14.04.20140211.2-0ubuntu4), ... с длинным списком очищенных пакетов (в случае его удаления он начнется с Remove: ) , который я скопировал в другой файл без части Purge: , чтобы работать с ним.
  4. В этом файле я запустил команду vim: % s /: [^, ] *, // g , который удалил часть версии и оставил мне список пакетов unity-control-center-signon lxc ... .
  5. Наконец, я скопировал строку с предыдущего шага и запустил: sudo apt-get install unit-control-center-signon lxc ... , и вот как это исправлено.
  6. [!d 15]
2
ответ дан 10 August 2018 в 09:33

Итак, я совершу подобную ошибку: sudo apt-get purge python3.6 * вместо sudo apt-get purge python3.6. * . [ ! d16]

Я смог исправить его довольно быстро, выполнив следующие шаги:

  1. Открыл журнал vim /var/log/history.log.
  2. Искал мою неудачную команду с помощью команды vim /python3.6 \ * .
  3. Была строка Purge: unit-control-center -signon: amd64 (0.1.7 ~ + 14.04.20140211.2-0ubuntu4), ... с длинным списком очищенных пакетов (в случае его удаления он начнется с Remove: ) , который я скопировал в другой файл без части Purge: , чтобы работать с ним.
  4. В этом файле я запустил команду vim: % s /: [^, ] *, // g , который удалил часть версии и оставил мне список пакетов unity-control-center-signon lxc ... .
  5. Наконец, я скопировал строку с предыдущего шага и запустил: sudo apt-get install unit-control-center-signon lxc ... , и вот как это исправлено.
  6. [!d 15]
2
ответ дан 13 August 2018 в 15:42

Другие вопросы по тегам:

Похожие вопросы: