pcp
[Top] [All Lists]

Re: [pcp] Broken without python3-pcp and libpcp-import1 on Xenial

To: Jamie Bainbridge <jamie.bainbridge@xxxxxxxxx>
Subject: Re: [pcp] Broken without python3-pcp and libpcp-import1 on Xenial
From: Nathan Scott <nathans@xxxxxxxxxx>
Date: Mon, 20 Jun 2016 00:13:34 -0400 (EDT)
Cc: pcp@xxxxxxxxxxx
Delivered-to: pcp@xxxxxxxxxxx
In-reply-to: <CAAvyFNh0zzMwG2QOUaOJBhXECP_T1_21-V9J14W+g18a4DVfLA@xxxxxxxxxxxxxx>
References: <CAAvyFNh0zzMwG2QOUaOJBhXECP_T1_21-V9J14W+g18a4DVfLA@xxxxxxxxxxxxxx>
Reply-to: Nathan Scott <nathans@xxxxxxxxxx>
Thread-index: 3mVSnCp1i0H2YnOGonmAzO4r9tNJfw==
Thread-topic: Broken without python3-pcp and libpcp-import1 on Xenial
Hi Jamie,

----- Original Message -----
> Install PCP:
> 
> $ echo "deb https://dl.bintray.com/pcp/xenial xenial main" | sudo tee
> -a /etc/apt/sources.list
> $ sudo apt-get update
> $ sudo apt-get install pcp pcp-gui pcp-doc python-pcp
> 
> I think Xenial defaults to Python 3, so we get:
> 
> $ pmrep network.interface.in.bytes
> Traceback (most recent call last):
>   File "/usr/bin/pmrep", line 65, in <module>
>     from pcp import pmapi, pmi
> ImportError: No module named 'pcp'
> 

(yep, a relatively new missing dependency, as you found later)

> Install the Python 3 bindings and try again:
> 
> $ sudo apt-get install python3-pcp
> 
> $ pmrep network.interface.in.bytes
> Traceback (most recent call last):
>   File "/usr/bin/pmrep", line 65, in <module>
>     from pcp import pmapi, pmi
>   File "/usr/lib/python3/dist-packages/pcp/pmi.py", line 66, in <module>
>     LIBPCP_IMPORT.pmiDump.restype = None
>   File "/usr/lib/python3.5/ctypes/__init__.py", line 360, in __getattr__
>     func = self.__getitem__(name)
>   File "/usr/lib/python3.5/ctypes/__init__.py", line 365, in __getitem__
>     func = self._FuncPtr((name_or_ordinal, self))
> AttributeError: python3: undefined symbol: pmiDump
> 
> pmiostat still works when in this state.

Yeah, just pmrep needs this module.

> Install some random things which sound about right :)

:)

> $ sudo apt-get install libpcp-import1
> 
> Now the original command works fine:
> 
> $ pmrep network.interface.in.bytes
> 
> Removing python3-pcp breaks it with "ImportError: No module named 'pcp'"
> again.

Ugh, new problem there.  :(

> I'm not sure how to fix this. Reading "Declaring relationships between
> packages" [1] I see debian/control.master contains:
> 
> Package: pcp
> Depends: ..., python-pcp | python3-pcp, python | python3
> 
> Is this a preferential order? Like it prefers "python,python-pcp" over
> "python3,python3-pcp"? Would reversing this order make it so that
> "python3" is preferred over "python" and would install "python3-pcp"
> where "python3" is installed?

+1  ... yes, that'd work, & we've used that approach before for readline.

> Debian Jessie and Ubuntu Xenial are making Python 3 the default so
> will have "python3" installed. Older releases without "python3" should
> fall back to "python-pcp" I guess.

*nod*

> This Depends line seems to need "libpcp-import1" added to it as well.

Yep, will do.

> Any guidance appreciated?

Looks like you've got it sorted out Jamie.  :)  I'll push through your
suggested fixes shortly, let us know how they go when that arrives?

cheers.

--
Nathan

<Prev in Thread] Current Thread [Next in Thread>