Освободите буфер остановился несколько рабочих месяцы назад

Я нахожу "освобождать буфер" команду очень важной и полезной, потому что я выполняю код Python, и я не думаю, что могу просто поместить что-то эквивалентное для сбрасывания () везде.

Я раньше использовал его очень хорошо: unbuffer python foo.py | tee filename.log

Несколько месяцев назад я не уверен, позволил ли я свою Ubuntu 16.04 автоматическому обновлению некоторое программное обеспечение, и это прекратило работать.

$ unbuffer
can't find package Expect
    while executing
"package require Expect"
    (file "/usr/bin/unbuffer" line 6)

Я пытался редактировать некоторые файлы и измениться Expect к нижнему регистру expect но это не работало.

Я попробовал (несколько месяцев назад), использование склонного - добирается, инструменты, чтобы удалить и переустановить Ожидают, но напрасно. Я удивлен, что не могу погуглить это и найти других, жалующихся на это не работа.

Я просто попробовал его на 18,04 Ubuntu друга. Он никогда не использовал его, он загрузил его Кв. - добираются, и получает то же сообщение об отказе. Любая справка ценится.

Спасибо @pynexj для предложения кошке/usr/bin/unbuffer:

#!/bin/sh
# -*- tcl -*-
# The next line is executed by /bin/sh, but not tcl \
exec tclsh8.6 "$0" ${1+"$@"}

package require expect


# -*- tcl -*-
# Description: unbuffer stdout of a program
# Author: Don Libes, NIST

if {[string compare [lindex $argv 0] "-p"] == 0} {
    # pipeline
    set stty_init "-echo"
    eval [list spawn -noecho] [lrange $argv 1 end]
    close_on_eof -i $user_spawn_id 0
    interact {
    eof {
        # flush remaining output from child
        expect -timeout 1 -re .+
        return
    }
    }
} else {
    set stty_init "-opost"
    set timeout -1
    eval [list spawn -noecho] $argv
    expect
    exit [lindex [wait] 3]
}

Я использовал conda на этой машине, но я запускаю эти тесты в терминале, где я не сделал никого source activate. Первый объект в моем пути является/home/myusername/anaconda3/bin, если это имеет значение.

$ apt list --installed | grep -i expect

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

expect/xenial,now 5.45-7 amd64 [installed]
python3-pexpect/xenial,xenial,now 4.0.1-1 all [installed]
tcl-expect/xenial,now 5.45-7 amd64 [installed,automatic]

$ locate '*expect*pkgIndex.tcl'
/usr/lib/tcltk/x86_64-linux-gnu/expect5.45/pkgIndex.tcl

Спасибо @glenn jackman, я нашел что мой tclsh находится в ~/anaconda3/bin/tclsh и указывает на tclsh8.6, я предполагаю, что это означает, что он был установлен как часть моей conda установки. Как отмечено выше, anaconda3/bin наверху моего ПУТИ. Я ничего не создал сам.

Мы знаем, является ли 8.6 старым или новым? Я должен попытаться сделать, Кв. - получает обновление на tcl или tclsh, за пределами материала conda, и видит, помогает ли это?

4
задан 21 June 2018 в 19:27

1 ответ

Я полагаю, что столкнулся с точно такой же проблемой, в первую очередь вызванной установкой Anaconda. Похоже, моя система обращалась к тому, что принесла Анаконда, а не к тому, что было установлено много лет назад - и в остальном все еще присутствует.

В соответствии с https://anaconda.org/Eumetsat/expect , мне нужно было только выпустить

conda install -c eumetsat expect

, чтобы привести вещи в порядок.

14
ответ дан 21 June 2018 в 19:27

Другие вопросы по тегам:

Похожие вопросы: