• Когда переменная среды ускоряет процесс в 40 раз
    0
    Быстрейшим способом очистить такую директорию является rsync с пустой директорией.
    А rm * подвесит вам шелл. Если рсинка под рукой нет я бы попробовал find -delete или даже "rm -r .".

    Нет, rsync не является быстрейшим.
    unlink perl-a быстре, на выбор:


    perl -e 'for(<*>){((stat)[9]<(unlink))}'
    perl -e 'chdir "/var/spool/exim/msglog/" or die; opendir D, "."; while ($n = readdir D) { unlink $n }'

    истоки

  • В разработке — каждый сам за себя. Но иногда это приводит в тупик
    0
    Например одному приложению нужен PHP 4.х

    Серьёзно, такие ещё есть?) Я понимаю, что пример с потолка, но всё равно странно требование старой версии софта, тем более настолько.

    4.х не знаю, а 5.2.17 есть ((((

  • Автоматизация сети с помощью Ansible: модуль command
    0

    а еще, можно писать кастомные фильтры, под каждый чих)

  • NGINX инструкция по установке ModSecurity
    0

    Посмотрел, да. Не убедительно.


    1. в EPEL есть libmodsecurity-devel-3.0.2, это ваш раздел номер 3, ничего собирать не надо.


    2. вот официальная вика https://github.com/SpiderLabs/ModSecurity/wiki
      в том числе



    3. "Nginx Connector" тоже имеет вику, которая приводит нас сюда https://www.getpagespeed.com/server-setup/nginx/install-modsecurity-nginx-module-on-centos-7 откуда легко получить и spec для сборки своего, или готовые пакеты, двухмесячной давности:



    nginx-module-security-1.14.2.1.0.0-1.el7_4.gps.x86_64.rpm   24.0 KiB    2018-Dec-07 00:14

    п.с. c openssl-1.1.1 у меня не собралось, придется багрепортить.

  • NGINX инструкция по установке ModSecurity
    0

    "проблема" в том, что это хабр, или мне бы хотелось, что бы это оставалось Хабром… хотелось бы верить, что аудитория сама может открыть гитхаб и прочитать configure && make && make install, а в статьях будет что-то новое.
    В любом случае, make install — единственный минус.
    Спасибо, я обязательно попробую modsecurity )

  • NGINX инструкция по установке ModSecurity
    0

    шел 2019 год… yum install gcc gcc-c++ && make install) сборочный мусор на рабочих серверах)))
    почему нельзя просто написать nginx-modsecurity.spec,
    отправить его в https://copr.fedorainfracloud.org/,
    и через 10 имнут получить свой репозиторий со своим динамическим модулем modsecurity?
    Статья короткая получится, точно!!

  • Три простых приема для уменьшения Docker-образов
    +1

    По теме минимизации размеров, забыли самое главное. Это scratch образы.
    И в этом деле лучше всего проявляются особеннности Golang, где размер образа равен размеру бинарника.


    FROM golang:alpine as go_builder
    COPY app  /app
    WORKDIR /app
    RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .
    
    FROM scratch
    COPY --from=go_builder /app .
    ENTRYPOINT ["/app"]
  • Сам себе devops или настраиваем Nginx прокси для Apache Tomcat на Ubuntu за 5 минут c https и firewall'ом
    –2

    Итак, что бы проксировать http(s) в localhost:8080 вы выбрали такой путь:
    Nginx, возможно даже из сторонних репозиториев, конфиги, установка sertbot и какие-то там подтверждения соглашений, ручные правки, кроны…
    Предлагаю заменить этот паровоз на два элемента systemd+traefik. Без каких-либо ручных правок файлов.
    Алгоритм автоматизации:


    • скопировать юнит-файл
    • скопировать бинарник traefik
    • cкопировать конфиг traefik
    • установка вашего или любого другого сервиса на local host:8080 ( кстати, а почему не на сокете?)
    • настройка fw
    • reboot
  • Shell-скрипты в Ansible
    +3

    Да, этот кусок, тоже, пример плохого тона, и вспоминается вот этот заголовок:


    - name: List /etc/sudoers.*~ files
      shell: "ls -t /etc/sudoers*~ |tail -n +4"
      register: LIST_SUDOERS
      changed_when: false
    
    - name: Cleanup /etc/sudoers.*~ files
      file:
        path: "{{ item }}"
        state: absent
      loop: "{{ LIST_SUDOERS.stdout_lines }}"
      when: LIST_SUDOERS.stdout_lines != ""

    Но, и это можно красиво переписать ансиблом:


        - find: path="/etc" patterns="sudoers*"
          register: files
    
        - file:
            path: "{{ item }}"
            state: absent
          with_items: "{{ (files.files | sort(attribute='ctime', reverse=True) | map(attribute='path')| list)[3:] }}"

    Как видите, все читается, и нет ничего сложного.
    Если что-то "сложное", то берем в руки питона и делаем filter_plugins.

  • Shell-скрипты в Ansible
    +9

    Ребята, Вам не стыдно такое переводить?)


    Структура папок:


    ├── README.md
    ├── roles
    │   └── sudoers
    │        ├── tasks
    │        │   └── main.yml
    │        ├── templates
    │        │   └── sudoers.j2
    │        └── vars
    │             └── main.yml
    └── sudoers.yml

    Красиво, понятно? А у вас так же, как в источнике.
    Серьезно, дали бы какому-то стажеру запустить ваш неработающий плейбук (роль).
    Вместо MD5STAT.exists надо MD5STAT.stat.exists.
    Халтура, одним словом.


    А теперь про культуру.


    shell: "grep -v '/etc/sudoers' {{ MD5FILE }} > {{ MD5FILE }}.tmp; {{ csbin }} /etc/sudoers >> {{ MD5FILE }}; mv {{ MD5FILE }}.tmp {{ MD5FILE }}"

    Какой смысл переходить на декларативный язык описания, и при этом продолжать тянуть за собой вот такие паровозы?
    Как такое поддерживать? Вспоминаются однострочники на перле.


    Сравните:


    - name: sudoers checksum
      shell: "grep -v '/etc/sudoers' {{ MD5FILE }} > {{ MD5FILE }}.tmp ; {{ csbin }} /etc/sudoers >> {{ MD5FILE }} ; mv {{ MD5FILE }}.tmp {{ MD5FILE }}"
      when: sudochg.changed or MD5STAT.exists == false

    и мой вариант:


     - name: sudoers getcksum
       command: "{{ csbin }} /etc/sudoers"
       register: sudoers_crc
    
     - name: sudoers writecksum
       lineinfile:
         dest: "{{ MD5FILE }}"
         state: present
         regexp: " /etc/sudoers$"
         line: "{{ sudoers_crc.stdout }}"
         create: yes

    И мы идем дальше.
    Заметьте, там нет " when: sudochg.changed or MD5STAT.stat.exists == false". Не нужно больше.
    Целых два блока, нужены лишь для одного, не допустить ошибку типа grep:: No such file or directory
    И они нам теперь тоже не нужны:


       - name: "Check for checksum file"
         stat:
           path: "{{ MD5FILE }}"
         register: MD5STAT
    
       - name: Ensure MD5FILE 
         file:
           path: "{{ MD5FILE }}"
           owner: root
           group: "{{ sysgroup }}"
           mode: 0600
           state: touch
         when: MD5STAT.stat.exists == false

    Далее, поговорим про MD5, и зачем его пишут файл.
    Это делают для простоты проверки контрольных сумм. Скорее всего "некий процесс, который запускается раз в неделю и проверяет контрольную сумму файла " выглядит так:


    md5sum -c ~/.sudoer.md5
    exit $?

    Тогда файл надо генерировать так:


    md5sum /etc/sudoers >> ~/.sudoer.md5

    А в плейбуке будет так:


       - name: sudoers getcksum
         stat:
           path: "/etc/sudoers"
           checksum_algorithm: md5
         register: sudoers_crc
    
       - name: update MD5FILE
         lineinfile:
           dest: "{{ MD5FILE }}"
           state: present
           regexp: "  /etc/sudoers$"
           line: "{{ sudoers_crc.stat.checksum }}  /etc/sudoers"
           create: yes

    И два блока set_fact: теперь тоже можно удалить.

  • Непривилегированные пользователи Linux с UID> INT_MAX могут выполнить любую команду
    +2
    упоротых инженеров Шапки,
    плевали на безопасность

    Очень толсто!
    Указанные вами специалисты рекомендуют SELinux в enforced режиме, и это во многом решает подобные проблемы.


    [root@test ~]# useradd -u 2147483649 testuser
    (Tue Dec 11 15:32:29:453761 2018) [sss_cache] [confdb_get_domains] (0x0010): No domains configured, fatal error!
    Could not open available domains
    useradd: sss_cache exited with status 2
    useradd: Failed to flush the sssd cache.
    (Tue Dec 11 15:32:29:468971 2018) [sss_cache] [confdb_get_domains] (0x0010): No domains configured, fatal error!
    Could not open available domains
    useradd: sss_cache exited with status 2
    useradd: Failed to flush the sssd cache.
    
    [root@test ~]# grep testuser /etc/passwd
    testuser:x:2147483649:1003::/home/testuser:/bin/bash
    
    [root@test ~]# su - testuser
    
    [testuser@test ~]$ pwd
    /home/testuser
    
    [testuser@test ~]$ systemd-run -t /bin/bash
    
    (pkttyagent:9334): GLib-GObject-WARNING **: 15:33:21.538: value "-2147483647" of type 'gint' is invalid or out of range for property 'uid' of type 'gint'
    **
    ERROR:pkttyagent.c:156:main: assertion failed: (polkit_unix_process_get_uid (POLKIT_UNIX_PROCESS (subject)) >= 0)
    Running as unit: run-u23561.service
    Press ^] three times within 1s to disconnect TTY.
    
    [testuser@test ~]$ id
    uid=2147483649(testuser) gid=1003(testuser) groups=1003(testuser) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    
    [testuser@test ~]$ echo hello > /test.txt
    -bash: /test.txt: Permission denied
    
    [testuser@test ~]$ rpm -q polkit
    polkit-0.115-2.fc29.x86_64
    
    [testuser@test ~]$ logout
    
    [root@test ~]# ausearch -c '(bash)' --raw
    type=AVC msg=audit(1544538801.747:9383): avc:  denied  { open } for  pid=9337 comm="(bash)" path="/dev/pts/11" dev="devpts" ino=14 scontext=system_u:system_r:init_t:s0 tcontext=unconfined_u:object_r:user_devpts_t:s0 tclass=chr_file permissive=0
    
  • Быть или не быть… Использовать ли www на своём домене?
    0
    В DNS есть ограничение, что origin должен быть А-записью, то есть указывать на фиксированный IP-адрес.

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

    Но если сайт размещён на голом домене (example.com), вы не можете этого сделать.

    Перевод-переводом, но стоит отметить, что уже не актуально, ибо есть ANAME.
    Пользуемся более двух лет, все супер!
    https://tools.ietf.org/html/draft-ietf-dnsop-aname-02

  • Анализ производительности WSGI-серверов: вернем uWSGI на место
    +1
    Пара вопросов: — Почему… CherryPy… Аналогичный вопрос по meinheld ...

    ДА, в целом, я с вами согласен.
    Но, я в описал Свои Цели — это uWSGI. Были проделаны минимальные изменения кода автора, аналитика причин плохих результатов uWSGI 2016 и всежие результаты по методике автора.
    Кроме того, разныцы между uWSGI и uWSGIbase (без тредов) в этом тесте нет.
    Но, она будет, на реальном приложении…
    Поэтому не думаю, что что-то изменится при тюнинге CherryPy и meinheld.


    Попробую поиграться и сделать PR.

    Я обновил статью, добавлен NGINX Unit и PR автору оригинала.
    Можете отталкиваться от моего PR.
    Но заранее предупреждаю, запуск всех тестов — долгий процесс. Тестировал на ноуте без DE.

  • Анализ производительности WSGI-серверов: вернем uWSGI на место
    0

    Готово.
    Результаты в целом совпадают с https://itnext.io/performance-comparison-between-nginx-unit-and-uwsgi-python3-4511fc172a4c
    Но там нет показателей памяти и отклика, а это согласитесь, тоже важно.

  • Анализ производительности WSGI-серверов: вернем uWSGI на место
    0

    Может быть, но не обещаю. Цель "отбелить uWSGI" — достигнута.
    Так я хотел написать и поставить точку.


    Но вот тут оказалась интересная статья.
    Тестировали ApacheBench, но там те-же знакомые цифры… 7500 и 30 000.
    Поэтому — да, интересно, будет.

  • Red Hat будет поглощен IBM
    0

    deleted

  • Теперь официально: TLS 1.3 признан стандартом
    0

    FYI: пакеты по теме для C6,7 вот уже полтора года собираются тут
    https://copr.fedorainfracloud.org/coprs/vorona/nginx-alpn/


    # rpm -q openssl
    openssl-1.0.2k-12.el7.x86_64
    # nginx -V
    nginx version: nginx/1.15.2
    built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) 
    built with OpenSSL 1.1.1-pre8 (beta) 20 Jun 2018
  • Ансамбль солёных поваров-кукловодов: сравниваем Ansible, SaltStack, Chef и Puppet
    0

    Как видно основная проблема el6 была тут:


    to support ControlPersist. (This means basically all operating systems except Enterprise Linux 6 or earlier).

    https://docs.ansible.com/ansible/2.4/intro_configuration.html#openssh-specific-settings


    Используйте ‘accelerate’, он в 2-6 раз быстрее SSH разворачивает конфигурации (для el6). Для всех остальных есть ‘pipelining’. Для обратной совместимости он выключен, но включить обратно ‘pipelining’ очень легко, рекомендую это делать.

    Как давно вы пробовали использовать pipelining в el6?


    Прокомментируйте https://access.redhat.com/errata/RHBA-2014:1854 в этом контексте.

  • Serverless приложение с реализацией CI/CD на базе AWS и Bitbucket Pipelines
    +1
    Во всяком случае мне не нравится подход с фиксацией всего env через использование pip freeze,

    Есть такой подход:
    pip-compile requirements.in --output-file requirements.txt
    И проект уезжает именно сгенерированный файл, на базе основных зависимостей.
    Он так же хранится в репозитории, и позволяет четко видеть, как обновляются второстепенные зависимости.


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

  • Serverless приложение с реализацией CI/CD на базе AWS и Bitbucket Pipelines
    0

    Вот смотрим zappa-0.45.1 requirements.txt:


    botocore>=1.7.19
    boto3>=1.4.7

    п.с. zappa меня не интересует. Важен сам принцип, когда второстепенные зависимости могу повлиять на поведение продукта. Это может случиться, когда основные зависимости указаны не явно.

  • Serverless приложение с реализацией CI/CD на базе AWS и Bitbucket Pipelines
    0
    Чтобы создать аналогичное, устанавливаем requirements из списка:

    А как вы работаете со второстепенными зависимостями?
    Сталивались ли регрессией старых багов в них?
    Например в модулях boto3,botocore (zappa), urllib3 (requests),… еще на стейдже устанавливался botocore==1.9.3, а через час на прод уехал botocore==1.9.4 c каким-то старым багом ?

  • Двенадцать советов по повышению безопасности Linux
    +3

    Ребята, стыдно такое переводить.
    Да, относительно перевода, только одно режет слух:


    Firewalld — это замена для iptables, данная программа улучшает сетевую безопасность Linux.
    слово "программа", лучше сказать, например, "проект".

    Но, сама статья, технически слабая.
    Например, мои претензии к оригиналу:


    Port 5555

    Ну, ок поменяли, а "ssh_port_t tcp 22" остался на месте? рестартнем sshd и… о забыли про selinux?


    wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm
    $ rpm -ivh epel-release-7-9.noarch.rpm

    wget, а почему не курл? ну то такое, НО почему не HTTPS?
    А вообще есть вот что: https://lists.centos.org/pipermail/centos-announce/2014-September/020526.html
    ДА, просто yum install epel-release -y !


    Для начала выведите список всех бинарных файлов компиляторов из пакетов,
    а затем установите для них разрешения:
    rpm -q --filesbypkg gcc | grep 'bin'

    Всех Бинарныйх? Или исполняемых???
    Исполняемые, можно найти так:
    rpm -qlv gcc | grep ^-rwx


    $ groupadd compilerGroup
    $ chown root:compilerGroup /usr/bin/gcc
    $ chmod 0750 /usr/bin/gcc

    $ — это что, от юзера? Ну да, может быть… у автора…
    Ладно, а что будет после очередного обновления пакетов? Наша песня хороша, начинай с начала?
    Да и вообще, зачем прод серверах компоненты для сборки?

  • Агрегация логов log4j2 средствами ELK
    0

    Мы о статье, да, но и об обмене опытом.
    Я хочу понять, python-meld3 доступен только из EPEL, там же лежит готовый supervisor, почему бы просто не сделать yum install supervisor:


    Installing:
     supervisor noarch 3.1.4-1.el7 epel 446 k
    Installing for dependencies:
     python-meld3 x86_64 0.6.10-1.el7 epel 73 k

    Если что-то делается сложно, этому должны быть причины.
    Достаточно сказать что-то такое: "это дань истории, когда в репах была только вторая ветка, которая то ли ничего не умела, то ли умела плохо"… и это будет ответ)
    … например с логированием в syslog,…


    А так, да, статься отличная, спасибо!

  • Агрегация логов log4j2 средствами ELK
    0

    А как религия смотрит на установку питоновских модулей от рута (обновление pip и install supervisor)?
    Чем supervisor-3.1.4 из EPEL не угодил?

  • Криптовалютный агрегатор XRONOS запустил presale монет
    0
    XRSS приведена в боевую готовность, сайт запущен

    Серьезно??? Я вам даже свои куки не доверю:


    $ curl --sslv3 -is https://www.xronos.space | head -n15
    HTTP/1.1 200 OK
    Date: Thu, 05 Oct 2017 22:38:18 GMT
    Server: Apache/2.4.7 (Ubuntu)
    X-Powered-By: PHP/5.5.9-1ubuntu4.21
    X-Frame-Options: SAMEORIGIN
    Set-Cookie: PHPSESSID=2kli0valkqqbs49m22hb4om814; path=/
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Pragma: no-cache
    Set-Cookie: globallang=en; expires=Fri, 05-Oct-2018 22:38:18 GMT; Max-Age=31536000; path=/; domain=xronos.space
    Vary: Accept-Encoding
    Transfer-Encoding: chunked
    Content-Type: text/html; charset=UTF-8

    This server is vulnerable to the POODLE attack.
    This server accepts RC4 cipher, but only with older protocols.
    The server does not support Forward Secrecy with the reference browsers.
    bla-bla-bla

  • Социальная сеть Facebook требует у «Золотой короны» домен facebook.ru
    –3

    Интересно, если ЦФТ перерегистрируется 91-м регионе, и предложит купить домен за 1$, что сделает fb?

  • Настраиваем интернет шлюз с прозрачным обходом блокировок (а рекламу таки будем блокировать)
    0

    спасибо за ссылку на adservers/serverlist ) очень удобно!

  • Насколько хорошо защищены ваши SSH-сессии?
    +4

    Автор, вероятно, судит по себе.
    Ни один нормальный *nix-сисадмин просто так подобное сообщение не оставит.

  • 10 приёмов работы в терминале Linux, о которых мало кто знает
    0
    for i in $(seq 1 `nproc`); do cat /dev/urandom > /dev/null & done
  • Почему во время apt-get upgrade запускается игра Dwarf Fortress?
    0

    Именно поэтому важно прописывать полный путь исполняемого файла в скриптах.
    Один от этого минус — все работает как часики, и нечем поделиться, скучно… )

  • Эволюция сайта — взглядом Linux-админа дата-центра
    0

    Это холиварная тема.
    Например, чем мне не нравится убунта (и частично это присуще дебиану, но только частично): в рамках LTS релиза может мажорно измениться версия ядра; мейнтернеры делают так, чтобы после установки сервисов, они автоматом стартовали; репы типа большие, но недостаточное тестирование; медленная реакция на проблемы в багтреккерах; сам deb как формат пакетов ...

  • Комплексная автоматизация с Ansible и OpenStack
    0

    Пожалуйста, еще раз, перечитайте это:


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

    Разумеется, не рекомендуется применять такую практику в производственной среде.

    … и может быть поймете мое негодование.

  • Комплексная автоматизация с Ansible и OpenStack
    0

    понимаю, что это перевод,


    We only trust one here, “virtualenvwrapper”.

    но раз так, то интересно почему:


    $ sudo yum install python-pip
    $ sudo pip install virtualenvwrapper

    а не:


    $ sudo yum install python-pip epel-release
    $ sudo yum install python-virtualenvwrapper

    ?

  • Настройка Zabbix 3.2 на Ubuntu Server 16.04 LTS
    +2
    cd /tmp
    sudo wget ...

    нафига ?


    cd /usr/share/doc/zabbix-server-mysql
    sudo zcat create.sql.gz ....

    нафига ???


    Встречаются случаи, когда возникает ошибка с зависимостями.
    sudo apt-get -f install

    На продуктовом сервере такого быть не может)
    Либо система "нечистая", либо не те репы подключены, далее надо аккуратно выяснить в чем проблема:
    dpkg -I /tmp/your_pkg.deb| grep Depends


    sudo vim /etc/zabbix/zabbix_server.conf
    sudo vi /etc/zabbix/zabbix_agentd.conf

    ммм… "Списывание с одного источника — плагиат, списывание с двух — компиляция, с трех и более — диссертация." ®


    mysql -uroot -p

    а как же mysql_secure_installation ?


    Для того, чтобы веб-интерфейс Zabbix отображался на русском языке,
    необходимо русифицировать консоль
    (самого Linux сервера, на котором установлен Zabbix).

    Консоль??? Русифицировать!!! Да Вы еб… сь сударь!
    поверьте, этого достаточно:


    sudo locale-gen ru_RU.UTF-8
    sudo systemctl apache2/httpd/php5-fpm restart

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

    Что это делает на хабре ))) ???

  • Wayland на замену X Window System
    0

    Да, без особых косяков.
    Напрягает только этот баг https://bugs.freedesktop.org/show_bug.cgi?id=99235

  • Бывший разработчик Firefox: удалите сторонние антивирусы
    0

    … про его (defender) достаточность два важных слова сказано в последнем абзаце.
    Хотя и желтовато, TOTAL у победителей всего на 10% выше проигравших.
    Кстати, и ни слова про dr.web? Он не катируется за бугром?

  • HDMI-LVDS. От макета к релизу
    0
    ссылка на оригинал статьи http://habrahabr.ru/post/211753/
    Вы пытаетесь открыть публикацию, написанную пользователем the_bat,
    однако, публикация скрыта в черновики (самим автором или НЛО)

    Судя по всему, да, его.

  • Кто заблокировал локалхост и кому это выгодно?
    +2
    Зачем блокировать локалхост? надо было вот эти:
    8.8.8.8
    8.8.4.4
    77.88.8.8
    77.88.8.88
    77.88.8.7
    4.2.2.4
    4.2.2.2
    208.67.222.222
    208.67.220.220
    ....
  • Запускаем i2pd в контейнере Docker на CentOS 7
    +1
    Дело в том, что судя по документации:

    Не верьте никому, все врут.
    Так вот, в C6 и C7 есть CMake 3.x, а находится он в EPEL. Появился он там, где-то в марте 2016.
    Небольшие манипуляции, решают почти все вопросы:


    %if 0%{?rhel}  == 7
    BuildRequires:  cmake3
    %else
    BuildRequires:  cmake
    %endif

    Готовые пакеты для C7 можете забрать тут, https://copr.fedorainfracloud.org/coprs/vorona/i2pd/, как-то так:


    curl -s https://copr.fedorainfracloud.org/coprs/vorona/i2pd/repo/epel-7/vorona-i2pd-epel-7.repo -o /etc/yum.repos.d/i2pd-epel-7.repo
    yum install i2pd-systemd -y
  • Запускаем i2pd в контейнере Docker на CentOS 7
    0

    Да, да… они, разработчики, точно знают что есть в пакетной базе)