- From: Sig Lange <
>
- To:
- Subject: [chef] Re: Re: chef support on freebsd is subpar
- Date: Thu, 23 Sep 2010 10:27:09 -0700
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=TjpoKFHo8rUyA+CSD5dxcGjmq9msDfqqo1CUZRuQLBvcd9JjKOUKG+BYr53YfwCjPm YbzrnKQ3WrRkuxYSYTdSvdfaj9wCJuWLpQ8MVkJ5bxfFffOD+n1BizQ9d8b2EqyOzf59 vY2wnUbh77En3og08axwE9URgEVfn2rZdVljc=
I haven't gotten to it yet.
Mostly looking to gauge usage. It seems like not many people use chef
on freebsd =/
~ Sig
On Tue, Sep 21, 2010 at 11:05 AM, Adam Jacob
<
>
wrote:
>
Hi Sig - have you filed these as bugs?
>
>
Adam
>
>
On Tue, Sep 21, 2010 at 8:35 AM, Sig Lange
>
<
>
>
wrote:
>
> Fellow Chefs,
>
>
>
> I've encountered a few problems with chef on freebsd.
>
>
>
> I wanted to bring some awareness to the community to gauge freebsd
>
> usage with chef.
>
>
>
> I know that freebsd is not likely as popular as other distributions
>
> but if functionality for such platform
>
> is included (and touted as supported) it should at least be functional.
>
>
>
> Here is a list of issues i've encountered. Some bugs. Some
>
> questionably achievable by other means.
>
> But as I see it, expected behavior is wrong.
>
>
>
>
>
>
>
> 1. assumptions are made on package names in ports versus package names
>
> that are built using 'make package'
>
> Goal: Install apache
>
> Many variations of package are supported in the provider like URL,
>
> FTP, from ports using whereis, absolute port path
>
>
>
> in my environment $PACKAGESITE is exported so pkg_add -r XXXX can
>
> install a binary if available.
>
>
>
> Apache can only be installed via a URL with a version # and
>
> architecture hard coded in.
>
> all fail due to the ports package differing then the package installed.
>
>
>
> a. package "apache22"
>
> Bails since the installed package name differs then the ports name.
>
> installed package name: apache-2.2.11_7
>
> ports package name: "apache22"
>
>
>
> Incorrectly tries to fetch (it's a 404):
>
> http:///freebsd/ports/amd64/packages-7.2-release/Latest/apache22.tbz
>
>
>
> b. package "apache"
>
> Bails since make -V PORTVERSION XXX is used to determine
>
> version. This is not a name of a valid port.
>
>
>
>
>
> c. package "/usr/ports/www/apache22"
>
> just like 1.a, Incorrectly tries to fetch (it's a 404):
>
> http:///freebsd/ports/amd64/packages-7.2-release/Latest/apache22.tbz
>
>
>
> d.
>
> package "apache22" do
>
> source
>
> "http://XXX/freebsd/ports/amd64/packages-7.2-release/Latest/"
>
> end
>
>
>
> I'm not sure what the right solution here to maintain a "repository"
>
> Since the ports package name differs then the installed package
>
> name one must manually symlink
>
> the tbz to a name that is being interpreted and also is a valid
>
> port name on the system.
>
>
>
> It seems like 1.a and 1.c are closest to functional if the packaged
>
> name matched what was trying to be fetched.
>
>
>
>
>
> 2. package version parsing is just plain wrong.
>
>
>
> a version is detected by prefix and - so any package name with a
>
> dash in it similiar to another will fail to
>
> install. ie, protobuf and protobuf-c
>
>
>
> --- recipe ---
>
>
>
> package "protobuf"
>
>
>
> --- chef run ---
>
>
>
> [Tue, 21 Sep 2010 07:56:43 -0700] DEBUG: Processing package[protobuf]
>
> [Tue, 21 Sep 2010 07:56:43 -0700] DEBUG: package[protobuf] using
>
> Chef::Provider::Package::Freebsd
>
> [Tue, 21 Sep 2010 07:56:43 -0700] DEBUG: Current version is c-0.14
>
> [Tue, 21 Sep 2010 07:56:43 -0700] DEBUG: Ports candidate version is 2.1.0
>
>
>
> --- debug ---
>
> $ pkg_info |grep protobuf
>
> protobuf-c-0.14 C bindings for Google's Protocol Buffers
>
> py25-protobuf-2.1.0 Google protobuf Python Client Library
>
>
>
>
>
> Well obviously c-0.14 is not a version for protbuf. The regular
>
> expression is greedy when it should not be.
>
>
>
> In
>
> /usr/local/lib/ruby/gems/1.8/gems/chef-0.7.16/lib/chef/provider/package/freebsd.rb
>
>
>
> Chef does this to determine candidate version
>
> $ make -V PORTVERSION -C /usr/ports/devel/protobuf
>
> 2.1.0
>
>
>
> And does this to determine current version
>
> $ pkg_info -E protobuf\*
>
> protobuf-c-0.14
>
>
>
>
>
> It does not bother to parse the package properly and get the
>
> package_name and assert it
>
> matches before returning the version.
>
>
>
> line ~34
>
> WRONG:
>
> when /^#{package_name}-(.+)/
>
>
>
> Something like this has worked for me:
>
> when /^#{package_name}-([^-]+)$/
>
>
>
>
>
> 3. Typos is package provider exception handling
>
> Various places in chef package provider typo'd the exception name
>
> space for package.
>
>
>
> Chef::Exception::Package is used instead of Chef::Exceptions::Package
>
>
>
> So meaningful error messages are suppressed with a unknown constant error
>
>
>
>
>
>
>
> Hope this helps anyone attempting to use freebsd in the future.
>
>
>
> Cheers,
>
>
>
> ~ Sig
>
>
>
>
>
>
--
>
Opscode, Inc.
>
Adam Jacob, CTO
>
T: (206) 508-7449 E:
>
>
Archive powered by MHonArc 2.6.16.