awk читают, ошибка плохо обращаются

Почему много приложений не доступно в пакете repos?

Могло быть много причин:

Нет никакой единственной причины. Если требуется видеть любимое приложение в диспетчере пакетов дистрибутива, необходимо рассматривать каждый случай отдельно. Попытайтесь выйти на связь с devs (на канале IRC или списке рассылки, например) и спросить, как Вы могли помочь упаковке.

Как установить tarball?

tarball (.tar.gz пакет) мог содержать что-либо. Пока Вы на самом деле не открываете его, у Вас нет способа принять, как установить его. Снова, к каждому пакету нужно приблизиться по-другому.

Ищите документацию! Любой (полу-) достойный пакет предоставит инструкции относительно того, как установить приложение. Ваше первое отражение должно всегда быть должно искать текстовый файл под названием README, УСТАНОВКА или что-то вроде этого. Проверка веб-сайта издателя могла бы также помочь.

Так как каждый пакет отличается, нет никакого универсального способа обработать каждый tarball в мире. Это похоже на просьбу о рецепте, который работает над всеми компонентами в мире. Не случай.

Хорошее знание Вашей системы, Вашего дистрибутива и Вашей настольной среды поможет, таким образом, если это заверяет, вещи будут выглядеть все более предсказуемыми, поскольку Вы проводите время в мире Linux.

Особый случай: автоинструменты

Поскольку проекты становятся больше, они должны обеспечить простые способы переместиться от исходного кода до двоичного файла к полной установке в системе. Поэтому они поставлются со встроенной системой сборки, набором сценариев, чтобы сделать необходимое.

В Источнике/Бесплатном программном обеспечении Linux мировой / Открытый мировой Источник/Бесплатное программное обеспечение одна система сборки получила более широкое принятие: Автоинструменты GNU. Если Вы когда-нибудь имеете дело с (n открытый) исходный пакет, существует основательный шанс, что Вы будете использовать Автоинструменты.

В самом простом случае вот то, как установить приложение, упакованное с автоинструментами:

  • ./configure: Сценарий, который генерирует Make-файлы, соответствующие Вашей системе (это также часто проверяет на доступность зависимостей).
  • make: Компиляция исходного кода согласно Make-файлам, сгенерированным ранее.
  • make install: Копирует двоичные файлы в соответствующие местоположения, создает символьные ссылки и любой другой шаг, определенный разработчиком.

Примечания

  • configure сценарии обычно имеют много опций, как которые компилятор для использования, или как можно определить целевой каталог. При необходимости в гибкости на это стоит посмотреть ./configure --help.
  • Даже если Вы уверены, что это - Автоинструменты, и Вы знаете это действительно хорошо, всегда запускаетесь путем чтения документов (README, УСТАНОВКА...)

Ответьте на обновление в вопросе

То, что Вы просите, не имеет никакого определенного ответа. У всех здесь могло бы быть мнение о том, что составляет "хорошую практику", но в конце дня, только можно найти что работы для Вас. Если бы был легкий ответ, то Вы не задали бы вопрос. Ваш дистрибутив ответил бы на это для Вас.

Это сказанное, вот является несколькими персональными комментариями.

  • В моей системе я резервирую /usr/local/bin для пакетов, установленных моим диспетчером пакетов. Все, что я компилирую/устанавливаю вручную, входит /opt. Это - деталь, но она помогает избегающим сильным головным болям при контакте с несколькими версиями той же программы.

  • xxx.desktop, и проблемы GUI в целом, характерны для настольной среды, которую Вы используете. Если это работает на Вашу систему, большую. Но это не может быть обобщено ко всем средам, доступным на Unix.

  • /usr/local/bin имеет преимущество того, чтобы уже быть в Вашем ПУТИ. Если Вы хотите использовать другой каталог (как /opt как я предполагаю), несомненно, будут включать его в Ваш ПУТЬ. Если Вы не знаете, как сделать это, открыть терминал и выполнить следующее в терминале (не самый симпатичный способ сделать это, но ничего не зная о Вашей системе, я не могу предложить ничто больше): echo 'export PATH=$PATH:/opt' >> ~/.bashrc

3
19.10.2013, 02:24
2 ответа

Вы, вероятно, используете mawk, который имеет некоторые оптимизации, которые могут привести к ошибкам как это при контакте с особенно большими данными. gawk не будет, вероятно, иметь этих проблем при выполнении его таким же образом.

2
27.01.2020, 21:23

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
1
27.01.2020, 21:23
  • 1
    Или еще более волшебно: perl -lane 'print if $F[0]<= 2000' input_file_name >> output_file_name который является по существу что OP's awk делает. –  Joseph R. 19.10.2013, 04:11
  • 2
    я люблю гольф жемчуга! –  ChuckCottrill 19.10.2013, 04:47

Теги

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