На Другой вопрос кто-то заметил, что apt-get install -y
не задает вопросы (как и ожидалось), но, кажется, читает из STDIN в любом случае.
Мне было любопытно, и я пытался понять, для чего это чтение полезно.
Поэтому я взял коробку Ubuntu и получил код с apt-get source apt
,
Для отладки я вставил несколько строк отладочной информации и собрал все debuild -b -uc -us
и установил результат.
Делая так, я мог бы отследить код в значительной степени эта линия (не уверен, что я выбрал именно правильный коммит для ссылки) где PM->DoInstall(status_fd)
называется.
Где именно этот метод определен? Я нашел только определение в packagemanager.cc (и поискать nstall(int
ничего хорошего тоже не показало), но добавлен отладочный вывод, там не печатается. Поэтому я предполагаю, что пропустил правильную реализацию для вызова выше.
Из регулярного вывода следующее, что я вижу, это вывод dpkg (и есть STDIN между ними), но я не могу найти код, который запускается DoInstall, который в конце вызывает dpkg.
Вопрос:
Есть ли лучший способ проверить мои предположения, чем добавление результатов отладки?
Вы могли бы запустить apt-get
на заднем плане и после того, как он был приостановлен SIGTTIN
, прикреплять gdb
и осмотреть backtrace
,
Других решений пока нет …