Чтобы создать архив распространения приложений, разработчик использует некоторые инструменты под названием GNU Autotools. Эти инструменты помогут вам создать configure и amp; Makefile, который генерирует вам архив распространения.
Check:
Официальный сайт (autogen, autoconf, automake) Quick Tutorial] После правильной настройки вы должны иметь возможность генерировать исходный архив, используя:
make dist
Примечания:
Эти инструменты были разработаны в основном для использования с проектами c / c ++. Найдите соответствующий инструмент для использования с другими языками (например, Ant для Java, инструменты установки для Python). Существуют также некоторые альтернативы, например, для c / c ++ cmake, qmake с Qt. Правильный рабочий процесс, начните с универсального исходного архива .tar.gz, затем распределите определенные пакеты, такие как исходный пакет Debian и .deb / двоичный пакет Debian.Каждый открываемый вами терминал получает файл с уникальным номером (например, псевдотерминальное подчиненное устройство (PTS)) в /dev/pts/, с которым его можно распознать и устранить. Чтобы получить соответствующее имя файла в терминальном окне, вы можете использовать, например. tty (см. этот ответ для альтернатив, прочитайте man pts для более):
$ tty
/dev/pts/4
Вы можете использовать это имя файла, например, для перенаправления вывода в другое окно терминала следующим образом:
$ echo test >/dev/pts/4 # run anywhere
test # printed in terminal window 4
Вы не можете запустить команду в другом терминале просто потому, что это не терминал, который запускает команду, а скорее оболочку, которая обычно работает в терминале. Однако вы можете эмулировать поведение запуска команды в окне терминала с перенаправлением следующим образом (взято из этого ответа ):
echo test </dev/pts/4 &>/dev/pts/4
Если вы хотите отобразить команду, Я также рекомендовал написать функцию (как использовать $ * при отсутствии определенных входных переменных, таких как $ 1 и $ 2 в bash-скрипте?), например:
run_in(){
t=/dev/pts/$1 &&
echo "${*:2}" >$t &&
eval "${@:2}" <$t &>$t
}
В одной строке:
run_in(){ t=/dev/pts/$1&&echo "${*:2}" >$t&&eval "${@:2}" <$t &>$t;}
Используйте его так:
$ run_in 4 echo test # run anywhere
$ echo test # printed in terminal window 4 (if prompt was already there)
test # printed in terminal window 4
В этом случае единственными неизвестными являются номера /dev/pts/?, которые должна использовать ваша программа Python. Одним из возможных способов получить эти числа является запуск ваших собственных окон терминала, которые выводят их «числа» в файл, после чего вы сможете прочитать его [ref]. Предположим, вы используете gnome-terminal, соответствующая часть кода Python может быть чем-то вроде [ref]:
#!/usr/bin/python
import os
import subprocess
os.system("gnome-terminal -x bash -c 'tty > /tmp/my-app-tty-1; exec bash'")
my_terminal_1 = subprocess.Popen(["cat", "/tmp/my-app-tty-1"], stdout=subprocess.PIPE).communicate()[0]
command = "echo Test on: $(date) >" + my_terminal_1
print my_terminal_1
print command
os.system(command)
Если это скрипт Perl [ref] [!d10 ]
#!/usr/bin/perl
os.system("gnome-terminal -x bash -c 'tty > /tmp/my-app-tty-1; exec bash'");
my $my_terminal_1 = `cat /tmp/my-app-tty-1`;
my $command = "echo Test on: \$\(date\) > $my_terminal_1";
print ("$my_terminal_1");
print ("$command");
os.system("$command");
Каждый открываемый вами терминал получает файл с уникальным номером (например, псевдотерминальное подчиненное устройство (PTS)) в /dev/pts/, с которым его можно распознать и устранить. Чтобы получить соответствующее имя файла в терминальном окне, вы можете использовать, например. tty (см. этот ответ для альтернатив, прочитайте man pts для более):
$ tty
/dev/pts/4
Вы можете использовать это имя файла, например, для перенаправления вывода в другое окно терминала следующим образом:
$ echo test >/dev/pts/4 # run anywhere
test # printed in terminal window 4
Вы не можете запустить команду в другом терминале просто потому, что это не терминал, который запускает команду, а скорее оболочку, которая обычно работает в терминале. Однако вы можете эмулировать поведение запуска команды в окне терминала с перенаправлением следующим образом (взято из этого ответа ):
echo test </dev/pts/4 &>/dev/pts/4
Если вы хотите отобразить команду, Я также рекомендовал написать функцию (как использовать $ * при отсутствии определенных входных переменных, таких как $ 1 и $ 2 в bash-скрипте?), например:
run_in(){
t=/dev/pts/$1 &&
echo "${*:2}" >$t &&
eval "${@:2}" <$t &>$t
}
В одной строке:
run_in(){ t=/dev/pts/$1&&echo "${*:2}" >$t&&eval "${@:2}" <$t &>$t;}
Используйте его так:
$ run_in 4 echo test # run anywhere
$ echo test # printed in terminal window 4 (if prompt was already there)
test # printed in terminal window 4
В этом случае единственными неизвестными являются номера /dev/pts/?, которые должна использовать ваша программа Python. Одним из возможных способов получить эти числа является запуск ваших собственных окон терминала, которые выводят их «числа» в файл, после чего вы сможете прочитать его [ref]. Предположим, вы используете gnome-terminal, соответствующая часть кода Python может быть чем-то вроде [ref]:
#!/usr/bin/python
import os
import subprocess
os.system("gnome-terminal -x bash -c 'tty > /tmp/my-app-tty-1; exec bash'")
my_terminal_1 = subprocess.Popen(["cat", "/tmp/my-app-tty-1"], stdout=subprocess.PIPE).communicate()[0]
command = "echo Test on: $(date) >" + my_terminal_1
print my_terminal_1
print command
os.system(command)
Если это скрипт Perl [ref]
#!/usr/bin/perl
os.system("gnome-terminal -x bash -c 'tty > /tmp/my-app-tty-1; exec bash'");
my $my_terminal_1 = `cat /tmp/my-app-tty-1`;
my $command = "echo Test on: \$\(date\) > $my_terminal_1";
print ("$my_terminal_1");
print ("$command");
os.system("$command");
Каждый открываемый вами терминал получает файл с уникальным номером (например, псевдотерминальное подчиненное устройство (PTS)) в /dev/pts/, с которым его можно распознать и устранить. Чтобы получить соответствующее имя файла в терминальном окне, вы можете использовать, например. tty (см. этот ответ для альтернатив, прочитайте man pts для более):
$ tty
/dev/pts/4
Вы можете использовать это имя файла, например, для перенаправления вывода в другое окно терминала следующим образом:
$ echo test >/dev/pts/4 # run anywhere
test # printed in terminal window 4
Вы не можете запустить команду в другом терминале просто потому, что это не терминал, который запускает команду, а скорее оболочку, которая обычно работает в терминале. Однако вы можете эмулировать поведение запуска команды в окне терминала с перенаправлением следующим образом (взято из этого ответа ):
echo test </dev/pts/4 &>/dev/pts/4
Если вы хотите отобразить команду, Я также рекомендовал написать функцию (как использовать $ * при отсутствии определенных входных переменных, таких как $ 1 и $ 2 в bash-скрипте?), например:
run_in(){
t=/dev/pts/$1 &&
echo "${*:2}" >$t &&
eval "${@:2}" <$t &>$t
}
В одной строке:
run_in(){ t=/dev/pts/$1&&echo "${*:2}" >$t&&eval "${@:2}" <$t &>$t;}
Используйте его так:
$ run_in 4 echo test # run anywhere
$ echo test # printed in terminal window 4 (if prompt was already there)
test # printed in terminal window 4
В этом случае единственными неизвестными являются номера /dev/pts/?, которые должна использовать ваша программа Python. Одним из возможных способов получить эти числа является запуск ваших собственных окон терминала, которые выводят их «числа» в файл, после чего вы сможете прочитать его [ref]. Предположим, вы используете gnome-terminal, соответствующая часть кода Python может быть чем-то вроде [ref]:
#!/usr/bin/python
import os
import subprocess
os.system("gnome-terminal -x bash -c 'tty > /tmp/my-app-tty-1; exec bash'")
my_terminal_1 = subprocess.Popen(["cat", "/tmp/my-app-tty-1"], stdout=subprocess.PIPE).communicate()[0]
command = "echo Test on: $(date) >" + my_terminal_1
print my_terminal_1
print command
os.system(command)
Если это скрипт Perl [ref]
#!/usr/bin/perl
os.system("gnome-terminal -x bash -c 'tty > /tmp/my-app-tty-1; exec bash'");
my $my_terminal_1 = `cat /tmp/my-app-tty-1`;
my $command = "echo Test on: \$\(date\) > $my_terminal_1";
print ("$my_terminal_1");
print ("$command");
os.system("$command");