Почему много приложений не доступно в пакете repos?
Могло быть много причин:
Нет никакой единственной причины. Если требуется видеть любимое приложение в диспетчере пакетов дистрибутива, необходимо рассматривать каждый случай отдельно. Попытайтесь выйти на связь с devs (на канале IRC или списке рассылки, например) и спросить, как Вы могли помочь упаковке.
Как установить tarball?
tarball (.tar.gz пакет) мог содержать что-либо. Пока Вы на самом деле не открываете его, у Вас нет способа принять, как установить его. Снова, к каждому пакету нужно приблизиться по-другому.
Ищите документацию! Любой (полу-) достойный пакет предоставит инструкции относительно того, как установить приложение. Ваше первое отражение должно всегда быть должно искать текстовый файл под названием README, УСТАНОВКА или что-то вроде этого. Проверка веб-сайта издателя могла бы также помочь.
Так как каждый пакет отличается, нет никакого универсального способа обработать каждый tarball в мире. Это похоже на просьбу о рецепте, который работает над всеми компонентами в мире. Не случай.
Хорошее знание Вашей системы, Вашего дистрибутива и Вашей настольной среды поможет, таким образом, если это заверяет, вещи будут выглядеть все более предсказуемыми, поскольку Вы проводите время в мире Linux.
Особый случай: автоинструменты
Поскольку проекты становятся больше, они должны обеспечить простые способы переместиться от исходного кода до двоичного файла к полной установке в системе. Поэтому они поставлются со встроенной системой сборки, набором сценариев, чтобы сделать необходимое.
В Источнике/Бесплатном программном обеспечении Linux мировой / Открытый мировой Источник/Бесплатное программное обеспечение одна система сборки получила более широкое принятие: Автоинструменты GNU. Если Вы когда-нибудь имеете дело с (n открытый) исходный пакет, существует основательный шанс, что Вы будете использовать Автоинструменты.
В самом простом случае вот то, как установить приложение, упакованное с автоинструментами:
./configure
: Сценарий, который генерирует Make-файлы, соответствующие Вашей системе (это также часто проверяет на доступность зависимостей).make
: Компиляция исходного кода согласно Make-файлам, сгенерированным ранее.make install
: Копирует двоичные файлы в соответствующие местоположения, создает символьные ссылки и любой другой шаг, определенный разработчиком.Примечания
configure
сценарии обычно имеют много опций, как которые компилятор для использования, или как можно определить целевой каталог. При необходимости в гибкости на это стоит посмотреть ./configure --help
.Ответьте на обновление в вопросе
То, что Вы просите, не имеет никакого определенного ответа. У всех здесь могло бы быть мнение о том, что составляет "хорошую практику", но в конце дня, только можно найти что работы для Вас. Если бы был легкий ответ, то Вы не задали бы вопрос. Ваш дистрибутив ответил бы на это для Вас.
Это сказанное, вот является несколькими персональными комментариями.
В моей системе я резервирую /usr/local/bin
для пакетов, установленных моим диспетчером пакетов. Все, что я компилирую/устанавливаю вручную, входит /opt
. Это - деталь, но она помогает избегающим сильным головным болям при контакте с несколькими версиями той же программы.
xxx.desktop
, и проблемы GUI в целом, характерны для настольной среды, которую Вы используете. Если это работает на Вашу систему, большую. Но это не может быть обобщено ко всем средам, доступным на Unix.
/usr/local/bin
имеет преимущество того, чтобы уже быть в Вашем ПУТИ. Если Вы хотите использовать другой каталог (как /opt
как я предполагаю), несомненно, будут включать его в Ваш ПУТЬ. Если Вы не знаете, как сделать это, открыть терминал и выполнить следующее в терминале (не самый симпатичный способ сделать это, но ничего не зная о Вашей системе, я не могу предложить ничто больше): echo 'export PATH=$PATH:/opt' >> ~/.bashrc
Вы, вероятно, используете mawk
, который имеет некоторые оптимизации, которые могут привести к ошибкам как это при контакте с особенно большими данными. gawk
не будет, вероятно, иметь этих проблем при выполнении его таким же образом.
Perl может сделать это,
#!/bin/env perl
use strict;
use warnings;
while(my $ln=<>){ my($f) = split(/\s/,$ln); if($f<=2000) { print $ln;} }
Так может Python и Ruby,
#!/bin/env ruby
while( rec = gets() ) do
fld = rec.match(/^(\w+)\s/)
if(fld[1].to_i <= 2000) then puts rec end
end
perl -lane 'print if $F[0]<= 2000' input_file_name >> output_file_name
который является по существу что OP's awk
делает.
– Joseph R.
19.10.2013, 04:11