{"id":317269,"date":"2021-02-01T09:00:41","date_gmt":"2021-02-01T09:00:41","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=317269"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=317269","title":{"rendered":"\u0423\u043f\u0430\u043a\u043e\u0432\u043a\u0430 \u043b\u044e\u0431\u043e\u0433\u043e python \u043f\u0430\u043a\u0435\u0442\u0430 \u0432 rpm \u043f\u0430\u043a\u0435\u0442 \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e offline \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<p>\u0411\u044b\u0432\u0430\u044e\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c Python \u043f\u0430\u043a\u0435\u0442 c \u0435\u0433\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u0432 rpm \u043f\u0430\u043a\u0435\u0442.<\/p>\n<p>  <\/p>\n<p>\u0412 \u044d\u0442\u043e\u043c \u043f\u043e\u0441\u0442\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b 2 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430: fpm \u0438 rpmvenv.<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/fpm.readthedocs.io\/\" rel=\"nofollow noopener noreferrer\">fpm<\/a> \u2014 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0432 rpm, deb \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u044b.<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/github.com\/kevinconway\/rpmvenv\" rel=\"nofollow noopener noreferrer\">rpmvenv<\/a> \u2014 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u043b\u044f \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0438 virtualenv \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0432 rpm.<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<p>\u0412 \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 requirements.txt.<\/p>\n<p>  <\/p>\n<p>\u0424\u0430\u0439\u043b requirements.txt \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0442\u043e\u0439 \u0436\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0433\u0434\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0438 python \u043f\u0430\u043a\u0435\u0442\u0430 \u0432 rpm \u043f\u0430\u043a\u0435\u0442.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 rpm \u043f\u0430\u043a\u0435\u0442 \u0438 \u0435\u0433\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c linux \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c airflow.<\/p>\n<p>  <\/p>\n<p><strong>\u0427\u0430\u0441\u0442\u044c 0. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 requirements.txt<\/strong><\/p>\n<p>  <\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0431\u0443\u0434\u0435\u043c \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 apache-airflow.<\/p>\n<p>  <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 RPM \u0434\u043b\u044f apache-airflow.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">sudo yum install -y python3-devel python3-pip gcc gcc-c++ cyrus-sasl-devel krb5-devel<\/code><\/pre>\n<p>  <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 apache-airflow \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f PIP.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">sudo pip3 install apache-airflow[postgres,redis,hdfs,hive,kerberos,ldap,ssh]==1.10.12 --constraint &quot;https:\/\/raw.githubusercontent.com\/apache\/airflow\/constraints-1.10.12\/constraints-3.6.txt&quot;<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u0445 \u0441\u043a\u043e\u0431\u043a\u0430\u0445 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Python \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043b\u044f apache-airflow, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 apache-airflow \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 Python \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">pip3 freeze &gt; requirements.txt<\/code><\/pre>\n<p>  <\/p>\n<p><strong>\u0427\u0430\u0441\u0442\u044c 1. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 FPM<\/strong><\/p>\n<p>  <\/p>\n<p><strong>\u0427\u0430\u0441\u0442\u044c 1.1. \u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c virtualenv \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 FPM<\/strong><\/p>\n<p>  <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c RPM \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043b\u044f fpm.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">sudo yum install -y ruby-devel gcc make rpm-build rubygems<\/code><\/pre>\n<p>  <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c Python \u0438 Ruby \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043b\u044f fpm.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">gem install --version 1.12.2 --user-install ffi gem install --version 1.6.0 --user-install git pip3 install --user virtualenv-tools <\/code><\/pre>\n<p>  <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c fpm.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">gem install --no-document fpm<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c rpm \u043f\u0430\u043a\u0435\u0442 airflow c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u044f virtualenv.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">fpm  --verbose  -s virtualenv -t rpm --name airflow -v 1.10.12 --prefix \/home\/airflow requirements.txt ... Successfully installed Babel-2.8.0 Flask-1.1.2 Flask-Admin-1.5.4 Flask-AppBuilder-2.3.4 Flask-Babel-1.0.0 Flask-Caching-1.3.3 Flask-JWT-Extended-3.24.1 Flask-Login-0.4.1 Flask-OpenID-1.2.5 Flask-SQLAlchemy-2.4.4 Flask-WTF-0.14.3 Jinja2-2.11.2 Mako-1.1.3 Markdown-2.6.11 MarkupSafe-1.1.1 PyHive-0.6.3 PyJWT-1.7.1 PyNaCl-1.4.0 PyYAML-5.3.1 Pygments-2.6.1 SQLAlchemy-1.3.19 SQLAlchemy-JSONField-0.9.0 SQLAlchemy-Utils-0.36.8 WTForms-2.3.3 Werkzeug-0.16.1 alembic-1.4.2 apache-airflow-1.10.12 apispec-1.3.3 argcomplete-1.12.0 argparse-1.4.0 attrs-19.3.0 bcrypt-3.2.0 cached-property-1.5.1 cattrs-1.0.0 certifi-2020.6.20 cffi-1.14.2 chardet-3.0.4 click-6.7 colorama-0.4.3 colorlog-4.0.2 configparser-3.5.3 croniter-0.3.34 cryptography-3.0 defusedxml-0.6.0 dill-0.3.2 dnspython-1.16.0 docutils-0.16 email-validator-1.1.1 flask-swagger-0.2.14 funcsigs-1.0.2 future-0.18.2 graphviz-0.14.1 gunicorn-20.0.4 hmsclient-0.1.1 idna-2.10 importlib-metadata-1.7.0 iso8601-0.1.12 itsdangerous-1.1.0 json-merge-patch-0.2 jsonschema-3.2.0 lazy-object-proxy-1.5.1 ldap3-2.8 lockfile-0.12.2 marshmallow-2.21.0 marshmallow-enum-1.5.1 marshmallow-sqlalchemy-0.23.1 natsort-7.0.1 numpy-1.19.1 pandas-1.1.0 paramiko-2.7.1 pendulum-1.4.4 prison-0.1.3 protobuf-3.13.0 psutil-5.7.2 psycopg2-binary-2.8.5 pyasn1-0.4.8 pycparser-2.20 pykerberos-1.2.1 pyrsistent-0.16.0 pysftp-0.2.9 python-daemon-2.2.4 python-dateutil-2.8.1 python-editor-1.0.4 python-nvd3-0.15.0 python-slugify-4.0.1 python3-openid-3.2.0 pytz-2020.1 pytzdata-2020.1 redis-3.5.3 requests-2.24.0 requests-kerberos-0.12.0 sasl-0.2.1 setproctitle-1.1.10 six-1.15.0 snakebite-2.11.0 sshtunnel-0.1.5 tabulate-0.8.7 tenacity-4.12.0 text-unidecode-1.3 thrift-0.13.0 thrift-sasl-0.4.2 typing-3.7.4.3 typing-extensions-3.7.4.2 tzlocal-1.5.1 unicodecsv-0.14.1 urllib3-1.25.10 zipp-3.1.0 zope.deprecation-4.4.0 {:level=&gt;:info} Traceback (most recent call last): {:level=&gt;:info}   File &quot;\/home\/airflow\/.local\/bin\/virtualenv-tools&quot;, line 11, in &lt;module&gt; {:level=&gt;:info}     load_entry_point('virtualenv-tools==1.0', 'console_scripts', 'virtualenv-tools')() {:level=&gt;:info}   File &quot;\/usr\/lib\/python3.6\/site-packages\/pkg_resources\/__init__.py&quot;, line 476, in load_entry_point {:level=&gt;:info}     return get_distribution(dist).load_entry_point(group, name) {:level=&gt;:info}   File &quot;\/usr\/lib\/python3.6\/site-packages\/pkg_resources\/__init__.py&quot;, line 2700, in load_entry_point {:level=&gt;:info}     return ep.load() {:level=&gt;:info}   File &quot;\/usr\/lib\/python3.6\/site-packages\/pkg_resources\/__init__.py&quot;, line 2318, in load {:level=&gt;:info}     return self.resolve() {:level=&gt;:info}   File &quot;\/usr\/lib\/python3.6\/site-packages\/pkg_resources\/__init__.py&quot;, line 2324, in resolve {:level=&gt;:info}     module = __import__(self.module_name, fromlist=['__name__'], level=0) {:level=&gt;:info}   File &quot;\/home\/airflow\/.local\/lib\/python3.6\/site-packages\/virtualenv_tools.py&quot;, line 50 {:level=&gt;:info}     print 'A %s' % script_filename {:level=&gt;:info}                ^ {:level=&gt;:info} SyntaxError: Missing parentheses in call to 'print'. Did you mean print('A %s' % script_filename)? {:level=&gt;:info} Process failed: virtualenv-tools failed (exit code 1). Full command was:[&quot;virtualenv-tools&quot;, &quot;--update-path&quot;, &quot;\/home\/airflow&quot;] {:level=&gt;:error}<\/code><\/pre>\n<p>  <\/p>\n<p><a href=\"https:\/\/github.com\/jordansissel\/fpm\/issues\/1758\" rel=\"nofollow noopener noreferrer\">Issue<\/a> \u043f\u043e \u044d\u0442\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0435 \u0437\u0430\u0432\u0435\u0434\u0435\u043d\u0430.<\/p>\n<p>  <\/p>\n<p><strong>\u0427\u0430\u0441\u0442\u044c 1.2. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u044c dir \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 FPM<\/strong><\/p>\n<p>  <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c RPM \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043b\u044f fpm \u0438 virtualenv.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">sudo yum install -y ruby-devel gcc make rpm-build rubygems git sudo yum install -y python3-devel python3-pip gcc gcc-c++ cyrus-sasl-devel krb5-devel sudo yum -y install epel-release rpmdevtools wget<\/code><\/pre>\n<p>  <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c Python \u0438 Ruby \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043b\u044f fpm.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">gem install --version 1.12.2 --user-install ffi gem install --version 1.6.0 --user-install git pip3 install --user virtualenv<\/code><\/pre>\n<p>  <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c fpm.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">gem install --no-document fpm<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c virtualenv \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0432 \u043d\u0435\u0433\u043e airflow.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">mkdir -p \/home\/airflow\/airflow python3 -m venv airflow source \/home\/airflow\/airflow\/bin\/activate<\/code><\/pre>\n<p>  <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c airflow \u0432 virtualenv \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">python3 -m pip install apache-airflow[postgres,redis,hdfs,hive,kerberos,ldap,ssh]==1.10.12 --constraint &quot;https:\/\/raw.githubusercontent.com\/apache\/airflow\/constraints-1.10.12\/constraints-3.6.txt&quot; deactivate<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 deactivate \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0438\u0437 virtualenv \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u0423\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c virtualenv \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c airflow \u0432 rpm \u043f\u0430\u043a\u0435\u0442.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">fpm -s dir -t rpm -n airflow -v 1.10.12 --rpm-auto-add-directories --no-rpm-use-file-permissions --rpm-user airflow --rpm-group airflow --prefix \/home\/airflow\/airflow -C \/home\/airflow\/airflow<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f rpm \u043f\u0430\u043a\u0435\u0442. \u0412 \u0447\u0430\u0441\u0442\u0438 3 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c airflow \u0438\u0437 virtualenv \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<p><strong>\u0427\u0430\u0441\u0442\u044c 2. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 RPMVENV<\/strong><\/p>\n<p>  <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c RPM \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043b\u044f rpmvenv \u0438 virtualenv.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">sudo yum install -y python3-devel python3-pip gcc gcc-c++ cyrus-sasl-devel krb5-devel sudo yum -y install epel-release rpmdevtools wget<\/code><\/pre>\n<p>  <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c Python \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043b\u044f rpmvenv.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">pip3 install --user virtualenv<\/code><\/pre>\n<p>  <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c fpm.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">pip3 install --user rpmvenv<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u043e\u043f\u0438\u0440\u0443\u0435\u043c requirements.txt \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e, \u0433\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f rpmvenv.<\/p>\n<p>  <\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c rpmvenv \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">echo &quot;{}&quot; &gt; conf.json &amp;&amp; \\ LC_ALL=en_US.UTF-8 rpmvenv conf.json \\ --core_name=&quot;apache-airflow&quot; \\ --core_version=&quot;1.10.12&quot; \\ --core_license=&quot;ASL 2.0&quot; \\ --core_summary=&quot;apache-airflow&quot; \\ --extensions_enabled=&quot;blocks,python_venv&quot; \\ --python_venv_name=&quot;apache-airflow&quot; \\ --python_venv_path=&quot;\/home\/airflow&quot; \\ --python_venv_strip_binaries=&quot;false&quot; \\ --blocks_desc=&quot;apache-airflow&quot; \\ --python_venv_require_setup_py=&quot;false&quot; \\ --file_permissions_user=&quot;airflow&quot; \\ --file_permissions_group=&quot;airflow&quot;<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f rpm \u043f\u0430\u043a\u0435\u0442. \u0412 \u0447\u0430\u0441\u0442\u0438 3 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c airflow \u0438\u0437 virtualenv \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<p><strong>\u0427\u0430\u0441\u0442\u044c 3. \u0417\u0430\u043f\u0443\u0441\u043a Python \u043f\u0430\u043a\u0435\u0442\u0430 \u0438\u0437 virtualenv \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f<\/strong><\/p>\n<p>  <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c apache-airflow-1.10.12-1.x86_64.rpm<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">sudo yum install -y apache-airflow-1.10.12-1.x86_64.rpm<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u0445\u043e\u0434\u0438\u043c \u0432 virtualenv<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">source \/home\/airflow\/apache-airflow\/bin\/activate<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c airflow<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">airflow initdb airflow webserver -p 8080<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0432\u044b\u0445\u043e\u0434\u0438\u043c \u0438\u0437 virtualenv<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">deactivate<\/code><\/pre>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/540246\/\"> https:\/\/habr.com\/ru\/post\/540246\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<p>\u0411\u044b\u0432\u0430\u044e\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c Python \u043f\u0430\u043a\u0435\u0442 c \u0435\u0433\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u0432 rpm \u043f\u0430\u043a\u0435\u0442.<\/p>\n<p>  <\/p>\n<p>\u0412 \u044d\u0442\u043e\u043c \u043f\u043e\u0441\u0442\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b 2 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430: fpm \u0438 rpmvenv.<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/fpm.readthedocs.io\/\" rel=\"nofollow noopener noreferrer\">fpm<\/a> \u2014 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0432 rpm, deb \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u044b.<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/github.com\/kevinconway\/rpmvenv\" rel=\"nofollow noopener noreferrer\">rpmvenv<\/a> \u2014 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u043b\u044f \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0438 virtualenv \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0432 rpm.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-317269","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/317269","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=317269"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/317269\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=317269"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=317269"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=317269"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}