Python install catch 22

Willem Jan Withagen wjw at digiware.nl
Tue Apr 8 21:13:59 UTC 2014


On 6-4-2014 4:22, Kubilay Kocak wrote:
> On 5/04/2014 9:12 PM, Willem Jan Withagen wrote:
>>
>>
>> Op 5 apr. 2014 om 05:48 heeft Shane Ambler <FreeBSD at ShaneWare.Biz> het volgende geschreven:
>>
>>> On 04/04/2014 22:42, Willem Jan Withagen wrote:
>>>> Hi,
>>>>
>>>> I've tried to upgrade my python 2.7 which did not work.
>>>> Then I deinstalled all python stuff and tried to install python3 (aka 3.3)
>>>
>>> You can install both versions of python (2.7 & 3.3) at the same time,
>>> but currently you can only install a module to one of the versions at a
>>> time.
>>
>> Sorry,
>>
>> I did not explain  the situation clear enough.
>>
>> I was at 2.7, and wanted to install a 2.7 upgrade because of a bug.
>> If memory serves me, from 2.7.3 to 2.7.6
>>
>> But that started mounting about missing db stuff, and having to install a py/db of choice.
>> That is where I ran into the catch22, installing a db required py-tools, which in turn starts to try to upgrade python from 2.7.3 to 2.7.6.
> 
> Hi Willem,
> 
> a) Can you clarify/confirm whether you tried installing/upgrading Python
> via ports or packages.
> 
> b) Tell us exactly (method & commands) how you attempted to upgrade
> Python 2.7 to Python 3.3
> 
> b) If via ports, it would be helpful to know how and why the dbm module
> fails to build for python33
> 
> Either attach a complete build log here, or join us on IRC
> #freebsd-python on freenode so we can help you isolate.
> 
> Koobs
> 
> 
>> Then I cleaned/removed al python stuff, and tried again.
>> First with 2.7 and when that did not work, I tried 3.3 with the same result.
>> I tried with portinstall/portupgrade as well as make && make install, but both fail for the same reason.
>>
>> So atm I have no python at al.
>>
>>> So far there are still many modules that don't work with 3.x so you may
>>> want to use 2.7 if you want python with more than the default modules.
>>>
>>> The default python is still 2.7, if you want to use 3.3 then you might
>>> want to add
>>> DEFAULT_VERSIONS=PYTHON=3.3 PYTHON3=3.3
>>> to your /etc/make.conf
>>>
>>>> The system everytime refuses to install because of missing a database:
>>>>
>>>> pkg-static:
>>>> lstat(/home2/usr/ports/lang/python33/work/stage/usr/local/lib/python3.3/lib-dynload/_dbm.so):
>>>> No such file or directory
>>>> *** [fake-pkg] Error code 74
>>>>
>>>> [ replace python33 by python27 te get the similar error for 2.7 ]
>>>
>>> This would indicate that the dbm module wasn't built. It should be built
>>> and is a module that gives access to others that may be installed from
>>> the list below. The db modules below don't need to be installed first
>>> for _dbm.so to be built.
>>>
>>> This is an error compiling not related to the other modules. If your
>>> using a gui then scrollback in the terminal to see the error - increase
>>> scrollback limit if needed, from cli maybe use script to keep a log of
>>> the build to look through.
>>
>> Using command line in putty.
>> I will try again, and scan de build output for more errors. So there should be an error building the part in the stage tree?
>>
>>
>>>
>>> gettext libiconv and gmake are the only things that need to be installed
>>> before python to build.
>>
>> So where does it get the DBMS stuff from?
>>
>>> Maybe there is an issue with you not building
>>> from /usr/ports ?
>>
>> That would be a first. This config is like this for about 6 years.
>> And /user/ports links to this tree.
>>
>>>
>>>> And then hints:
>>>> ====
>>>> Note that some of the standard modules are provided as separate
>>>> ports since they require extra dependencies:
>>>>
>>>> gdbm            databases/py-gdbm
>>>> sqlite3         databases/py-sqlite3
>>>> tkinter         x11-toolkits/py-tkinter
>>>>
>>>> Install them as needed.
>>>> ====
>>>>
>>>> Which is nasty catch22, because one needs a recent/working python to
>>>> actually be able to do this.
>>>>
>>>> How do other cope with this?
>>>>
>>>
>>> Could using pkg to install a prebuilt binary package be an option?
>>
>> That would be the alternative, but I only do that, if nothing else works.
>> I've grown to always build my stuff.
>>
>>>
>>> What FreeBSD version are you using?
>>
>> I386 9.2-STABLE

Did a more thorow investigation during the build:

====
building 'dbm' extension
cc -fPIC -fno-strict-aliasing -O2 -pipe -fno-strict-aliasing -DNDEBUG
-DHAVE_NDBM_H -I. -IInclude -I./../Include -I/usr/local/include
-I/home2/usr/ports/lang/python27/work/Python-2.7.6/Include
-I/home2/usr/ports/lang/python27/work/Python-2.7.6/portbld.static -c
/home2/usr/ports/lang/python27/work/Python-2.7.6/Modules/dbmmodule.c -o
build/temp.freebsd-9.2-STABLE-i386-2.7/home2/usr/ports/lang/python27/work/Python-2.7.6/Modules/dbmmodule.o
cc -shared -L/usr/local/lib -pthread -L/usr/local/lib -pthread -O2 -pipe
-fno-strict-aliasing -I/usr/local/include
build/temp.freebsd-9.2-STABLE-i386-2.7/home2/usr/ports/lang/python27/work/Python-2.7.6/Modules/dbmmodule.o
-L/usr/local/lib -lgdbm_compat -o
build/lib.freebsd-9.2-STABLE-i386-2.7/dbm.so
*** WARNING: renaming "dbm" since importing it failed:
/usr/local/lib/libgdbm_compat.so.4: Undefined symbol "gdbm_errno"

Python build finished, but the necessary bits to build these modules
were not found:
linuxaudiodev      spwd               sunaudiodev
To find the necessary bits, look in setup.py in detect_modules() for the
module's name.


Failed to build these modules:
dbm
======

But then the process wants to continue....
Which is rather useless.

I'll see if upgrading gdbm fixes things.

--WjW




More information about the freebsd-ports mailing list