Я можу бачити старе питання, але зараз у подібній ситуації. Зазвичай я використовую 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
обліковим записом, вам, ймовірно, потрібно відрегулювати його.
- Код не підтримує автоматичне завершення оболонки
- Поняття не маю, як працює код з візерунками оболонок (наприклад, "!", "*", "?", ...)