Старый вопрос, я вижу, но в аналогичной ситуации сейчас. Обычно я использую то sudo aptitude install -P PACKAGE_NAME
, что всегда спрашиваю перед установкой. Однако теперь в Debian по умолчанию менеджер пакетов есть apt|apt-get
и у него нет этой функциональности. Конечно, я все еще могу установить aptitude
и использовать его ... Однако я написал небольшую функцию / скрипт оболочки sh / bash для apt-get
запроса перед установкой. Это действительно сырой, и я написал это как функцию в моем терминале.
$ f () { sudo apt-get --simulate install "$@" | grep -v '^Inst\|^Conf'; read -p 'Do You want to continue (y/N): ' ans; case $ans in [yY] | [yY][eE][sS]) sudo apt-get -y install "$@";; *);; esac; }
Теперь давайте сделаем это более понятным:
f () {
# Do filtered simulation - without lines contains 'Inst' and 'Conf'
sudo apt-get --simulate install "$@" | grep -v '^Inst\|^Conf';
# Interact with user - If You want to proceed and install package(s),
# simply put 'y' or any other combination of 'yes' answer and tap ENTER.
# Otherwise the answer will be always not to proceed.
read -p 'Do You want to continue (y/N): ' ans;
case $ans in
[yY] | [yY][eE][sS])
# Because we said 'yes' I put -y to proceed with installation
# without additional question 'yes/no' from apt-get
sudo apt-get -y install "$@";
;;
*)
# For any other answer, we just do nothing. That means we do not install
# listed packages.
;;
esac
}
Чтобы использовать эту функцию в качестве сценария sh / bash, просто создайте файл сценария, например, my_apt-get.sh
с содержимым (Примечание: список не содержит комментариев, чтобы сделать его немного короче ;-)):
#!/bin/sh
f () {
sudo apt-get --simulate install "$@" | grep -v '^Inst\|^Conf';
read -p 'Do You want to continue (y/N): ' ans;
case $ans in
[yY] | [yY][eE][sS])
sudo apt-get -y install "$@";
;;
*)
;;
esac
}
f "$@"
Затем поместите его, например, в ~/bin/
и сделайте его исполняемым с $ chmod u+x ~/bin/my_apt-get.sh
. Если каталог ~/bin
включен в вашу PATH
переменную, вы сможете выполнить его просто:
$ my_apt-get.sh PACKAGE_NAME(S)_TO INSTALL
Пожалуйста, обратите внимание:
- Код действительно использует
sudo
. Если вы используете root
учетную запись, вам, вероятно, необходимо настроить ее.
- Код не поддерживает автозаполнение оболочки
- Понятия не имею, как код работает с шаблонами оболочки (например, "!", "*", "?", ...)