Как сказано, проблема заключалась в монтировании / tmp с noexec. Объяснение довольно простое: некоторые установочные скрипты распаковывают исполняемые файлы / скрипты в / tmp, а затем пытаются их запустить.
Я случайно наткнулся на эту проблему несколько месяцев назад, когда изменил пару серверов / tmp на noexec по соображениям безопасности, а затем перестали работать сценарии установки / обновления некоторых пакетов Debian. Поскольку я специально изменил его, в то время было довольно легко определить проблему.
Я по-прежнему считаю хорошей идеей установить / tmp на noexec на общедоступных веб-серверах, однако до сих пор я не особо исследовал, как обойти эту конкретную проблему.
dev=$(lsblk | awk '$1 ~ /^sd/ {print $1; exit}')
if [ -n "$dev" ]; then
dev=/dev/$dev
parted "$dev" mklabel gpt mkpart primary "1 -1" -s
fi
Теперь, если вам нужен первый sd?
диск, это может быть проще сделать:
shopt -s nullglob; set -- /dev/sd[a-z]
if (($# > 0 )); then
parted "$1" mklabel gpt mkpart primary "1 -1" -s
fi
Или сделать это для каждого диска:
shopt -s nullglob
for dev in /dev/sd[a-z]; do
(set -x; parted "$dev" mklabel gpt mkpart primary "1 -1" -s)
done
Просто сохраните в переменную и обработайте ее.
input=$(lsblk | awk {'print $1'} | grep ^sd); \
parted $input mklabel gpt mkpart primary "1 -1" -s