- 22, Oct 2024
- #1
Вопрос
Мой скрипт-перехват для задачи репозитория (см. список задач ФАИ), похоже, не влияет на окончательное состояние установки. Почему нет? Это ожидаемое поведение? Если да, то почему? И что я могу сделать, чтобы обойти это ограничение?
Фон
Я пытаюсь использовать FAI для установки Docker CE из репозитория пакетов Docker (см. Установка пакетов из стороннего репозитория с помощью FAI). Следуя официальным инструкциям, я пытаюсь использовать
[...]
Calling hook: repository.SOFTPROPCOMM
Testing repository-task hook script
Writing to file /test
Checking contents of /test
Success
repository.SOFTPROPCOMM OK.
[...]
utility to add the package repository to the APT repository index. In order to get the #!/bin/bash
# /srv/fai/config/hooks/repository.SOFTPROPCOMM
echo "Testing repository-task hook script"
echo "Writing to file /test"
echo "Success" > /test
echo "Checking contents of /test"
cat /test
утилита, которую я пытаюсь установить Calling hook: repository.SOFTPROPCOMM
apt-get install software-properties-common
Reading package lists...
Building dependency tree...
Reading state information...
software-properties-common is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 86 not upgraded.
repository.SOFTPROPCOMM OK.
package. My plan was to use a hook script for the repository phase to install cat fai-softpropcomm.log \
| grep -Fi -B1 -A2 software-properties-common
а затем использовать add-apt-repository
to add the Docker repository.
Попытка решения
Я создал следующий сценарий перехвата задач репозитория для
apt-get install software-properties-common
class:
dpkg -l | grep -Fi software-properties-common
Затем я выполняю
software-properties-common
to создать среду chroot:
which add-apt-repository
Затем я вхожу в среду chroot:
add-apt-repository
и изнутри среды chroot я проверяю наличие
sudo chroot softpropcomm
application:
sudo fai \
--verbose \
--cfdir '/etc/fai' \
--class 'SOFTPROPCOMM' \
--cspace 'file:///srv/fai/config' \
dirinstall 'softpropcomm' \
| tee fai-softpropcomm.log
а также за наличие
dirinstall
package:
#!/bin/bash
# /srv/fai/config/hooks/repository.SOFTPROPCOMM
# Print command
echo apt-get install software-properties-common
# Execute command
apt-get install software-properties-common
Ни приложения, ни пакета нет. Поэтому я пытаюсь вручную установить пакет (все еще из chroot):
SOFTPROPCOMM
Установка продолжается, как и ожидалось, для нового пакета (того, который еще не установлен в системе), и после завершения установки пакета я могу убедиться, что
add-apt-repository
application has been successfully installed. This seems to suggest that repository-task hook script did not execute successfully. So I and look at my log file (back on the host - outside of the chroot):
software-properties-common
Это дает следующий результат:
software-properties-common
Кажется, это говорит о том, что пакет уже был установлен до выполнения моего скрипта-перехватчика, что сбивает с толку вдвойне.
Попытка отладки
Чтобы проверить, что происходит, я добавил в сценарий перехвата задач хранилища команду для записи в новый файл. Вот новый скрипт ловушки:
add-apt-repository
Выходные данные процесса установки включают следующий блок для перехватчика задач репозитория:
add-apt-repository
Но когда я вхожу в chroot, файла там нет.
#автоматизация #обеспечение #fai