Отслеживание программ

Я на самом деле имею в наличии немного awk программы для предоставления суммы, количества данных, минимальной данной величины, максимальной данной величины, средней и медиана отдельного столбца числовых данных (включая отрицательные числа):

#!/bin/sh
sort -n | awk '
  BEGIN {
    c = 0;
    sum = 0;
  }
  $1 ~ /^(\-)?[0-9]*(\.[0-9]*)?$/ {
    a[c++] = $1;
    sum += $1;
  }
  END {
    ave = sum / c;
    if( (c % 2) == 1 ) {
      median = a[ int(c/2) ];
    } else {
      median = ( a[c/2] + a[c/2-1] ) / 2;
    }
    OFS="\t";
    print sum, c, ave, median, a[0], a[c-1];
  }
'

Вышеупомянутый сценарий читает из stdin и печати разделенные от вкладки столбцы вывода на одной строке.

33
22.05.2015, 16:25
5 ответов

Установите каждую программу в специализированном дереве каталогов, и использование Убирает или XStow, чтобы заставить все программы появиться в общей иерархии. Уберите создает символьные ссылки от определенного для программы каталога до общего дерева.

Более подробно выберите каталог верхнего уровня, например /usr/local/stow. Установите каждую программу под /usr/local/stow/PROGRAM_NAME. Например, примите меры, чтобы его исполняемые файлы были установлены в /usr/local/stow/PROGRAM_NAME/bin, его страницы справочника в /usr/local/stow/man/man1 и так далее. Если программа использует autoconf, то выполненный ./configure --prefix /usr/local/stow/PROGRAM_NAME. После выполнения make install, выполненный stow:

./configure --prefix /usr/local/stow/PROGRAM_NAME
make
sudo make install
cd /usr/local/stow
sudo stow PROGRAM_NAME

И теперь у Вас будут символьные ссылки как они:

/usr/local/bin/foo -> ../stow/PROGRAM_NAME/bin/foo
/usr/local/man/man1/foo.1 -> ../../stow/PROGRAM_NAME/man/man1/foo.1
/usr/local/lib/foo -> ../stow/PROGRAM_NAME/lib/foo

Можно легко отслеживать, каких программ Вы установили путем списка содержания stow каталог, и Вы всегда знаете, какая программа файл принадлежит тому, потому что это - символьная ссылка на местоположение в соответствии с каталогом той программы. Удалите программу путем выполнения stow -D PROGRAM_NAME затем удаляя каталог программы. Можно сделать программу временно недоступной путем выполнения stow -D PROGRAM_NAME (выполненный stow PROGRAM_NAME сделать это доступным снова).

Если Вы хотите смочь быстро переключиться между различными версиями той же программы, использовать /usr/local/stow/PROGRAM_NAME-VERSION как каталог программы. Для обновления от версии 3 до версии 4, версии 4 установки, затем работают stow -D PROGRAM_NAME-3; stow PROGRAM_NAME-4.

Более старые версии Убирают, не идет очень далеко вне основ, которые я описал в этом ответе. Более новые версии, а также XStow (который не сохранялся в последнее время) имеют больше расширенных функций, как способность проигнорировать определенные файлы, лучше справиться с существующими символьными ссылками вне убирать каталога (такой как man -> share/man), обработайте некоторые конфликты автоматически (когда две программы обеспечат тот же файл), и т.д.

Если Вы не имеете или не хотите использовать корневой доступ, можно выбрать каталог в соответствии с корневым каталогом, например. ~/software/stow. В этом случае добавить ~/software/bin к Вашему PATH. Если man автоматически не находит страницы справочника, добавляют ~/software/man к Вашему MANPATH. Добавить ~/software/info к Вашему INFOPATH, ~/software/lib/python к Вашему PYTHONPATH, и так далее как применимый.

20
27.01.2020, 19:37
  • 1
    я верю вещам, возможно, изменился немного со времени, когда этот ответ был отправлен. Таким образом, так же, как обновление: GNU в настоящее время Убирает черные списки поддержек, несколько убирают каталоги, предварительное обнаружение конфликта, и т.д. Я также думаю, что убирают, находится в процессе активного развития, в то время как Xstow не обновлялся в течение ~3 лет. –  Amelio Vazquez-Reina 22.04.2013, 00:54

Можно использовать checkinstall для создания пакета (об/мин, Deb или Slackware совместимые пакеты) Тот путь, можно использовать диспетчер пакетов дистрибутивов для добавления/удаления приложения (но не обновление)

Вы используете checkinstall вместо make install команда (использующий-D параметр для Deb;-R является об/мин, и-S является Slackware):

root@nowhere# ./configure
root@nowhere# make
root@nowhere# checkinstall -D

checkinstall создаст и установит пакет по умолчанию, или у Вас может быть он, только создают пакет без установки.

checkinstall доступен в большинстве репозиториев дистрибутивов.

18
27.01.2020, 19:37
  • 1
    Это хорошо, но я главным образом использую tarballs для очень активных программ, которые убирают arnt, часто упаковываемые и способность переключения между поврежденным и не версиями в, является большим –  Will03uk 14.07.2011, 01:34
  • 2
    , К сожалению, checkinstall кажется, не, который активно поддержал (?) :-( –  Nikos Alexandris 29.04.2013, 16:11
  • 3
    @NikosAlexandris мне любопытно, если он работает на свою намеченную цель и успевает это - который, как текущее лицо, не использующее своего права, я принимаю это, делает - почему необходимо что это активно сохраняться? –  Hashim 06.02.2018, 04:00
  • 4
    @Hashim я вижу Вашу точку. Из "обычных взглядов", тем не менее, был бы, части программного обеспечения, связанного с программным обеспечением компиляции, не, нужно обслуживание, когда компиляторы развиваются? –  Nikos Alexandris 07.02.2018, 12:47

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

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

6
27.01.2020, 19:37
  1. Можно сделать пустого об/мин как напоминание.
  2. Можно изучить обертывание программного обеспечения правильно в об/мин.
  3. Можно оставить копию tar файлы от установки в /usr/src/non-rpms напомнить Вам (это - то, что я обычно делаю).
3
27.01.2020, 19:37

Еще одна альтернатива из Linux, С нуля подсказывает:

Больше управления Управлением и Пакетом с помощью Пользователей Пакета

3 пользователя пакета
3.1 Введение

Основная идея об этой схеме легко объяснена. Каждый пакет принадлежит определенному "пользователю пакета". При установке пакета Вы создаете и устанавливаете пакет как этот пользователь пакета, вызывая все файлы, которые установлены для владения пользователю пакета. Как следствие все обычные задачи управления пакетом могут быть удобно достигнуты с помощью стандартных утилит командной строки. Простое ls -l <file> скажет Вам, например, что пакет <file> принадлежит и a find -user ... команда позволяет Вам выполнять операцию на всех файлах, принадлежащих определенному пакету, например, удалять их для удаления пакета.

Но управление пакетом не весь, для что пользователи пакета хороши. Поскольку у пользователей пакета нет корневых прав, установка пакета ограничена в том, что она может сделать. Одна вещь, которую пользователю пакета не разрешают сделать, например, состоит в том, чтобы перезаписать файлы от другого пользователя пакета. Столкновения между различными пакетами, которые хотят установить двоичный файл, библиотеку или заголовочный файл того же имени, более распространены, чем Вы могли бы думать. С пользователями пакета Вы никогда не рискуете пакетом файлы уничтожения установки B от пакета тихо без Вас замечающий. Каждая попытка выполнения этого во время пакета, установка B вызовет "Разрешение, отклоненное" или "Операция, не разрешенная" ошибка так, чтобы у Вас был шанс делания соответствующих шагов. Другая вещь, которую пользователям пакета не разрешают сделать, установить корневые двоичные файлы setuid. Решение сделать двоичный файл setuid корнем является также чем-то, что благоразумный администратор не хочет оставлять до создателя пакета программного обеспечения.

Обычно учетные записи пользователей пакета не имеют никакого действительного пароля так, чтобы только корень мог su пользователю пакета, который удостоверяется, чтобы пользователи пакета не открыли дополнительный путь в систему и подорвали безопасность. Но можно установить пароли так или иначе, чтобы позволить co-администратору, которого Вы хотите смочь установить и поддержать определенные пакеты программного обеспечения, чтобы сделать так, не имея доступа к фактической корневой учетной записи. Этот co-администратор мог, например, установить, удалить, изменить дополнительные библиотеки, которые могли бы быть необходимыми для его рабочей группы. Он не мог бы, тем не менее, удалить или изменить библиотеки, которые не принадлежат ему, такие как libc.

После этого первого сырого предложения я нашел развитый вариант:

crablfs - Основанная на пользователе Система управления Пакета

Это crablfs последний экземпляр управления пакетом с помощью уникального uids и ценурозов для управления пакетом, но на SourceForge это развивается снова в ulfs:

uLFS: Ваш Управляемый и Допускающий повторное использование Linux С нуля

Для причинных пользователей установленных пакетов я думаю, что "пользователи пакета" решением LFS является легкое, менее агрессивное и изящное. Короче говоря, Вы устанавливаете пакеты в /usr/local или /home/user/local и файлы дорожки с помощью уникального uids и ценурозов для каждого пакета, но помещенный все файлы в традиционные места, общие каталоги /usr/local/bin, /usr/local/lib как он находится во всех основных дистрибутивах Linux... поглощения газов файла и нежелательной перезаписи файла или удаления избегает аккуратный прием Linux, объясненный Matthias S. Benkmann в more_control_and_pkg_man.txt, для которого нужны только нормальный файл и управление разрешением каталогов, например, липкое разрядное разрешение для каталогов для предотвращения нежелательных перезаписей файла:

3.3 Группы

Каждый пользователь пакета принадлежит по крайней мере 2 группам. Одна из этих групп является группой "установки", которой принадлежат все пользователи пакета (и только пользователи пакета). Все каталоги, в которых пакетам позволяют установить материал, принадлежат группе установки. Это включает каталоги, такие как мусорное ведро / и/usr/bin, но исключает каталоги как корень / или/. Каталоги, принадлежавшие группе установки, всегда перезаписываемы группой. Это было бы достаточно для аспектов управления пакетом, но без дальнейшей подготовки это не будет давать дополнительную защиту или управлять, потому что каждый пакет мог заменить файлы от различного пакета (изменение будет видимо в выводе от ls -l, хотя). Поэтому все каталоги установки получают липкий атрибут. Это позволяет пользователям создавать новые файлы и удалять или изменять их собственные файлы в каталоге, но файлы от других пользователей не могут быть изменены или удалены. В остальной части этой подсказки, каждый раз, когда термин "установка каталога" используется, это обращается к каталогу, который принадлежит установке группы, является перезаписываемым группой и липким. IOW, для превращения <dir> в каталог установки Вы сделали бы

chgrp устанавливают && chmod g+w, o+t

Для меня это похоже на простое и умное решение! Я использовал эту схему в своей сборке LFS, и это - рабочее решение...

6
27.01.2020, 19:37

Теги

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