Re: rolling your own package management

Eric Herman <[email protected]>
Newsgroups gmane.linux.lfs.general
Message-ID <[email protected]>
On 06/28/2012 01:32 PM, LM wrote:

> Thank you very much for sharing this.  It definitely answers some of
> the questions I had.

Certainly. The process for building "xorg" is more complicated, and is 
not reflected in the "options" file included.

>
>> With one or two exceptions, I don't do patches at all.
>>
>> When there's a snag in a package, usually someone else has found and
>> solved it before me. I am able to use the instructions in "Beyond Linux
>>   From Scratch" or the instructions in "Community Driven BLFS" as a
>> starting point for almost everything.
>
> I've been doing several patches.  I see a program and think it could
> be better with a certain change, so I make it.

Let me be more specific: with one or two exceptions, I don't usually 
have to write my own patches in order to a get a package to install in 
the way I want. Commandline options to configure and make and what-not 
usually do the trick, and when they do not, someone else contributing to 
(B)LFS or C(B)LFS has usually figured out this before me.

To your desire: running modified versions of programs, this I do. The 
package-users fork on github is very friendly to running my own patches. 
There is a "build" script which untars the source in the "src" directory 
and then looks for a "patches" directory with patches to apply
and applies any it finds.

A typical process is:

     root@rover: ~ # add_package_user "Foo Of Outerspace" foo
     root@rover: ~ # su - foo
     package foo:/usr/src/foo$ mkdir src
     package foo:/usr/src/foo$ ln -sv /data/sources/foo-1.2.3.tar.xz src/
     package foo:/usr/src/foo$ mkdir patches && cd patches
[ ... write patch, link patch, whatever ... ]
     package foo:/usr/src/foo$ vim ~/options
[ ... add extra configure options or whatever ... ]
     package foo:/usr/src/foo$ . ~/options
     package foo:/usr/src/foo$ build
     patching file foo.s
     configure...successful! (17 seconds)
     build...successful! (31 seconds)
     test...successful! (159 seconds)
     install...successful! (3 seconds)
     package foo:/usr/src/foo$ exit
     root@rover: ~ #

I also usually tar up the logs, delete the unpacked sources, and usually 
put the version and patch info in the package ~/.project file....

As I hope you can see, it's no harder to run patched versions of software.


> Of course, that means I have a lot to try to keep up with when a
> program updates to a new version.  However, if I want the system
> customized the way I like it, I don't see a way around it.

Many times I've seen my patches continue to apply cleanly to new 
versions of software, with only changes in line-offsets.  Of course, 
sometimes even a bug-fix version bump will require a minor re-work of a 
patch -- or perhaps even a major one. I agree, if you want to run your 
own patches which are not queued upstream, there's some maintenance 
burden ... that's probably okay.


> I've been talking to other Linux users at our local users group and
> it's slowly beginning to dawn on me that average users do not
> customize their computer systems to the extent I do.

Well, you might find that even the case with LFSers ... but I think this 
is a community with a higher density of people who like to run patched 
systems. I can only speak for myself, but I started down the LFS path in 
part because I couldn't figure out how to rebuild a package and get it 
installed correctly on an out-of-the-box distro a long time ago. I had 
written the (trivial) patch to add the behavior that I wanted, but I 
couldn't work through the build process of the program. That was the 
first step down the road of thinking that it wasn't enough for me to 
*use* open source, if I wanted to contribute, I had to be confident that 
I could build everything I was using.


If you decide that the package-users approach is for you, I think you 
might find the fork is handy. In particular, the "create_lfs_users" and 
the "chown_lfs_symlinks" make the transition from the temporary (C)LFS 
system to the final package-user-owned system much smoother.

And, I'd be very open to suggestions, or pull requests or whatever:

https://github.com/ericherman/package-users

Cheers,
  -Eric

-- 
http://www.freesa.org/ -- mobile: +31 620719662
aim: ericigps -- skype: eric_herman -- jabber: [email protected]
-- 
http://linuxfromscratch.org/mailman/listinfo/lfs-chat
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.