Thread: [pgadmin-hackers] Last few steps for pgadmin4 on RHEL 6

[pgadmin-hackers] Last few steps for pgadmin4 on RHEL 6

From
Devrim Gündüz
Date:
Hi,

I spent a couple of hours this morning to build pgadmin4 dependencies on RHEL
6. I think I made them work, but pgadmin4 does not run (actually it runs, but
the window comes empty). Here is the console output. Can you please take a
look?

[devrim@CentOS6x8664 ~]$ pgadmin4
Python path:  "/usr/lib/python2.6/site-packages:/usr/lib64/python2.6/site-packages"
Python Home:  ""
Webapp path:  "/usr/lib/python2.6/site-packages/pgadmin4-web/pgAdmin4.py"
/usr/lib/python2.6/site-packages/flask_security/forms.py:67: DeprecationWarning: Required is going away in WTForms 3.0,
useDataRequired 
  email_required = Required(message='EMAIL_NOT_PROVIDED')
/usr/lib/python2.6/site-packages/flask_security/forms.py:69: DeprecationWarning: Required is going away in WTForms 3.0,
useDataRequired 
  password_required = Required(message='PASSWORD_NOT_PROVIDED')
/usr/lib64/python2.6/site-packages/Crypto/Util/number.py:57: PowmInsecureWarning: Not using mpz_powm_sec.  You should
rebuildusing libgmp >= 5 to avoid timing attack vulnerability. 
  _warn("Not using mpz_powm_sec.  You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.",
PowmInsecureWarning)
loaded the Generic plugin
can't make "generic.orientation" because no QAccelerometer sensors exist
Exception in thread Thread-3:
Traceback (most recent call last):
  File "/usr/lib64/python2.6/threading.py", line 532, in __bootstrap_inner
    self.run()
  File "/usr/lib64/python2.6/threading.py", line 484, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/usr/lib64/python2.6/SocketServer.py", line 573, in process_request_thread
    self.handle_error(request, client_address)
  File "/usr/lib64/python2.6/SocketServer.py", line 570, in process_request_thread
    self.finish_request(request, client_address)
  File "/usr/lib64/python2.6/SocketServer.py", line 332, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/usr/lib64/python2.6/SocketServer.py", line 627, in __init__
    self.handle()
  File "/usr/lib/python2.6/site-packages/werkzeug/serving.py", line 216, in handle
    rv = BaseHTTPRequestHandler.handle(self)
  File "/usr/lib64/python2.6/BaseHTTPServer.py", line 329, in handle
    self.handle_one_request()
  File "/usr/lib/python2.6/site-packages/werkzeug/serving.py", line 251, in handle_one_request
    return self.run_wsgi()
  File "/usr/lib/python2.6/site-packages/werkzeug/serving.py", line 193, in run_wsgi
    execute(self.server.app)
  File "/usr/lib/python2.6/site-packages/werkzeug/serving.py", line 181, in execute
    application_iter = app(environ, start_response)
  File "/usr/lib/python2.6/site-packages/flask/app.py", line 2000, in __call__
    return self.wsgi_app(environ, start_response)
  File "/usr/lib/python2.6/site-packages/flask/app.py", line 1991, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "/usr/lib/python2.6/site-packages/flask/app.py", line 1567, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/lib/python2.6/site-packages/flask/app.py", line 1988, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/lib/python2.6/site-packages/flask/app.py", line 1643, in full_dispatch_request
    response = self.process_response(response)
  File "/usr/lib/python2.6/site-packages/flask/app.py", line 1862, in process_response
    response = handler(response)
  File "/usr/lib/python2.6/site-packages/flask_htmlmin.py", line 27, in response_minify
    remove_comments=True, reduce_empty_attributes=True, remove_optional_attribute_quotes=False)
  File "/usr/lib/python2.6/site-packages/htmlmin/main.py", line 98, in minify
    minifier.feed(input)
  File "/usr/lib64/python2.6/HTMLParser.py", line 108, in feed
    self.goahead(0)
  File "/usr/lib64/python2.6/HTMLParser.py", line 152, in goahead
    k = self.parse_comment(i)
  File "/usr/lib64/python2.6/markupbase.py", line 174, in parse_comment
    self.handle_comment(rawdata[i+4: j])
  File "/usr/lib/python2.6/site-packages/htmlmin/parser.py", line 281, in handle_comment
    data[1:] if data[0] == '!' else data))
ValueError: zero length field name in format

If you want to test it yourself, the RPMs will be available in 9.6 *testing* repo in next 50 mins.

Regards,
-- 
Devrim Gündüz
EnterpriseDB: http://www.enterprisedb.com
PostgreSQL Danışmanı/Consultant, Red Hat Certified Engineer
Twitter: @DevrimGunduz , @DevrimGunduzTR

Attachment

Re: [pgadmin-hackers] Last few steps for pgadmin4 on RHEL 6

From
Dave Page
Date:


-- 
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK:http://www.enterprisedb.com
The Enterprise PostgreSQL Company

On 16 Mar 2017, at 04:24, Devrim Gündüz <devrim@gunduz.org> wrote:


Hi,

I spent a couple of hours this morning to build pgadmin4 dependencies on RHEL
6. I think I made them work, but pgadmin4 does not run (actually it runs, but
the window comes empty). Here is the console output. Can you please take a
look?

[devrim@CentOS6x8664 ~]$ pgadmin4
Python path:  "/usr/lib/python2.6/site-packages:/usr/lib64/python2.6/site-packages"
Python Home:  ""
Webapp path:  "/usr/lib/python2.6/site-packages/pgadmin4-web/pgAdmin4.py"
/usr/lib/python2.6/site-packages/flask_security/forms.py:67: DeprecationWarning: Required is going away in WTForms 3.0, use DataRequired
 email_required = Required(message='EMAIL_NOT_PROVIDED')
/usr/lib/python2.6/site-packages/flask_security/forms.py:69: DeprecationWarning: Required is going away in WTForms 3.0, use DataRequired
 password_required = Required(message='PASSWORD_NOT_PROVIDED')
/usr/lib64/python2.6/site-packages/Crypto/Util/number.py:57: PowmInsecureWarning: Not using mpz_powm_sec.  You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.
 _warn("Not using mpz_powm_sec.  You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.", PowmInsecureWarning)
loaded the Generic plugin
can't make "generic.orientation" because no QAccelerometer sensors exist
Exception in thread Thread-3:
Traceback (most recent call last):
 File "/usr/lib64/python2.6/threading.py", line 532, in __bootstrap_inner
   self.run()
 File "/usr/lib64/python2.6/threading.py", line 484, in run
   self.__target(*self.__args, **self.__kwargs)
 File "/usr/lib64/python2.6/SocketServer.py", line 573, in process_request_thread
   self.handle_error(request, client_address)
 File "/usr/lib64/python2.6/SocketServer.py", line 570, in process_request_thread
   self.finish_request(request, client_address)
 File "/usr/lib64/python2.6/SocketServer.py", line 332, in finish_request
   self.RequestHandlerClass(request, client_address, self)
 File "/usr/lib64/python2.6/SocketServer.py", line 627, in __init__
   self.handle()
 File "/usr/lib/python2.6/site-packages/werkzeug/serving.py", line 216, in handle
   rv = BaseHTTPRequestHandler.handle(self)
 File "/usr/lib64/python2.6/BaseHTTPServer.py", line 329, in handle
   self.handle_one_request()
 File "/usr/lib/python2.6/site-packages/werkzeug/serving.py", line 251, in handle_one_request
   return self.run_wsgi()
 File "/usr/lib/python2.6/site-packages/werkzeug/serving.py", line 193, in run_wsgi
   execute(self.server.app)
 File "/usr/lib/python2.6/site-packages/werkzeug/serving.py", line 181, in execute
   application_iter = app(environ, start_response)
 File "/usr/lib/python2.6/site-packages/flask/app.py", line 2000, in __call__
   return self.wsgi_app(environ, start_response)
 File "/usr/lib/python2.6/site-packages/flask/app.py", line 1991, in wsgi_app
   response = self.make_response(self.handle_exception(e))
 File "/usr/lib/python2.6/site-packages/flask/app.py", line 1567, in handle_exception
   reraise(exc_type, exc_value, tb)
 File "/usr/lib/python2.6/site-packages/flask/app.py", line 1988, in wsgi_app
   response = self.full_dispatch_request()
 File "/usr/lib/python2.6/site-packages/flask/app.py", line 1643, in full_dispatch_request
   response = self.process_response(response)
 File "/usr/lib/python2.6/site-packages/flask/app.py", line 1862, in process_response
   response = handler(response)
 File "/usr/lib/python2.6/site-packages/flask_htmlmin.py", line 27, in response_minify
   remove_comments=True, reduce_empty_attributes=True, remove_optional_attribute_quotes=False)
 File "/usr/lib/python2.6/site-packages/htmlmin/main.py", line 98, in minify
   minifier.feed(input)
 File "/usr/lib64/python2.6/HTMLParser.py", line 108, in feed
   self.goahead(0)
 File "/usr/lib64/python2.6/HTMLParser.py", line 152, in goahead
   k = self.parse_comment(i)
 File "/usr/lib64/python2.6/markupbase.py", line 174, in parse_comment
   self.handle_comment(rawdata[i+4: j])
 File "/usr/lib/python2.6/site-packages/htmlmin/parser.py", line 281, in handle_comment
   data[1:] if data[0] == '!' else data))
ValueError: zero length field name in format

If you want to test it yourself, the RPMs will be available in 9.6 *testing* repo in next 50 mins.

Regards,
-- 
Devrim Gündüz
EnterpriseDB: http://www.enterprisedb.com
PostgreSQL Danışmanı/Consultant, Red Hat Certified Engineer
Twitter: @DevrimGunduz , @DevrimGunduzTR

Re: [pgadmin-hackers] Last few steps for pgadmin4 on RHEL 6

From
Dave Page
Date:
That one is easy, there's a setting in config.py to enable/disable HTML minimisation. Put that in config_distro.py and set it to False.

In 1.4, that'll happen automatically with Python 2.6.

-- 
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK:http://www.enterprisedb.com
The Enterprise PostgreSQL Company

On 16 Mar 2017, at 04:24, Devrim Gündüz <devrim@gunduz.org> wrote:


Hi,

I spent a couple of hours this morning to build pgadmin4 dependencies on RHEL
6. I think I made them work, but pgadmin4 does not run (actually it runs, but
the window comes empty). Here is the console output. Can you please take a
look?

[devrim@CentOS6x8664 ~]$ pgadmin4
Python path:  "/usr/lib/python2.6/site-packages:/usr/lib64/python2.6/site-packages"
Python Home:  ""
Webapp path:  "/usr/lib/python2.6/site-packages/pgadmin4-web/pgAdmin4.py"
/usr/lib/python2.6/site-packages/flask_security/forms.py:67: DeprecationWarning: Required is going away in WTForms 3.0, use DataRequired
 email_required = Required(message='EMAIL_NOT_PROVIDED')
/usr/lib/python2.6/site-packages/flask_security/forms.py:69: DeprecationWarning: Required is going away in WTForms 3.0, use DataRequired
 password_required = Required(message='PASSWORD_NOT_PROVIDED')
/usr/lib64/python2.6/site-packages/Crypto/Util/number.py:57: PowmInsecureWarning: Not using mpz_powm_sec.  You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.
 _warn("Not using mpz_powm_sec.  You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.", PowmInsecureWarning)
loaded the Generic plugin
can't make "generic.orientation" because no QAccelerometer sensors exist
Exception in thread Thread-3:
Traceback (most recent call last):
 File "/usr/lib64/python2.6/threading.py", line 532, in __bootstrap_inner
   self.run()
 File "/usr/lib64/python2.6/threading.py", line 484, in run
   self.__target(*self.__args, **self.__kwargs)
 File "/usr/lib64/python2.6/SocketServer.py", line 573, in process_request_thread
   self.handle_error(request, client_address)
 File "/usr/lib64/python2.6/SocketServer.py", line 570, in process_request_thread
   self.finish_request(request, client_address)
 File "/usr/lib64/python2.6/SocketServer.py", line 332, in finish_request
   self.RequestHandlerClass(request, client_address, self)
 File "/usr/lib64/python2.6/SocketServer.py", line 627, in __init__
   self.handle()
 File "/usr/lib/python2.6/site-packages/werkzeug/serving.py", line 216, in handle
   rv = BaseHTTPRequestHandler.handle(self)
 File "/usr/lib64/python2.6/BaseHTTPServer.py", line 329, in handle
   self.handle_one_request()
 File "/usr/lib/python2.6/site-packages/werkzeug/serving.py", line 251, in handle_one_request
   return self.run_wsgi()
 File "/usr/lib/python2.6/site-packages/werkzeug/serving.py", line 193, in run_wsgi
   execute(self.server.app)
 File "/usr/lib/python2.6/site-packages/werkzeug/serving.py", line 181, in execute
   application_iter = app(environ, start_response)
 File "/usr/lib/python2.6/site-packages/flask/app.py", line 2000, in __call__
   return self.wsgi_app(environ, start_response)
 File "/usr/lib/python2.6/site-packages/flask/app.py", line 1991, in wsgi_app
   response = self.make_response(self.handle_exception(e))
 File "/usr/lib/python2.6/site-packages/flask/app.py", line 1567, in handle_exception
   reraise(exc_type, exc_value, tb)
 File "/usr/lib/python2.6/site-packages/flask/app.py", line 1988, in wsgi_app
   response = self.full_dispatch_request()
 File "/usr/lib/python2.6/site-packages/flask/app.py", line 1643, in full_dispatch_request
   response = self.process_response(response)
 File "/usr/lib/python2.6/site-packages/flask/app.py", line 1862, in process_response
   response = handler(response)
 File "/usr/lib/python2.6/site-packages/flask_htmlmin.py", line 27, in response_minify
   remove_comments=True, reduce_empty_attributes=True, remove_optional_attribute_quotes=False)
 File "/usr/lib/python2.6/site-packages/htmlmin/main.py", line 98, in minify
   minifier.feed(input)
 File "/usr/lib64/python2.6/HTMLParser.py", line 108, in feed
   self.goahead(0)
 File "/usr/lib64/python2.6/HTMLParser.py", line 152, in goahead
   k = self.parse_comment(i)
 File "/usr/lib64/python2.6/markupbase.py", line 174, in parse_comment
   self.handle_comment(rawdata[i+4: j])
 File "/usr/lib/python2.6/site-packages/htmlmin/parser.py", line 281, in handle_comment
   data[1:] if data[0] == '!' else data))
ValueError: zero length field name in format

If you want to test it yourself, the RPMs will be available in 9.6 *testing* repo in next 50 mins.

Regards,
-- 
Devrim Gündüz
EnterpriseDB: http://www.enterprisedb.com
PostgreSQL Danışmanı/Consultant, Red Hat Certified Engineer
Twitter: @DevrimGunduz , @DevrimGunduzTR

Re: [pgadmin-hackers] Last few steps for pgadmin4 on RHEL 6

From
Devrim Gündüz
Date:
Hi Dave,

On Thu, 2017-03-16 at 07:44 +0000, Dave Page wrote:
> That one is easy, there's a setting in config.py to enable/disable HTML
> minimisation. Put that in config_distro.py and set it to False.

Thank you! 1.3-2 RPMs on RHEL 6 in 9.6 testing repo now builds and run on RHEL
6 (x86_64). 32-bit RPMs are due next week.

However, I am not too excited about the current situation in the repo, as I
updated some RHEL 6 packages (like -crypto, etc), which may mean breakage to
some servers. I'll think about that for a while.

> In 1.4, that'll happen automatically with Python 2.6.

Great!

Regards,
--
Devrim Gündüz
EnterpriseDB: http://www.enterprisedb.com
PostgreSQL Danışmanı/Consultant, Red Hat Certified Engineer
Twitter: @DevrimGunduz , @DevrimGunduzTR

Attachment

Re: [pgadmin-hackers] Last few steps for pgadmin4 on RHEL 6

From
Dave Page
Date:
Hi

On Thu, Mar 16, 2017 at 5:15 PM, Devrim Gündüz <devrim@gunduz.org> wrote:
>
> Hi Dave,
>
> On Thu, 2017-03-16 at 07:44 +0000, Dave Page wrote:
>> That one is easy, there's a setting in config.py to enable/disable HTML
>> minimisation. Put that in config_distro.py and set it to False.
>
> Thank you! 1.3-2 RPMs on RHEL 6 in 9.6 testing repo now builds and run on RHEL
> 6 (x86_64). 32-bit RPMs are due next week.
>
> However, I am not too excited about the current situation in the repo, as I
> updated some RHEL 6 packages (like -crypto, etc), which may mean breakage to
> some servers. I'll think about that for a while.

Oh, urgh. Can we create private versions of them? That's what we had
to do with ICU for EPAS in EDB; we have an edb-icu package which uses
the specific version we required.

>> In 1.4, that'll happen automatically with Python 2.6.
>
> Great!
>
> Regards,
> --
> Devrim Gündüz
> EnterpriseDB: http://www.enterprisedb.com
> PostgreSQL Danışmanı/Consultant, Red Hat Certified Engineer
> Twitter: @DevrimGunduz , @DevrimGunduzTR



--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


Re: [pgadmin-hackers] Last few steps for pgadmin4 on RHEL 6

From
Devrim Gündüz
Date:
Hi Dave,

On Fri, 2017-03-17 at 08:57 +0000, Dave Page wrote:
> > However, I am not too excited about the current situation in the repo, as I
> > updated some RHEL 6 packages (like -crypto, etc), which may mean breakage
> > to
> > some servers. I'll think about that for a while.
>
> Oh, urgh. Can we create private versions of them? That's what we had
> to do with ICU for EPAS in EDB; we have an edb-icu package which uses
> the specific version we required.

We *can*, but not sure it will work. Eventually it will overwrite to the same
files (say, -crypto), and RPM will complain about conflicting packages -- or
let me ask it the other way: Any chance to tell pgadmin4 to look at to "other"
-crypto package content (say, pgadmin4-python-crypto) , instead of the OS
supplied one?

Regards,
--
Devrim Gündüz
EnterpriseDB: http://www.enterprisedb.com
PostgreSQL Danışmanı/Consultant, Red Hat Certified Engineer
Twitter: @DevrimGunduz , @DevrimGunduzTR

Attachment

Re: [pgadmin-hackers] Last few steps for pgadmin4 on RHEL 6

From
Dave Page
Date:
On Fri, Mar 17, 2017 at 9:11 AM, Devrim Gündüz <devrim@gunduz.org> wrote:
>
> Hi Dave,
>
> On Fri, 2017-03-17 at 08:57 +0000, Dave Page wrote:
>> > However, I am not too excited about the current situation in the repo, as I
>> > updated some RHEL 6 packages (like -crypto, etc), which may mean breakage
>> > to
>> > some servers. I'll think about that for a while.
>>
>> Oh, urgh. Can we create private versions of them? That's what we had
>> to do with ICU for EPAS in EDB; we have an edb-icu package which uses
>> the specific version we required.
>
> We *can*, but not sure it will work. Eventually it will overwrite to the same
> files (say, -crypto), and RPM will complain about conflicting packages -- or
> let me ask it the other way: Any chance to tell pgadmin4 to look at to "other"
> -crypto package content (say, pgadmin4-python-crypto) , instead of the OS
> supplied one?

Oh, it was python-crypto? I was thinking you meant libcrypto.

Hmm. That might be tricky. It might work if you just install it into
the web/ directory.

Is the default version actually too old? It's quite possible it will
work, but we just haven't tested back that far. The version numbers in
requirements.txt are really just what we know works, rather than what
actually will in many cases.

--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


Re: [pgadmin-hackers] Last few steps for pgadmin4 on RHEL 6

From
Devrim Gündüz
Date:
Hi,

On Fri, 2017-03-17 at 09:40 +0000, Dave Page wrote:
> Hmm. That might be tricky. It might work if you just install it into
> the web/ directory.

If we can make sure that it works, I can rename all packages (like pgadmin4-
python-crypto), edit spec files, install them under the web/ directory. This
will prevent the breakage that I mentioned at the end of this email.

> Is the default version actually too old?

It is 2.0.1 on RHEL 6 (vs 2.6.1 on RHEL 7, which is the version that I also
used in the PGDG updated packages), and I'm seeing 2.6.1 in the
requirements.txt file.

> It's quite possible it will work, but we just haven't tested back that far.
> The version numbers in requirements.txt are really just what we know works,
> rather than what actually will in many cases.

Just a FYI -- this is the list of the packages that I either added to RHEL 6
(via PGDG repo, not EPEL), or updated to a new version:

python-beautifulsoup4
python-blinker
python-crypto
python-dateutil
python-fixtures
python-flask
python-flask-babel
python-flask-gravatar
python-flask-htmlmin
python-flask-login
python-flask-mail
python-flask-principal
python-flask-security
python-flask-sqlalchemy
python-flask-wtf
python-html5lib
python-htmlmin
python-importlib
python-itsdangerous
python-jinja2
python-markupsafe
python-mimeparse
python-passlib
python-pbr
python-pyrsistent
python-simplejson
python-speaklater
python-sqlalchemy
python-sqlparse
python-werkzeug
python-wsgiref
python-wtforms

At this point, I'm seriously considering to invent another sub-repo, at least
to host these python dependencies, if installing under web/ won't work. The
Python packages are purely static, and won't be updated frequently enough. We
can host the main pgadmin4 package in our repo, but then it will be users'
responsibility to install the dependencies by using our repo, which may break
their systems (or not, no idea)

Regards,
--
Devrim Gündüz
EnterpriseDB: http://www.enterprisedb.com
PostgreSQL Danışmanı/Consultant, Red Hat Certified Engineer
Twitter: @DevrimGunduz , @DevrimGunduzTR

Attachment

Re: [pgadmin-hackers] Last few steps for pgadmin4 on RHEL 6

From
Magnus Hagander
Date:


On Sun, Mar 19, 2017 at 2:33 PM, Devrim Gündüz <devrim@gunduz.org> wrote:

Hi,

On Fri, 2017-03-17 at 09:40 +0000, Dave Page wrote:
> Hmm. That might be tricky. It might work if you just install it into
> the web/ directory.

If we can make sure that it works, I can rename all packages (like pgadmin4-
python-crypto), edit spec files, install them under the web/ directory. This
will prevent the breakage that I mentioned at the end of this email.

> Is the default version actually too old?

It is 2.0.1 on RHEL 6 (vs 2.6.1 on RHEL 7, which is the version that I also
used in the PGDG updated packages), and I'm seeing 2.6.1 in the
requirements.txt file.

> It's quite possible it will work, but we just haven't tested back that far.
> The version numbers in requirements.txt are really just what we know works,
> rather than what actually will in many cases.

Just a FYI -- this is the list of the packages that I either added to RHEL 6
(via PGDG repo, not EPEL), or updated to a new version:

python-beautifulsoup4
python-blinker
python-crypto
python-dateutil
python-fixtures
python-flask
python-flask-babel
python-flask-gravatar
python-flask-htmlmin
python-flask-login
python-flask-mail
python-flask-principal
python-flask-security
python-flask-sqlalchemy
python-flask-wtf
python-html5lib
python-htmlmin
python-importlib
python-itsdangerous
python-jinja2
python-markupsafe
python-mimeparse
python-passlib
python-pbr
python-pyrsistent
python-simplejson
python-speaklater
python-sqlalchemy
python-sqlparse
python-werkzeug
python-wsgiref
python-wtforms

At this point, I'm seriously considering to invent another sub-repo, at least
to host these python dependencies, if installing under web/ won't work. The
Python packages are purely static, and won't be updated frequently enough. We
can host the main pgadmin4 package in our repo, but then it will be users'
responsibility to install the dependencies by using our repo, which may break
their systems (or not, no idea)


Yikes. Yeah you definitely do *not* want to have new versions of all those packages show up on peoples systems by default, that'll break a whole lot of things. 

I don't think keeping them in a separate repository is really going to work either -- it will still cause the breakage for anybody who wants to use pgadmin4.

The reasonable thing would be to install them locally in the pgadmin4 package (or in a pgadmin4-dependencies or whatever you want to call it), in a way that they are not used by any other software on the system. If that's not possible, I think you're just going to have to declare RHEL6 as unsupported for it. But surely most or all of that can run inside a virtualenv together with the pgadmin code, so I would be surprised if they cannot be installed locally.

Finally, I think you need to be careful about calling them "purely static". Several of those will need to be monitored for security updates and new versions pushed when those show up, if you end up bundling them. Especially important if pgadmin4 is used in server mode, but there's definitely things in there that would be critical to make sure they're updated for desktop mode as well.

--

Re: [pgadmin-hackers] Last few steps for pgadmin4 on RHEL 6

From
Dave Page
Date:
On Sun, Mar 19, 2017 at 1:41 PM, Magnus Hagander <magnus@hagander.net> wrote:
>
>
> On Sun, Mar 19, 2017 at 2:33 PM, Devrim Gündüz <devrim@gunduz.org> wrote:
>>
>>
>> Hi,
>>
>> On Fri, 2017-03-17 at 09:40 +0000, Dave Page wrote:
>> > Hmm. That might be tricky. It might work if you just install it into
>> > the web/ directory.
>>
>> If we can make sure that it works, I can rename all packages (like
>> pgadmin4-
>> python-crypto), edit spec files, install them under the web/ directory.
>> This
>> will prevent the breakage that I mentioned at the end of this email.
>>
>> > Is the default version actually too old?
>>
>> It is 2.0.1 on RHEL 6 (vs 2.6.1 on RHEL 7, which is the version that I
>> also
>> used in the PGDG updated packages), and I'm seeing 2.6.1 in the
>> requirements.txt file.
>>
>> > It's quite possible it will work, but we just haven't tested back that
>> > far.
>> > The version numbers in requirements.txt are really just what we know
>> > works,
>> > rather than what actually will in many cases.
>>
>> Just a FYI -- this is the list of the packages that I either added to RHEL
>> 6
>> (via PGDG repo, not EPEL), or updated to a new version:
>>
>> python-beautifulsoup4
>> python-blinker
>> python-crypto
>> python-dateutil
>> python-fixtures
>> python-flask
>> python-flask-babel
>> python-flask-gravatar
>> python-flask-htmlmin
>> python-flask-login
>> python-flask-mail
>> python-flask-principal
>> python-flask-security
>> python-flask-sqlalchemy
>> python-flask-wtf
>> python-html5lib
>> python-htmlmin
>> python-importlib
>> python-itsdangerous
>> python-jinja2
>> python-markupsafe
>> python-mimeparse
>> python-passlib
>> python-pbr
>> python-pyrsistent
>> python-simplejson
>> python-speaklater
>> python-sqlalchemy
>> python-sqlparse
>> python-werkzeug
>> python-wsgiref
>> python-wtforms
>>
>> At this point, I'm seriously considering to invent another sub-repo, at
>> least
>> to host these python dependencies, if installing under web/ won't work.
>> The
>> Python packages are purely static, and won't be updated frequently enough.
>> We
>> can host the main pgadmin4 package in our repo, but then it will be users'
>> responsibility to install the dependencies by using our repo, which may
>> break
>> their systems (or not, no idea)
>>
>
> Yikes. Yeah you definitely do *not* want to have new versions of all those
> packages show up on peoples systems by default, that'll break a whole lot of
> things.

+<several hundred>

> I don't think keeping them in a separate repository is really going to work
> either -- it will still cause the breakage for anybody who wants to use
> pgadmin4.

Yeah.

> The reasonable thing would be to install them locally in the pgadmin4
> package (or in a pgadmin4-dependencies or whatever you want to call it), in
> a way that they are not used by any other software on the system. If that's
> not possible, I think you're just going to have to declare RHEL6 as
> unsupported for it. But surely most or all of that can run inside a
> virtualenv together with the pgadmin code, so I would be surprised if they
> cannot be installed locally.
>
> Finally, I think you need to be careful about calling them "purely static".
> Several of those will need to be monitored for security updates and new
> versions pushed when those show up, if you end up bundling them. Especially
> important if pgadmin4 is used in server mode, but there's definitely things
> in there that would be critical to make sure they're updated for desktop
> mode as well.

I think the first question to answer is, of the packages that already
exist in Centos/EPEL, which ones are actually too old to be used?

As I mentioned earlier in the thread, the version numbers in our
requirements.txt file are really just "the oldest versions we're tried
and know work" rather than a definitive list of absolute minimum
versions.

It may be that in reality, there are no problems, or that it's just
one or two packages that we need newer versions of.

--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


Re: [pgadmin-hackers] Last few steps for pgadmin4 on RHEL 6

From
Devrim Gündüz
Date:
Hi Dave,

On Mon, 2017-03-20 at 10:44 +0000, Dave Page wrote:
> I think the first question to answer is, of the packages that already
> exist in Centos/EPEL, which ones are actually too old to be used?

Don't know. Needs some testing from someone.

> As I mentioned earlier in the thread, the version numbers in our
> requirements.txt file are really just "the oldest versions we're tried
> and know work" rather than a definitive list of absolute minimum
> versions.

I just finished documenting my work here:

https://docs.google.com/spreadsheets/d/1PULZkQUrJYslVsuhBriPr0EhxD_0gf15niyn3KRf8KU/edit?usp=sharing

You can see and compare/comment on the versions.

Regards,
--
Devrim Gündüz
EnterpriseDB: http://www.enterprisedb.com
PostgreSQL Danışmanı/Consultant, Red Hat Certified Engineer
Twitter: @DevrimGunduz , @DevrimGunduzTR

Attachment

Re: [pgadmin-hackers] Last few steps for pgadmin4 on RHEL 6

From
Dave Page
Date:
On Mon, Mar 20, 2017 at 12:06 PM, Devrim Gündüz <devrim@gunduz.org> wrote:
>
> Hi Dave,
>
> On Mon, 2017-03-20 at 10:44 +0000, Dave Page wrote:
>> I think the first question to answer is, of the packages that already
>> exist in Centos/EPEL, which ones are actually too old to be used?
>
> Don't know. Needs some testing from someone.

Hey, I know "someone"! Let's call him Devrim :-)

So, I think the easy way to do this is just install whatever is
available from the dependency list, regardless of version. Then, add
the packages you've built for anything that doesn't exist at all.
Then, just try running pgAdmin, and see what happens. It may be that
it just works, or it may be that we can fix any issues in code.

Thanks!

--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


Re: Last few steps for pgadmin4 on RHEL 6

From
Devrim Gündüz
Date:
Hi,

On Mon, 2017-03-20 at 12:10 +0000, Dave Page wrote:
> Hey, I know "someone"! Let's call him Devrim :-)

:-)

> So, I think the easy way to do this is just install whatever is
> available from the dependency list, regardless of version. Then, add
> the packages you've built for anything that doesn't exist at all.
> Then, just try running pgAdmin, and see what happens. It may be that
> it just works, or it may be that we can fix any issues in code.

It first failed with passlib:

    self._from_dict(kwds)
  File "/usr/lib/python2.6/site-packages/passlib/context.py", line 473, in _from_dict
    raise KeyError("known scheme in deprecated list: %r" % (scheme,))
KeyError: "known scheme in deprecated list: 'auto'"

This went away after upgrading to my version. Following that, pgadmin4 failed with:

  File "/usr/lib/python2.6/site-packages/pgadmin4-web/pgadmin/utils/driver/psycopg2/__init__.py", line 28, in <module>
    from pgadmin.utils.crypto import decrypt
  File "/usr/lib/python2.6/site-packages/pgadmin4-web/pgadmin/utils/crypto.py", line 15, in <module>
    from Crypto import Random
ImportError: cannot import name Random

...and error goes away when I update python-crypto package.


Regards,
--
Devrim Gündüz
EnterpriseDB: http://www.enterprisedb.com
PostgreSQL Danışmanı/Consultant, Red Hat Certified Engineer
Twitter: @DevrimGunduz , @DevrimGunduzTR

Attachment

Re: Last few steps for pgadmin4 on RHEL 6

From
Dave Page
Date:
On Fri, Mar 24, 2017 at 11:57 AM, Devrim Gündüz <devrim@gunduz.org> wrote:
>
> Hi,
>
> On Mon, 2017-03-20 at 12:10 +0000, Dave Page wrote:
>> Hey, I know "someone"! Let's call him Devrim :-)
>
> :-)
>
>> So, I think the easy way to do this is just install whatever is
>> available from the dependency list, regardless of version. Then, add
>> the packages you've built for anything that doesn't exist at all.
>> Then, just try running pgAdmin, and see what happens. It may be that
>> it just works, or it may be that we can fix any issues in code.
>
> It first failed with passlib:
>
>     self._from_dict(kwds)
>   File "/usr/lib/python2.6/site-packages/passlib/context.py", line 473, in _from_dict
>     raise KeyError("known scheme in deprecated list: %r" % (scheme,))
> KeyError: "known scheme in deprecated list: 'auto'"
>
> This went away after upgrading to my version. Following that, pgadmin4 failed with:
>
>   File "/usr/lib/python2.6/site-packages/pgadmin4-web/pgadmin/utils/driver/psycopg2/__init__.py", line 28, in
<module>
>     from pgadmin.utils.crypto import decrypt
>   File "/usr/lib/python2.6/site-packages/pgadmin4-web/pgadmin/utils/crypto.py", line 15, in <module>
>     from Crypto import Random
> ImportError: cannot import name Random
>
> ...and error goes away when I update python-crypto package.

OK - please try dropping the updated version of that package into the
web/ directory, and removing it from the system - so you have:

Crypto/
  ...
web/
  pgadmin/
    about/
    browser/
    ...

Does that work?

--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


Re: Last few steps for pgadmin4 on RHEL 6

From
Devrim Gündüz
Date:
Hi Dave,

On Fri, 2017-03-24 at 13:14 +0000, Dave Page wrote:
> OK - please try dropping the updated version of that package into the
> web/ directory, and removing it from the system - so you have:
>
> Crypto/
>   ...
> web/
>   pgadmin/
>     about/
>     browser/
>     ...
>
> Does that work?

Sorry for the delay, I'll take a look at this today.

Regards,
--
Devrim Gündüz
EnterpriseDB: http://www.enterprisedb.com
PostgreSQL Danışmanı/Consultant, Red Hat Certified Engineer
Twitter: @DevrimGunduz , @DevrimGunduzTR

Attachment