Re: Simple Debian Package Creation?
On Wed, 03 Nov 2004 10:47:45 -0600, Zach Garner wrote: > My company is a software development shop that uses Debian for all of our > production systems. We chose Debian based on it's reputation on packaging. > Our goal is to be able to type 'ant deploy' have our software built, have > debian packages built with our software, and other support software, and > then have a debian repository created. Then be able to do 'apt-get update' > from our production systems, to upgrade our application on those systems. > > Unfortunately, it's not working out so easily. > > I've been a little frustrated with creating debian packages. As a user, I > love Debian, but so far as a package creator, it's given me headaches. I'm > hoping someone can enlighten me on a few things. I have a little > experience with RedHat's packaging about a year ago, so I will mention it > from time to time. Please don't take offense when I say that I like an > aspect of RPM creation better than debian creation. And definitely correct > my when my memory fails. > > First: > 1. The sheer number of helper scripts, with layers and layers of > scripts built on top of each other is really confusing. > 2. The number of files that I have to create within the /debian > directory is difficult to deal with, and having to create the /debian > directory within my application directory and being forced to name my > application directory according to debian rules is very irritating. > 3. Most of the package creation scripts (I'm refering explicitly to > dh_make which is supposed to be the proper way of creating a package, as > discussed in the New Maintainer's Guide) expect that you are building a > traditional unix application, that's written in C, has ./configure and a > Makefile. All we are doing in most of our packages is installing some > files. Why can't that be simple? > > Second, why can't I create packages with standard unix commands? Why can't > I say something like: > $ tar cvzf data.tgz myapplication/* > $ tar czvf control.tgz control > $ tar czvf mypackage-0.1.deb data.tgz control.tgz Just use dpkg-deb --build fakeroot #you need to pretend to be root to get file permissions correct mkdir somedir #this directory contains your filesystem tree mkdir somedir/usr/bin -p #stuff here will be in /usr/bin when installed ... #do whatever it takes to make this directory mkdir somedir/DEBIAN #this contains package meta-information vi somedir/DEBIAN/control #this is the debian control file. you won't be #able to use shlibs to automatically compute dependancies dpkg-deb --build somedir #this is approximately equal to those archive #commands you want > Why can't debian package building be as simple as 'dpkg-create foo.spec'? It is, but for redhat you'd have to write foo.spec first. For Debian, you have to populate the debian directory first. -- I usually have a GPG digital signature included as an attachment. See http://www.gnupg.org/ for info about these digital signatures.
Re: Simple Debian Package Creation?
On Wed, 03 Nov 2004 10:47:45 -0600, Zach Garner wrote: > My company is a software development shop that uses Debian for all of our > production systems. We chose Debian based on it's reputation on packaging. > Our goal is to be able to type 'ant deploy' have our software built, have > debian packages built with our software, and other support software, and > then have a debian repository created. Then be able to do 'apt-get update' > from our production systems, to upgrade our application on those systems. > > Unfortunately, it's not working out so easily. > > I've been a little frustrated with creating debian packages. As a user, I > love Debian, but so far as a package creator, it's given me headaches. I'm > hoping someone can enlighten me on a few things. I have a little > experience with RedHat's packaging about a year ago, so I will mention it > from time to time. Please don't take offense when I say that I like an > aspect of RPM creation better than debian creation. And definitely correct > my when my memory fails. > > First: > 1. The sheer number of helper scripts, with layers and layers of > scripts built on top of each other is really confusing. > 2. The number of files that I have to create within the /debian > directory is difficult to deal with, and having to create the /debian > directory within my application directory and being forced to name my > application directory according to debian rules is very irritating. > 3. Most of the package creation scripts (I'm refering explicitly to > dh_make which is supposed to be the proper way of creating a package, as > discussed in the New Maintainer's Guide) expect that you are building a > traditional unix application, that's written in C, has ./configure and a > Makefile. All we are doing in most of our packages is installing some > files. Why can't that be simple? > > Second, why can't I create packages with standard unix commands? Why can't > I say something like: > $ tar cvzf data.tgz myapplication/* > $ tar czvf control.tgz control > $ tar czvf mypackage-0.1.deb data.tgz control.tgz Just use dpkg-deb --build fakeroot #you need to pretend to be root to get file permissions correct mkdir somedir #this directory contains your filesystem tree mkdir somedir/usr/bin -p #stuff here will be in /usr/bin when installed ... #do whatever it takes to make this directory mkdir somedir/DEBIAN #this contains package meta-information vi somedir/DEBIAN/control #this is the debian control file. you won't be #able to use shlibs to automatically compute dependancies dpkg-deb --build somedir #this is approximately equal to those archive #commands you want > Why can't debian package building be as simple as 'dpkg-create foo.spec'? It is, but for redhat you'd have to write foo.spec first. For Debian, you have to populate the debian directory first. -- I usually have a GPG digital signature included as an attachment. See http://www.gnupg.org/ for info about these digital signatures. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: Simple Debian Package Creation?
On Thursday 04 November 2004 02:37, Matthew Palmer wrote: > On Thu, Nov 04, 2004 at 02:18:35AM +0200, George Danchev wrote: > > my humble question is: if I have Source: and multiple Package: lines > > described in my debian/control file. But how is these debian// > > subdirectories created.. I end up with the firts Package: conctructed in > > debian/tmp , but I want them all constructed in their own > > debian/ subdirs.. yes I know it works, but where is the magic > > here and what I'm mising ? > > Set your "debhelper compat level" to at least V2, preferably V4, by doing > something like: > > echo "4" >debian/compat > > from the root of your source tree. > > Check debhelper(7), "Debhelper Compatibility Levels", for more info. Ah thanks, I really nuked the compat file value. -- pub 4096R/0E4BD0AB 2003-03-18 fingerprint 1AE7 7C66 0A26 5BFF DF22 5D55 1C57 0C89 0E4B D0AB
Re: Simple Debian Package Creation?
On Thu, Nov 04, 2004 at 02:18:35AM +0200, George Danchev wrote: > my humble question is: if I have Source: and multiple Package: lines > described > in my debian/control file. But how is these debian// subdirectories > created.. I end up with the firts Package: conctructed in debian/tmp , but I > want them all constructed in their own debian/ subdirs.. > yes I know it works, but where is the magic here and what I'm mising ? Set your "debhelper compat level" to at least V2, preferably V4, by doing something like: echo "4" >debian/compat from the root of your source tree. Check debhelper(7), "Debhelper Compatibility Levels", for more info. - Matt signature.asc Description: Digital signature
Re: Simple Debian Package Creation?
On Thursday 04 November 2004 00:52, Bartosz Fenski aka fEnIo wrote: --cut-- > That is related to debian/control file. > Whole packaging scripts assume that every "Package: " line in > debian/control is used for final packages. > So if you have: > > Package: my_cool_package > > line in debian/control then scripts looking for your files in > debian/my_cool_package directory. So just put there your files in proper > filesystem hierarchy and they'll be moved to package called the same. my humble question is: if I have Source: and multiple Package: lines described in my debian/control file. But how is these debian// subdirectories created.. I end up with the firts Package: conctructed in debian/tmp , but I want them all constructed in their own debian/ subdirs.. yes I know it works, but where is the magic here and what I'm mising ? -- pub 4096R/0E4BD0AB 2003-03-18 fingerprint 1AE7 7C66 0A26 5BFF DF22 5D55 1C57 0C89 0E4B D0AB
Re: Simple Debian Package Creation?
On Wed, Nov 03, 2004 at 10:47:45AM -0600, Zach Garner wrote: > First: > 1. The sheer number of helper scripts, with layers and layers of > scripts built on top of each other is really confusing. Diversity is often seen as a virtue. That does mean that it can be hard to separate the need from the want, but you really can ignore pretty much every script out there if you really really want to. But take note -- it's a lot harder to do it all by hand. Some of the people who wrote helper scripts knew what they were doing... > 2. The number of files that I have to create within the /debian > directory is difficult to deal with, and having to create the /debian > directory within my application directory and being forced to name my > application directory according to debian rules is very irritating. You're not forced to name your top-level directory anything, dh_make just gets a little anxious if you don't. So don't use dh_make -- it's not a good fit for some situations, anyway. As for the number of files, you can get away with none if you really wanted to, but several little files is much easier to deal with than one large one, IMO. > 3. Most of the package creation scripts (I'm refering explicitly to > dh_make which is supposed to be the proper way of creating a package, as > discussed in the New Maintainer's Guide) You're not a New Maintainer, so the New Maintainer's Guide is going to be of limited help to you. As I mentioned in another of my missives on this subject, you're not doing things the way the manual expects. Hence the manual seems less helpful than it might otherwise be. Consider it an optimisation problem -- you're not processable via the fast path. > expect that you are building a > traditional unix application, that's written in C, has ./configure and a > Makefile. All we are doing in most of our packages is installing some > files. Why can't that be simple? Because simplicity only works when you're doing what the tool expects. > I feel that RPM creation is better here. One command ('rpmbuild') is > used. One file, the .spec file, is needed with different > sections for each part. I can keep my rpm packaging files any where I > want it, and I don't have to have my application directory conform to > any debian rules. I'd hope that creating an RPM wouldn't require you to have your application directory conform to any debian rules... Let me rewrite your sentence: "I feel than .deb creation is better here. One command ('dpkg-buildpackage') is used. One directory, debian/, is needed with different files for each purpose. I keep my .deb packaging files in a consistently named location, which helps others understand what I've done, and I don't have to have my application directory conform to any RPM rules." > Why can't debian package building be as simple as 'dpkg-create > foo.spec'? It's even easier than that -- you don't need to specify a .spec file. > Second, why can't I create packages with standard unix commands? Why > can't I say something like: > $ tar cvzf data.tgz myapplication/* > $ tar czvf control.tgz control > $ tar czvf mypackage-0.1.deb data.tgz control.tgz You can. But you know that by now. > My main complaint here, is that we really want to be able to build the > debian packages from any developer workstation. Since we don't impose > operating system requirements on developers, we can't expect debian to > be on all workstations. And you're shipping the packages that these developers create on random platforms to your customers? Eep. > Right now, using Debian to deploy our software seems more and more > difficult for us. I'd greatly appreciate any advice or comments. All I > want to be able to do is create a package on any unix system that can be > installed via apt-get, that simply installs some files, and can use the > pre/post install/remove scripts. This seems like a simple thing to do, > but the process seems very difficult. It seems difficult because you're coming at this cold, without previous packaging experience doing the more "normal" packaging first. With a bit of experience doing regular packaging, you'd know what really is needed and not needed, and how much dh_make can be full of crap sometimes, and this whole process would be a whole hell of a lot easier. But stick with it. Everything you've described thus far can be done with .debs. - Matt signature.asc Description: Digital signature
Re: Simple Debian Package Creation?
On Wed, Nov 03, 2004 at 09:26:25PM +0100, Bartosz Fenski aka fEnIo wrote: > Most of the apps are using `./configure && make && make install` so dh_make > tries to use that way. > In fact the only file you need is debian/rules. > It should be Makefile which create your package. I probably should mention that dh-make will only use that line if it thinks the package would use it. Basically is there a configure script and is it executable. It usually assumes you type make to make the package but of course that's one line change in one file to fix it. - Craig -- Craig Small GnuPG:1C1B D893 1418 2AF4 45EE 95CB C76C E5AC 12CA DFA5 Eye-Net Consulting http://www.enc.com.au/ MIEE Debian developer csmall at : enc.com.au ieee.org debian.org
Re: Simple Debian Package Creation?
On Wed, Nov 03, 2004 at 04:06:01PM -0600, Zach Garner wrote: > On Wed, 2004-11-03 at 21:26 +0100, Bartosz Fenski aka fEnIo wrote: > > On Wed, Nov 03, 2004 at 10:47:45AM -0600, Zach Garner wrote: > > > I'd agree it's pretty confusing, but only first time. > > It's quite easy to understand it. > I'm hoping so, that's why I'm trying not to give up too easily. > > > > Most of the apps are using `./configure && make && make install` so dh_make > > tries to use that way. > > In fact the only file you need is debian/rules. > > It should be Makefile which create your package. > > What bugs me is that as far as I can tell from the documentation, > dh_make is the recommended proper way of doing things. Also, as far as I The documentation you're reading has a target audience of people who want to create packages for Debian. The dh_make cruft is needed for lots of little things we need to make Debian as good as it is. dh_make is also initially targetted, as you've noticed, at building packages which use the old standby of ./configure; make; make install. That isn't quite the universal constant it once was, by virtue of the rise of scripting languages and Java, the former of which doesn't need building, and the latter which decided that it can't be any good because someone else is doing it that way. > can tell I need the following: > README.Debian compat copyright rules control dirs > > I understand your point though, the 'rules' file is the only one that > really matters. "A build script" is, technically, the only thing you need -- just as you would need for a tarball. However, if you want to use the helpers like debhelper, you'll need debian/rules, changelog, and control. The first is the build script, changelog is needed to get versioning information, and control is used by most scripts to get all sorts of interesting information (like what the source package is called, what the binary packages are called, and so on). > I have some makefiles that work ok, by modifying what I got from dh_make > (this is probably a bad idea, but I don't have documentation on how to > hand write one without using debhelper scripts...). Butcher those dh_make-produced systems. That's why they're "templates". > It generally works, > but there is a lot of magic that happens in the dh_ scripts. Read the manpages, both for debhelper itself, and for the individual dh_ scripts. They're pretty well documented, and each one is small enough to be (IMO) understood well. > For instance, I don't know how it knows that debian/ is where > my application data is supposed to be. Is this hardcoded in dpkg-deb? Is > somehow expressed in one of the dh_ scripts that is listed in my "binary:" > target. All I really know is that if I put my files there, it puts them in > the package. I probably need to read the man pages more than I have... That's debhelper compat magic. Back in the olden days, debhelper was more-or-less designed for single binary package work, and so it dumped it all into a directory called 'tmp' in the debian/ directory. That didn't work, so later major versions of Debhelper changed it all around. Read up on "compatibility levels" in debhelper(7). > > > Why can't debian package building be as simple as 'dpkg-create > > > foo.spec'? > > > > > > Second, why can't I create packages with standard unix commands? Why > > > can't I say something like: > > > $ tar cvzf data.tgz myapplication/* > > > $ tar czvf control.tgz control > > > $ tar czvf mypackage-0.1.deb data.tgz control.tgz > > > > Debian uses standard unix commands. > > What I meant by standard roughly translates into available on most/all > unix or linux systems. The format of a .deb file is special as far as I > can tell. I can't create or manipulate them without using dpkg-deb or > one of the other scripts. Nope. Read deb(5) (in the dpkg-dev package). Tells you all about it, in a fair amount of detail, and it's all straight-up stock Unix tools to do it. In fact, in the past, dpkg was nothing more than a shell script. > In fact, I would be happy enough if I could (a) run dpkg-deb on our > other systems, this may be possible, though I don't expect it would too > easy and (b) use dpkg-deb to create a package by giving it the > control.tgz and data.tgz. Ideally, dpkg-deb wouldn't be required to > create the specially formatted deb file, and I could just create a tar. Running the Debian packaging tools on almost any Unix-like system shouldn't be excruciatingly difficult, but as has been said a couple of times now, you don't need any of it to make Debian packages. > > > My main complaint here, is that we really want to be able to build the > > > debian packages from any developer workstation. Since we don't impose > > > operating system requirements on developers, we can't expect debian to > > > be on all workstations. > > > > Sorry. How do you suppose to build rpm without rpm? > Oh, I didn't mean to imply RPM was better here. My other biases s
Re: Simple Debian Package Creation?
On Wed, Nov 03, 2004 at 04:06:01PM -0600, Zach Garner wrote: > What bugs me is that as far as I can tell from the documentation, > dh_make is the recommended proper way of doing things. Also, as far as I > can tell I need the following: > README.Debian compat copyright rules control dirs dh_make often helps beginners by setting things up and giving the example files. Some people like it, some don't; it is really up to you. > I understand your point though, the 'rules' file is the only one that > really matters. The rules file is the one that does all the work. You mentioned you just needed to copy files into the directories. Ironically enough, this is exactly how dh-make the package is built. For simple stuff, I can go from a tgz into a deb in about 10-15 minutes. It takes a while to find your way around though. for something that doesn't need compiling and has no daemons or other strange stuff you could do * untar the source and cd into directory * dh_make * edit control file * edit copyright and changelog files, shouldn't need much though * edit the rules file, in the binary-indep (probably indep because you are not compiling stuff) target put your install commands to put things in the tree under debian/ * put your list of documents in debian/docs * put your list of examples into debian/examples * put your list of manpages into debian/manpages * delete most of the debian/*.ex files left * debuild > I have some makefiles that work ok, by modifying what I got from dh_make > (this is probably a bad idea, but I don't have documentation on how to > hand write one without using debhelper scripts...). It generally works, You're supposed to modify what you get from dh_make. It only makes the templates making some guesses. > > > Why can't debian package building be as simple as 'dpkg-create > > > foo.spec'? Because the Debian packages are more complicated to build. They are that way so they are easier to install for the user. > What I meant by standard roughly translates into available on most/all > unix or linux systems. The format of a .deb file is special as far as I > can tell. I can't create or manipulate them without using dpkg-deb or > one of the other scripts. Actually you can and if you were to attempt to become Debian Maintainer you would need to know how to do some operations with standard unix tools. It is bascially fiddling with ar and tar. > What's still the big problem for us is the need to be on a debian system > to create the packages. From what I can tell, we would likely need a few > packages from debian-unstable on that system as well. It is a lot easier, but anything that has anything more that a trivial packaging system requires this. You could only possibly get away with it because you are not compiling anything. You would not need packages from debian-unstable, unless you needed something from there, such as for a dependency. Our security updates a built on stable dist hosts for example. I would have a problem shipping a package that was not even tested on the native environment. How do you know the program is even going to work properly? - Craig -- Craig Small GnuPG:1C1B D893 1418 2AF4 45EE 95CB C76C E5AC 12CA DFA5 Eye-Net Consulting http://www.enc.com.au/ MIEE Debian developer csmall at : enc.com.au ieee.org debian.org
Re: Simple Debian Package Creation?
Zach Garner wrote: > It generally works, but there is a lot of magic that happens in the > dh_ scripts. For instance, I don't know how it knows that > debian/ is where my application data is supposed to be. > Is this hardcoded in dpkg-deb? dpkg-deb can take any directory and turn it into a binary package. (On dpkg-deb(1), note the "directory" option to 'dpkg-deb -b'.) By convention, the debhelper scripts install into debian/, and dh_builddeb calls dpkg-deb with that directory as an argument.
Re: Simple Debian Package Creation?
On Wed, Nov 03, 2004 at 11:52:41PM +0100, Bartosz Fenski aka fEnIo wrote: > On Wed, Nov 03, 2004 at 04:06:01PM -0600, Zach Garner wrote: > > > Most of the apps are using `./configure && make && make install` so > > > dh_make > > > tries to use that way. > > > In fact the only file you need is debian/rules. > > > It should be Makefile which create your package. > > > > What bugs me is that as far as I can tell from the documentation, > > dh_make is the recommended proper way of doing things. Also, as far as I > > can tell I need the following: > > README.Debian compat copyright rules control dirs > > README.Debian, compat and dirs is useless (well at least it's not needed). > In fact you need copyright, when you write copyright issues (could be You don't need a copyright file to create a package, you just need it if you're ever going to have a hope of getting your package into Debian proper. If that's not a concern, it's not needed. (The voice of experience). > > I understand your point though, the 'rules' file is the only one that > > really matters. > > As I said previously... you can prepare rules file which will handle all > issues, but it's not so easy then. I wouldn't go down that path. Those helper scripts are out there for a reason. But if you need to build debian packages in an environment with nothing but standard unix tools, it's a definite option. > > > If you really don'y like debhelper's scripts you can always write this > > > Makefile yourself or use cdbs (`apt-get install cdbs`). > > > > I'll look into cdbs. > > That's totally other way of packaging. It's designed to simplify rules file > as much as it is possible. > Sorry I won't describe it more verbosely cause I like debhelper ;) I think it won't cure the OP's desire for a comprehensible, do-anything build system -- it's even more heavily tailored to building Debian .debs than debhelper, IMO. > > For instance, I don't know how it knows that debian/ is where > > my application data is supposed to be. Is this hardcoded in dpkg-deb? Is > > somehow expressed in one of the dh_ scripts that is listed in my > > "binary:" target. All I really know is that if I put my files there, it > > puts them in the package. I probably need to read the man pages more > > than I have... > > That is related to debian/control file. > Whole packaging scripts assume that every "Package: " line in > debian/control is used for final packages. > So if you have: > > Package: my_cool_package > > line in debian/control then scripts looking for your files in > debian/my_cool_package directory. So just put there your files in proper > filesystem hierarchy and they'll be moved to package called the same. That's dependent on debhelper magic. See my reply to the previous message for more info. - Matt signature.asc Description: Digital signature
Re: Simple Debian Package Creation?jk
Zach Garner wrote: > What bugs me is that as far as I can tell from the documentation, > dh_make is the recommended proper way of doing things. dh_make automates a lot of the packaging process for most typical packages, but it's certainly not required -- especially if it doesn't suit your package. You should certainly trim down the files and rules generated by dh_make, looking up each of them and removing the ones you don't need or want. > Also, as far as I can tell I need the following: > README.Debian compat copyright rules control dirs "README.Debian" and "dirs" are not required. (The first is completely optional. The second is used by dh_installdirs if it is present, or you can also create directories yourself with "mkdir" or "install -d". Many packages don't need to do either, since the upstream build system already creates all of the required directories.) "compat" is needed only if your package uses debhelper (which it probably should in most cases, to save you from reinventing the wheel -- but it's not required). > > > Second, why can't I create packages with standard unix commands? > > > Why can't I say something like: > > > $ tar cvzf data.tgz myapplication/* > > > $ tar czvf control.tgz control > > > $ tar czvf mypackage-0.1.deb data.tgz control.tgz > > > > Debian uses standard unix commands. > > What I meant by standard roughly translates into available on most/all > unix or linux systems. The format of a .deb file is special as far as > I can tell. It's just an ar(1) archive. See deb(5) for details. Yes, this documentation is sparse and often hard to find. On the other hand, most developers seldom need to look at it because dpkg and debhelper handle it all automatically. > In fact, I would be happy enough if I could (a) run dpkg-deb on our > other systems, this may be possible, though I don't expect it would > too easy [...] As far as I known, the dpkg tools will run on any Unix-like system. They're used on Mac OS X for the "fink" system, for example.
Re: Simple Debian Package Creation?
On Thursday 04 November 2004 02:37, Matthew Palmer wrote: > On Thu, Nov 04, 2004 at 02:18:35AM +0200, George Danchev wrote: > > my humble question is: if I have Source: and multiple Package: lines > > described in my debian/control file. But how is these debian// > > subdirectories created.. I end up with the firts Package: conctructed in > > debian/tmp , but I want them all constructed in their own > > debian/ subdirs.. yes I know it works, but where is the magic > > here and what I'm mising ? > > Set your "debhelper compat level" to at least V2, preferably V4, by doing > something like: > > echo "4" >debian/compat > > from the root of your source tree. > > Check debhelper(7), "Debhelper Compatibility Levels", for more info. Ah thanks, I really nuked the compat file value. -- pub 4096R/0E4BD0AB 2003-03-18 fingerprint 1AE7 7C66 0A26 5BFF DF22 5D55 1C57 0C89 0E4B D0AB -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: Simple Debian Package Creation?
On Wed, Nov 03, 2004 at 04:06:01PM -0600, Zach Garner wrote: > > Most of the apps are using `./configure && make && make install` so dh_make > > tries to use that way. > > In fact the only file you need is debian/rules. > > It should be Makefile which create your package. > > What bugs me is that as far as I can tell from the documentation, > dh_make is the recommended proper way of doing things. Also, as far as I > can tell I need the following: > README.Debian compat copyright rules control dirs README.Debian, compat and dirs is useless (well at least it's not needed). In fact you need copyright, when you write copyright issues (could be easily checked how it looks like in other packages), rules (which is the most important file which manages whole building process) and control which could be also easily written cause it includes only most significant issues. > I understand your point though, the 'rules' file is the only one that > really matters. As I said previously... you can prepare rules file which will handle all issues, but it's not so easy then. > > If you really don'y like debhelper's scripts you can always write this > > Makefile yourself or use cdbs (`apt-get install cdbs`). > > I'll look into cdbs. That's totally other way of packaging. It's designed to simplify rules file as much as it is possible. Sorry I won't describe it more verbosely cause I like debhelper ;) > I have some makefiles that work ok, by modifying what I got from dh_make > (this is probably a bad idea, but I don't have documentation on how to > hand write one without using debhelper scripts...) It generally works, > but there is a lot of magic that happens in the dh_ scripts. You can always check some examples. (Not sure if examples is proper name cause they're just working and in most cases fully compliant packages ;)) Anyway... checking some really simple package should give you some ideas what is being happen during packaging. In fact compilation, moving to proper directory and calling dh_builddep should be enough in most cases. You have to use the same targets as in Debian's makefiles, but if you don't care about policy compliant you can even miss that requirenment. > For instance, I don't know how it knows that debian/ is where > my application data is supposed to be. Is this hardcoded in dpkg-deb? Is > somehow expressed in one of the dh_ scripts that is listed in my > "binary:" target. All I really know is that if I put my files there, it > puts them in the package. I probably need to read the man pages more > than I have... That is related to debian/control file. Whole packaging scripts assume that every "Package: " line in debian/control is used for final packages. So if you have: Package: my_cool_package line in debian/control then scripts looking for your files in debian/my_cool_package directory. So just put there your files in proper filesystem hierarchy and they'll be moved to package called the same. > > > Second, why can't I create packages with standard unix commands? Why > > > can't I say something like: > > > $ tar cvzf data.tgz myapplication/* > > > $ tar czvf control.tgz control > > > $ tar czvf mypackage-0.1.deb data.tgz control.tgz > > > > Debian uses standard unix commands. > > What I meant by standard roughly translates into available on most/all > unix or linux systems. The format of a .deb file is special as far as I > can tell. I can't create or manipulate them without using dpkg-deb or > one of the other scripts. Well you can. But then it became even more hard to do. You can use ar, tar and gzip. You seems to ignore fact that Debian contains almost only free software, and it is almost only build on Debian's autobuilders (excluding non-free and contrib). So building scripts are designed to simplify *this* task, and not packaging binary files. Sorry that's the way it is. We're targeted at FREE SOFTWARE and our policy demands to build it with another free software available on our autobuiders. It is however possible to build binary package in other way. AFAIR there is some manual on the net how to easily do that. Quick google search: http://tldp.org/HOWTO/Debian-Binary-Package-Building-HOWTO/ > In fact, I would be happy enough if I could (a) run dpkg-deb on our > other systems, this may be possible, though I don't expect it would too > easy and (b) use dpkg-deb to create a package by giving it the > control.tgz and data.tgz. Ideally, dpkg-deb wouldn't be required to > create the specially formatted deb file, and I could just create a tar. Take a look at mentioned link. If you don't care our policy then use binary packaging. > > > My main complaint here, is that we really want to be able to build the > > > debian packages from any developer workstation. Since we don't impose > > > operating system requirements on developers, we can't expect debian to > > > be on all workstations. > > > > Sorry. How do you suppose to build rpm without rpm? > Oh, I didn't m
Re: Simple Debian Package Creation?
On Wed, Nov 03, 2004 at 04:06:01PM -0600, Zach Garner wrote: > > > Second, why can't I create packages with standard unix commands? Why > > > can't I say something like: > > > $ tar cvzf data.tgz myapplication/* > > > $ tar czvf control.tgz control > > > $ tar czvf mypackage-0.1.deb data.tgz control.tgz > > > > Debian uses standard unix commands. > > What I meant by standard roughly translates into available on most/all > unix or linux systems. The format of a .deb file is special as far as I > can tell. I can't create or manipulate them without using dpkg-deb or > one of the other scripts. try ar Frank -- "Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." - Brian W. Kernighan
Re: Simple Debian Package Creation?
On Thu, Nov 04, 2004 at 02:18:35AM +0200, George Danchev wrote: > my humble question is: if I have Source: and multiple Package: lines described > in my debian/control file. But how is these debian// subdirectories > created.. I end up with the firts Package: conctructed in debian/tmp , but I > want them all constructed in their own debian/ subdirs.. > yes I know it works, but where is the magic here and what I'm mising ? Set your "debhelper compat level" to at least V2, preferably V4, by doing something like: echo "4" >debian/compat from the root of your source tree. Check debhelper(7), "Debhelper Compatibility Levels", for more info. - Matt signature.asc Description: Digital signature
Re: Simple Debian Package Creation?
On Wed, 2004-11-03 at 21:26 +0100, Bartosz Fenski aka fEnIo wrote: > On Wed, Nov 03, 2004 at 10:47:45AM -0600, Zach Garner wrote: > I'd agree it's pretty confusing, but only first time. > It's quite easy to understand it. I'm hoping so, that's why I'm trying not to give up too easily. > Most of the apps are using `./configure && make && make install` so dh_make > tries to use that way. > In fact the only file you need is debian/rules. > It should be Makefile which create your package. What bugs me is that as far as I can tell from the documentation, dh_make is the recommended proper way of doing things. Also, as far as I can tell I need the following: README.Debian compat copyright rules control dirs I understand your point though, the 'rules' file is the only one that really matters. > If you really don'y like debhelper's scripts you can always write this > Makefile yourself or use cdbs (`apt-get install cdbs`). I'll look into cdbs. I have some makefiles that work ok, by modifying what I got from dh_make (this is probably a bad idea, but I don't have documentation on how to hand write one without using debhelper scripts...). It generally works, but there is a lot of magic that happens in the dh_ scripts. For instance, I don't know how it knows that debian/ is where my application data is supposed to be. Is this hardcoded in dpkg-deb? Is somehow expressed in one of the dh_ scripts that is listed in my "binary:" target. All I really know is that if I put my files there, it puts them in the package. I probably need to read the man pages more than I have... > > > Why can't debian package building be as simple as 'dpkg-create > > foo.spec'? > > > > Second, why can't I create packages with standard unix commands? Why > > can't I say something like: > > $ tar cvzf data.tgz myapplication/* > > $ tar czvf control.tgz control > > $ tar czvf mypackage-0.1.deb data.tgz control.tgz > > Debian uses standard unix commands. What I meant by standard roughly translates into available on most/all unix or linux systems. The format of a .deb file is special as far as I can tell. I can't create or manipulate them without using dpkg-deb or one of the other scripts. In fact, I would be happy enough if I could (a) run dpkg-deb on our other systems, this may be possible, though I don't expect it would too easy and (b) use dpkg-deb to create a package by giving it the control.tgz and data.tgz. Ideally, dpkg-deb wouldn't be required to create the specially formatted deb file, and I could just create a tar. > > My main complaint here, is that we really want to be able to build the > > debian packages from any developer workstation. Since we don't impose > > operating system requirements on developers, we can't expect debian to > > be on all workstations. > > Sorry. How do you suppose to build rpm without rpm? Oh, I didn't mean to imply RPM was better here. My other biases show here.. I started out with Slackware, and later spent quite a while in the OpenBSD then FreeBSD world. For all of those .tgz was the standard format. I'm trying my best to put aside my previous habits, and get into the debian package building way of thought. > > > Right now, using Debian to deploy our software seems more and more > > difficult for us. I'd greatly appreciate any advice or comments. All I > > want to be able to do is create a package on any unix system that can be > > installed via apt-get, that simply installs some files, and can use the > > pre/post install/remove scripts. This seems like a simple thing to do, > > but the process seems very difficult. > > Is your software free? Can you share it with us? > I'm sure that someone create proper packaging scripts for you. > I'm first to help you if you want. Unfortunately, it's not. I greatly appreciate the help you've given so far, and the offer for more help. I can only promise that, if I start to like the debian package build process, that I will contribute back in my free time. I was once a FreeBSD package maintainer... I can get over part of my complaints. I can deal with the multiple files in the debian directory, and may come to love it. The layers of scripts, and the resulting confusing, conflicting documentation is still a problem. But I expect I can eventually come to an understanding of it all. What's still the big problem for us is the need to be on a debian system to create the packages. From what I can tell, we would likely need a few packages from debian-unstable on that system as well. This isn't a technically insurmountable problem, but it is a snag when it comes to convincing my supervisors that choosing debian and apt-get for our production platform was a great idea. (it's probably still the best idea, but unfortunately, maybe not a great one for our needs) Thanks -- Zach Garner <[EMAIL PROTECTED]>
Re: Simple Debian Package Creation?
On Thursday 04 November 2004 00:52, Bartosz Fenski aka fEnIo wrote: --cut-- > That is related to debian/control file. > Whole packaging scripts assume that every "Package: " line in > debian/control is used for final packages. > So if you have: > > Package: my_cool_package > > line in debian/control then scripts looking for your files in > debian/my_cool_package directory. So just put there your files in proper > filesystem hierarchy and they'll be moved to package called the same. my humble question is: if I have Source: and multiple Package: lines described in my debian/control file. But how is these debian// subdirectories created.. I end up with the firts Package: conctructed in debian/tmp , but I want them all constructed in their own debian/ subdirs.. yes I know it works, but where is the magic here and what I'm mising ? -- pub 4096R/0E4BD0AB 2003-03-18 fingerprint 1AE7 7C66 0A26 5BFF DF22 5D55 1C57 0C89 0E4B D0AB -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: Simple Debian Package Creation?
On Wed, Nov 03, 2004 at 10:47:45AM -0600, Zach Garner wrote: > First: > 1. The sheer number of helper scripts, with layers and layers of > scripts built on top of each other is really confusing. Diversity is often seen as a virtue. That does mean that it can be hard to separate the need from the want, but you really can ignore pretty much every script out there if you really really want to. But take note -- it's a lot harder to do it all by hand. Some of the people who wrote helper scripts knew what they were doing... > 2. The number of files that I have to create within the /debian > directory is difficult to deal with, and having to create the /debian > directory within my application directory and being forced to name my > application directory according to debian rules is very irritating. You're not forced to name your top-level directory anything, dh_make just gets a little anxious if you don't. So don't use dh_make -- it's not a good fit for some situations, anyway. As for the number of files, you can get away with none if you really wanted to, but several little files is much easier to deal with than one large one, IMO. > 3. Most of the package creation scripts (I'm refering explicitly to > dh_make which is supposed to be the proper way of creating a package, as > discussed in the New Maintainer's Guide) You're not a New Maintainer, so the New Maintainer's Guide is going to be of limited help to you. As I mentioned in another of my missives on this subject, you're not doing things the way the manual expects. Hence the manual seems less helpful than it might otherwise be. Consider it an optimisation problem -- you're not processable via the fast path. > expect that you are building a > traditional unix application, that's written in C, has ./configure and a > Makefile. All we are doing in most of our packages is installing some > files. Why can't that be simple? Because simplicity only works when you're doing what the tool expects. > I feel that RPM creation is better here. One command ('rpmbuild') is > used. One file, the .spec file, is needed with different > sections for each part. I can keep my rpm packaging files any where I > want it, and I don't have to have my application directory conform to > any debian rules. I'd hope that creating an RPM wouldn't require you to have your application directory conform to any debian rules... Let me rewrite your sentence: "I feel than .deb creation is better here. One command ('dpkg-buildpackage') is used. One directory, debian/, is needed with different files for each purpose. I keep my .deb packaging files in a consistently named location, which helps others understand what I've done, and I don't have to have my application directory conform to any RPM rules." > Why can't debian package building be as simple as 'dpkg-create > foo.spec'? It's even easier than that -- you don't need to specify a .spec file. > Second, why can't I create packages with standard unix commands? Why > can't I say something like: > $ tar cvzf data.tgz myapplication/* > $ tar czvf control.tgz control > $ tar czvf mypackage-0.1.deb data.tgz control.tgz You can. But you know that by now. > My main complaint here, is that we really want to be able to build the > debian packages from any developer workstation. Since we don't impose > operating system requirements on developers, we can't expect debian to > be on all workstations. And you're shipping the packages that these developers create on random platforms to your customers? Eep. > Right now, using Debian to deploy our software seems more and more > difficult for us. I'd greatly appreciate any advice or comments. All I > want to be able to do is create a package on any unix system that can be > installed via apt-get, that simply installs some files, and can use the > pre/post install/remove scripts. This seems like a simple thing to do, > but the process seems very difficult. It seems difficult because you're coming at this cold, without previous packaging experience doing the more "normal" packaging first. With a bit of experience doing regular packaging, you'd know what really is needed and not needed, and how much dh_make can be full of crap sometimes, and this whole process would be a whole hell of a lot easier. But stick with it. Everything you've described thus far can be done with .debs. - Matt signature.asc Description: Digital signature
Re: Simple Debian Package Creation?
On Wed, Nov 03, 2004 at 09:26:25PM +0100, Bartosz Fenski aka fEnIo wrote: > Most of the apps are using `./configure && make && make install` so dh_make > tries to use that way. > In fact the only file you need is debian/rules. > It should be Makefile which create your package. I probably should mention that dh-make will only use that line if it thinks the package would use it. Basically is there a configure script and is it executable. It usually assumes you type make to make the package but of course that's one line change in one file to fix it. - Craig -- Craig Small GnuPG:1C1B D893 1418 2AF4 45EE 95CB C76C E5AC 12CA DFA5 Eye-Net Consulting http://www.enc.com.au/ MIEE Debian developer csmall at : enc.com.au ieee.org debian.org -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: Simple Debian Package Creation?
On Wed, Nov 03, 2004 at 04:06:01PM -0600, Zach Garner wrote: > On Wed, 2004-11-03 at 21:26 +0100, Bartosz Fenski aka fEnIo wrote: > > On Wed, Nov 03, 2004 at 10:47:45AM -0600, Zach Garner wrote: > > > I'd agree it's pretty confusing, but only first time. > > It's quite easy to understand it. > I'm hoping so, that's why I'm trying not to give up too easily. > > > > Most of the apps are using `./configure && make && make install` so dh_make > > tries to use that way. > > In fact the only file you need is debian/rules. > > It should be Makefile which create your package. > > What bugs me is that as far as I can tell from the documentation, > dh_make is the recommended proper way of doing things. Also, as far as I The documentation you're reading has a target audience of people who want to create packages for Debian. The dh_make cruft is needed for lots of little things we need to make Debian as good as it is. dh_make is also initially targetted, as you've noticed, at building packages which use the old standby of ./configure; make; make install. That isn't quite the universal constant it once was, by virtue of the rise of scripting languages and Java, the former of which doesn't need building, and the latter which decided that it can't be any good because someone else is doing it that way. > can tell I need the following: > README.Debian compat copyright rules control dirs > > I understand your point though, the 'rules' file is the only one that > really matters. "A build script" is, technically, the only thing you need -- just as you would need for a tarball. However, if you want to use the helpers like debhelper, you'll need debian/rules, changelog, and control. The first is the build script, changelog is needed to get versioning information, and control is used by most scripts to get all sorts of interesting information (like what the source package is called, what the binary packages are called, and so on). > I have some makefiles that work ok, by modifying what I got from dh_make > (this is probably a bad idea, but I don't have documentation on how to > hand write one without using debhelper scripts...). Butcher those dh_make-produced systems. That's why they're "templates". > It generally works, > but there is a lot of magic that happens in the dh_ scripts. Read the manpages, both for debhelper itself, and for the individual dh_ scripts. They're pretty well documented, and each one is small enough to be (IMO) understood well. > For instance, I don't know how it knows that debian/ is where > my application data is supposed to be. Is this hardcoded in dpkg-deb? Is > somehow expressed in one of the dh_ scripts that is listed in my "binary:" > target. All I really know is that if I put my files there, it puts them in > the package. I probably need to read the man pages more than I have... That's debhelper compat magic. Back in the olden days, debhelper was more-or-less designed for single binary package work, and so it dumped it all into a directory called 'tmp' in the debian/ directory. That didn't work, so later major versions of Debhelper changed it all around. Read up on "compatibility levels" in debhelper(7). > > > Why can't debian package building be as simple as 'dpkg-create > > > foo.spec'? > > > > > > Second, why can't I create packages with standard unix commands? Why > > > can't I say something like: > > > $ tar cvzf data.tgz myapplication/* > > > $ tar czvf control.tgz control > > > $ tar czvf mypackage-0.1.deb data.tgz control.tgz > > > > Debian uses standard unix commands. > > What I meant by standard roughly translates into available on most/all > unix or linux systems. The format of a .deb file is special as far as I > can tell. I can't create or manipulate them without using dpkg-deb or > one of the other scripts. Nope. Read deb(5) (in the dpkg-dev package). Tells you all about it, in a fair amount of detail, and it's all straight-up stock Unix tools to do it. In fact, in the past, dpkg was nothing more than a shell script. > In fact, I would be happy enough if I could (a) run dpkg-deb on our > other systems, this may be possible, though I don't expect it would too > easy and (b) use dpkg-deb to create a package by giving it the > control.tgz and data.tgz. Ideally, dpkg-deb wouldn't be required to > create the specially formatted deb file, and I could just create a tar. Running the Debian packaging tools on almost any Unix-like system shouldn't be excruciatingly difficult, but as has been said a couple of times now, you don't need any of it to make Debian packages. > > > My main complaint here, is that we really want to be able to build the > > > debian packages from any developer workstation. Since we don't impose > > > operating system requirements on developers, we can't expect debian to > > > be on all workstations. > > > > Sorry. How do you suppose to build rpm without rpm? > Oh, I didn't mean to imply RPM was better here. My other biases s
Re: Simple Debian Package Creation?
On Wed, Nov 03, 2004 at 04:06:01PM -0600, Zach Garner wrote: > What bugs me is that as far as I can tell from the documentation, > dh_make is the recommended proper way of doing things. Also, as far as I > can tell I need the following: > README.Debian compat copyright rules control dirs dh_make often helps beginners by setting things up and giving the example files. Some people like it, some don't; it is really up to you. > I understand your point though, the 'rules' file is the only one that > really matters. The rules file is the one that does all the work. You mentioned you just needed to copy files into the directories. Ironically enough, this is exactly how dh-make the package is built. For simple stuff, I can go from a tgz into a deb in about 10-15 minutes. It takes a while to find your way around though. for something that doesn't need compiling and has no daemons or other strange stuff you could do * untar the source and cd into directory * dh_make * edit control file * edit copyright and changelog files, shouldn't need much though * edit the rules file, in the binary-indep (probably indep because you are not compiling stuff) target put your install commands to put things in the tree under debian/ * put your list of documents in debian/docs * put your list of examples into debian/examples * put your list of manpages into debian/manpages * delete most of the debian/*.ex files left * debuild > I have some makefiles that work ok, by modifying what I got from dh_make > (this is probably a bad idea, but I don't have documentation on how to > hand write one without using debhelper scripts...). It generally works, You're supposed to modify what you get from dh_make. It only makes the templates making some guesses. > > > Why can't debian package building be as simple as 'dpkg-create > > > foo.spec'? Because the Debian packages are more complicated to build. They are that way so they are easier to install for the user. > What I meant by standard roughly translates into available on most/all > unix or linux systems. The format of a .deb file is special as far as I > can tell. I can't create or manipulate them without using dpkg-deb or > one of the other scripts. Actually you can and if you were to attempt to become Debian Maintainer you would need to know how to do some operations with standard unix tools. It is bascially fiddling with ar and tar. > What's still the big problem for us is the need to be on a debian system > to create the packages. From what I can tell, we would likely need a few > packages from debian-unstable on that system as well. It is a lot easier, but anything that has anything more that a trivial packaging system requires this. You could only possibly get away with it because you are not compiling anything. You would not need packages from debian-unstable, unless you needed something from there, such as for a dependency. Our security updates a built on stable dist hosts for example. I would have a problem shipping a package that was not even tested on the native environment. How do you know the program is even going to work properly? - Craig -- Craig Small GnuPG:1C1B D893 1418 2AF4 45EE 95CB C76C E5AC 12CA DFA5 Eye-Net Consulting http://www.enc.com.au/ MIEE Debian developer csmall at : enc.com.au ieee.org debian.org -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: Simple Debian Package Creation?
Zach Garner wrote: > It generally works, but there is a lot of magic that happens in the > dh_ scripts. For instance, I don't know how it knows that > debian/ is where my application data is supposed to be. > Is this hardcoded in dpkg-deb? dpkg-deb can take any directory and turn it into a binary package. (On dpkg-deb(1), note the "directory" option to 'dpkg-deb -b'.) By convention, the debhelper scripts install into debian/, and dh_builddeb calls dpkg-deb with that directory as an argument. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: Simple Debian Package Creation?
On Wed, Nov 03, 2004 at 11:52:41PM +0100, Bartosz Fenski aka fEnIo wrote: > On Wed, Nov 03, 2004 at 04:06:01PM -0600, Zach Garner wrote: > > > Most of the apps are using `./configure && make && make install` so dh_make > > > tries to use that way. > > > In fact the only file you need is debian/rules. > > > It should be Makefile which create your package. > > > > What bugs me is that as far as I can tell from the documentation, > > dh_make is the recommended proper way of doing things. Also, as far as I > > can tell I need the following: > > README.Debian compat copyright rules control dirs > > README.Debian, compat and dirs is useless (well at least it's not needed). > In fact you need copyright, when you write copyright issues (could be You don't need a copyright file to create a package, you just need it if you're ever going to have a hope of getting your package into Debian proper. If that's not a concern, it's not needed. (The voice of experience). > > I understand your point though, the 'rules' file is the only one that > > really matters. > > As I said previously... you can prepare rules file which will handle all > issues, but it's not so easy then. I wouldn't go down that path. Those helper scripts are out there for a reason. But if you need to build debian packages in an environment with nothing but standard unix tools, it's a definite option. > > > If you really don'y like debhelper's scripts you can always write this > > > Makefile yourself or use cdbs (`apt-get install cdbs`). > > > > I'll look into cdbs. > > That's totally other way of packaging. It's designed to simplify rules file > as much as it is possible. > Sorry I won't describe it more verbosely cause I like debhelper ;) I think it won't cure the OP's desire for a comprehensible, do-anything build system -- it's even more heavily tailored to building Debian .debs than debhelper, IMO. > > For instance, I don't know how it knows that debian/ is where > > my application data is supposed to be. Is this hardcoded in dpkg-deb? Is > > somehow expressed in one of the dh_ scripts that is listed in my > > "binary:" target. All I really know is that if I put my files there, it > > puts them in the package. I probably need to read the man pages more > > than I have... > > That is related to debian/control file. > Whole packaging scripts assume that every "Package: " line in > debian/control is used for final packages. > So if you have: > > Package: my_cool_package > > line in debian/control then scripts looking for your files in > debian/my_cool_package directory. So just put there your files in proper > filesystem hierarchy and they'll be moved to package called the same. That's dependent on debhelper magic. See my reply to the previous message for more info. - Matt signature.asc Description: Digital signature
Re: Simple Debian Package Creation?jk
Zach Garner wrote: > What bugs me is that as far as I can tell from the documentation, > dh_make is the recommended proper way of doing things. dh_make automates a lot of the packaging process for most typical packages, but it's certainly not required -- especially if it doesn't suit your package. You should certainly trim down the files and rules generated by dh_make, looking up each of them and removing the ones you don't need or want. > Also, as far as I can tell I need the following: > README.Debian compat copyright rules control dirs "README.Debian" and "dirs" are not required. (The first is completely optional. The second is used by dh_installdirs if it is present, or you can also create directories yourself with "mkdir" or "install -d". Many packages don't need to do either, since the upstream build system already creates all of the required directories.) "compat" is needed only if your package uses debhelper (which it probably should in most cases, to save you from reinventing the wheel -- but it's not required). > > > Second, why can't I create packages with standard unix commands? > > > Why can't I say something like: > > > $ tar cvzf data.tgz myapplication/* > > > $ tar czvf control.tgz control > > > $ tar czvf mypackage-0.1.deb data.tgz control.tgz > > > > Debian uses standard unix commands. > > What I meant by standard roughly translates into available on most/all > unix or linux systems. The format of a .deb file is special as far as > I can tell. It's just an ar(1) archive. See deb(5) for details. Yes, this documentation is sparse and often hard to find. On the other hand, most developers seldom need to look at it because dpkg and debhelper handle it all automatically. > In fact, I would be happy enough if I could (a) run dpkg-deb on our > other systems, this may be possible, though I don't expect it would > too easy [...] As far as I known, the dpkg tools will run on any Unix-like system. They're used on Mac OS X for the "fink" system, for example. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: Simple Debian Package Creation?
On Wed, Nov 03, 2004 at 04:06:01PM -0600, Zach Garner wrote: > > Most of the apps are using `./configure && make && make install` so dh_make > > tries to use that way. > > In fact the only file you need is debian/rules. > > It should be Makefile which create your package. > > What bugs me is that as far as I can tell from the documentation, > dh_make is the recommended proper way of doing things. Also, as far as I > can tell I need the following: > README.Debian compat copyright rules control dirs README.Debian, compat and dirs is useless (well at least it's not needed). In fact you need copyright, when you write copyright issues (could be easily checked how it looks like in other packages), rules (which is the most important file which manages whole building process) and control which could be also easily written cause it includes only most significant issues. > I understand your point though, the 'rules' file is the only one that > really matters. As I said previously... you can prepare rules file which will handle all issues, but it's not so easy then. > > If you really don'y like debhelper's scripts you can always write this > > Makefile yourself or use cdbs (`apt-get install cdbs`). > > I'll look into cdbs. That's totally other way of packaging. It's designed to simplify rules file as much as it is possible. Sorry I won't describe it more verbosely cause I like debhelper ;) > I have some makefiles that work ok, by modifying what I got from dh_make > (this is probably a bad idea, but I don't have documentation on how to > hand write one without using debhelper scripts...) It generally works, > but there is a lot of magic that happens in the dh_ scripts. You can always check some examples. (Not sure if examples is proper name cause they're just working and in most cases fully compliant packages ;)) Anyway... checking some really simple package should give you some ideas what is being happen during packaging. In fact compilation, moving to proper directory and calling dh_builddep should be enough in most cases. You have to use the same targets as in Debian's makefiles, but if you don't care about policy compliant you can even miss that requirenment. > For instance, I don't know how it knows that debian/ is where > my application data is supposed to be. Is this hardcoded in dpkg-deb? Is > somehow expressed in one of the dh_ scripts that is listed in my > "binary:" target. All I really know is that if I put my files there, it > puts them in the package. I probably need to read the man pages more > than I have... That is related to debian/control file. Whole packaging scripts assume that every "Package: " line in debian/control is used for final packages. So if you have: Package: my_cool_package line in debian/control then scripts looking for your files in debian/my_cool_package directory. So just put there your files in proper filesystem hierarchy and they'll be moved to package called the same. > > > Second, why can't I create packages with standard unix commands? Why > > > can't I say something like: > > > $ tar cvzf data.tgz myapplication/* > > > $ tar czvf control.tgz control > > > $ tar czvf mypackage-0.1.deb data.tgz control.tgz > > > > Debian uses standard unix commands. > > What I meant by standard roughly translates into available on most/all > unix or linux systems. The format of a .deb file is special as far as I > can tell. I can't create or manipulate them without using dpkg-deb or > one of the other scripts. Well you can. But then it became even more hard to do. You can use ar, tar and gzip. You seems to ignore fact that Debian contains almost only free software, and it is almost only build on Debian's autobuilders (excluding non-free and contrib). So building scripts are designed to simplify *this* task, and not packaging binary files. Sorry that's the way it is. We're targeted at FREE SOFTWARE and our policy demands to build it with another free software available on our autobuiders. It is however possible to build binary package in other way. AFAIR there is some manual on the net how to easily do that. Quick google search: http://tldp.org/HOWTO/Debian-Binary-Package-Building-HOWTO/ > In fact, I would be happy enough if I could (a) run dpkg-deb on our > other systems, this may be possible, though I don't expect it would too > easy and (b) use dpkg-deb to create a package by giving it the > control.tgz and data.tgz. Ideally, dpkg-deb wouldn't be required to > create the specially formatted deb file, and I could just create a tar. Take a look at mentioned link. If you don't care our policy then use binary packaging. > > > My main complaint here, is that we really want to be able to build the > > > debian packages from any developer workstation. Since we don't impose > > > operating system requirements on developers, we can't expect debian to > > > be on all workstations. > > > > Sorry. How do you suppose to build rpm without rpm? > Oh, I didn't m
Re: Simple Debian Package Creation?
On Wed, Nov 03, 2004 at 04:06:01PM -0600, Zach Garner wrote: > > > Second, why can't I create packages with standard unix commands? Why > > > can't I say something like: > > > $ tar cvzf data.tgz myapplication/* > > > $ tar czvf control.tgz control > > > $ tar czvf mypackage-0.1.deb data.tgz control.tgz > > > > Debian uses standard unix commands. > > What I meant by standard roughly translates into available on most/all > unix or linux systems. The format of a .deb file is special as far as I > can tell. I can't create or manipulate them without using dpkg-deb or > one of the other scripts. try ar Frank -- "Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." - Brian W. Kernighan -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: Simple Debian Package Creation?
On Wed, Nov 03, 2004 at 10:47:45AM -0600, Zach Garner wrote: [...] > First: > 1. The sheer number of helper scripts, with layers and layers of > scripts built on top of each other is really confusing. I'd agree it's pretty confusing, but only first time. It's quite easy to understand it. > 2. The number of files that I have to create within the /debian > directory is difficult to deal with, and having to create the /debian > directory within my application directory and being forced to name my > application directory according to debian rules is very irritating. You don't need all of them. > 3. Most of the package creation scripts (I'm refering explicitly to > dh_make which is supposed to be the proper way of creating a package, as > discussed in the New Maintainer's Guide) expect that you are building a > traditional unix application, that's written in C, has ./configure and a > Makefile. All we are doing in most of our packages is installing some > files. Why can't that be simple? Most of the apps are using `./configure && make && make install` so dh_make tries to use that way. In fact the only file you need is debian/rules. It should be Makefile which create your package. If you really don'y like debhelper's scripts you can always write this Makefile yourself or use cdbs (`apt-get install cdbs`). > I feel that RPM creation is better here. One command ('rpmbuild') is > used. One file, the .spec file, is needed with different > sections for each part. I can keep my rpm packaging files any where I > want it, and I don't have to have my application directory conform to > any debian rules. I know that rpm is using one file. So what? I LOVE to split tasks to many files... that's the unix way ;) And as I mentioned... s/.spec/debian\/rules/ and you still have one file. > Why can't debian package building be as simple as 'dpkg-create > foo.spec'? > > Second, why can't I create packages with standard unix commands? Why > can't I say something like: > $ tar cvzf data.tgz myapplication/* > $ tar czvf control.tgz control > $ tar czvf mypackage-0.1.deb data.tgz control.tgz Debian uses standard unix commands. > My main complaint here, is that we really want to be able to build the > debian packages from any developer workstation. Since we don't impose > operating system requirements on developers, we can't expect debian to > be on all workstations. Sorry. How do you suppose to build rpm without rpm? > Right now, using Debian to deploy our software seems more and more > difficult for us. I'd greatly appreciate any advice or comments. All I > want to be able to do is create a package on any unix system that can be > installed via apt-get, that simply installs some files, and can use the > pre/post install/remove scripts. This seems like a simple thing to do, > but the process seems very difficult. Is your software free? Can you share it with us? I'm sure that someone create proper packaging scripts for you. I'm first to help you if you want. regards fEnIo -- _ Bartosz Fenski | mailto:[EMAIL PROTECTED] | pgp:0x13fefc40 | IRC:fEnIo _|_|_ 32-050 Skawina - Glowackiego 3/15 - w. malopolskie - Polska (0 0) phone:+48602383548 | Slackware - the weakest link ooO--(_)--Ooo http://skawina.eu.org | JID:[EMAIL PROTECTED] | RLU:172001 signature.asc Description: Digital signature
Re: Simple Debian Package Creation?
On Wed, 2004-11-03 at 21:26 +0100, Bartosz Fenski aka fEnIo wrote: > On Wed, Nov 03, 2004 at 10:47:45AM -0600, Zach Garner wrote: > I'd agree it's pretty confusing, but only first time. > It's quite easy to understand it. I'm hoping so, that's why I'm trying not to give up too easily. > Most of the apps are using `./configure && make && make install` so dh_make > tries to use that way. > In fact the only file you need is debian/rules. > It should be Makefile which create your package. What bugs me is that as far as I can tell from the documentation, dh_make is the recommended proper way of doing things. Also, as far as I can tell I need the following: README.Debian compat copyright rules control dirs I understand your point though, the 'rules' file is the only one that really matters. > If you really don'y like debhelper's scripts you can always write this > Makefile yourself or use cdbs (`apt-get install cdbs`). I'll look into cdbs. I have some makefiles that work ok, by modifying what I got from dh_make (this is probably a bad idea, but I don't have documentation on how to hand write one without using debhelper scripts...). It generally works, but there is a lot of magic that happens in the dh_ scripts. For instance, I don't know how it knows that debian/ is where my application data is supposed to be. Is this hardcoded in dpkg-deb? Is somehow expressed in one of the dh_ scripts that is listed in my "binary:" target. All I really know is that if I put my files there, it puts them in the package. I probably need to read the man pages more than I have... > > > Why can't debian package building be as simple as 'dpkg-create > > foo.spec'? > > > > Second, why can't I create packages with standard unix commands? Why > > can't I say something like: > > $ tar cvzf data.tgz myapplication/* > > $ tar czvf control.tgz control > > $ tar czvf mypackage-0.1.deb data.tgz control.tgz > > Debian uses standard unix commands. What I meant by standard roughly translates into available on most/all unix or linux systems. The format of a .deb file is special as far as I can tell. I can't create or manipulate them without using dpkg-deb or one of the other scripts. In fact, I would be happy enough if I could (a) run dpkg-deb on our other systems, this may be possible, though I don't expect it would too easy and (b) use dpkg-deb to create a package by giving it the control.tgz and data.tgz. Ideally, dpkg-deb wouldn't be required to create the specially formatted deb file, and I could just create a tar. > > My main complaint here, is that we really want to be able to build the > > debian packages from any developer workstation. Since we don't impose > > operating system requirements on developers, we can't expect debian to > > be on all workstations. > > Sorry. How do you suppose to build rpm without rpm? Oh, I didn't mean to imply RPM was better here. My other biases show here.. I started out with Slackware, and later spent quite a while in the OpenBSD then FreeBSD world. For all of those .tgz was the standard format. I'm trying my best to put aside my previous habits, and get into the debian package building way of thought. > > > Right now, using Debian to deploy our software seems more and more > > difficult for us. I'd greatly appreciate any advice or comments. All I > > want to be able to do is create a package on any unix system that can be > > installed via apt-get, that simply installs some files, and can use the > > pre/post install/remove scripts. This seems like a simple thing to do, > > but the process seems very difficult. > > Is your software free? Can you share it with us? > I'm sure that someone create proper packaging scripts for you. > I'm first to help you if you want. Unfortunately, it's not. I greatly appreciate the help you've given so far, and the offer for more help. I can only promise that, if I start to like the debian package build process, that I will contribute back in my free time. I was once a FreeBSD package maintainer... I can get over part of my complaints. I can deal with the multiple files in the debian directory, and may come to love it. The layers of scripts, and the resulting confusing, conflicting documentation is still a problem. But I expect I can eventually come to an understanding of it all. What's still the big problem for us is the need to be on a debian system to create the packages. From what I can tell, we would likely need a few packages from debian-unstable on that system as well. This isn't a technically insurmountable problem, but it is a snag when it comes to convincing my supervisors that choosing debian and apt-get for our production platform was a great idea. (it's probably still the best idea, but unfortunately, maybe not a great one for our needs) Thanks -- Zach Garner <[EMAIL PROTECTED]> -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: Simple Debian Package Creation?
On Wed, 3 Nov 2004, Zach Garner wrote: > 1. The sheer number of helper scripts, with layers and layers of > scripts built on top of each other is really confusing. Try apt-get source hello for an example package with less "layers".
Re: Simple Debian Package Creation?
On Wed, Nov 03, 2004 at 10:47:45AM -0600, Zach Garner wrote: [...] > First: > 1. The sheer number of helper scripts, with layers and layers of > scripts built on top of each other is really confusing. I'd agree it's pretty confusing, but only first time. It's quite easy to understand it. > 2. The number of files that I have to create within the /debian > directory is difficult to deal with, and having to create the /debian > directory within my application directory and being forced to name my > application directory according to debian rules is very irritating. You don't need all of them. > 3. Most of the package creation scripts (I'm refering explicitly to > dh_make which is supposed to be the proper way of creating a package, as > discussed in the New Maintainer's Guide) expect that you are building a > traditional unix application, that's written in C, has ./configure and a > Makefile. All we are doing in most of our packages is installing some > files. Why can't that be simple? Most of the apps are using `./configure && make && make install` so dh_make tries to use that way. In fact the only file you need is debian/rules. It should be Makefile which create your package. If you really don'y like debhelper's scripts you can always write this Makefile yourself or use cdbs (`apt-get install cdbs`). > I feel that RPM creation is better here. One command ('rpmbuild') is > used. One file, the .spec file, is needed with different > sections for each part. I can keep my rpm packaging files any where I > want it, and I don't have to have my application directory conform to > any debian rules. I know that rpm is using one file. So what? I LOVE to split tasks to many files... that's the unix way ;) And as I mentioned... s/.spec/debian\/rules/ and you still have one file. > Why can't debian package building be as simple as 'dpkg-create > foo.spec'? > > Second, why can't I create packages with standard unix commands? Why > can't I say something like: > $ tar cvzf data.tgz myapplication/* > $ tar czvf control.tgz control > $ tar czvf mypackage-0.1.deb data.tgz control.tgz Debian uses standard unix commands. > My main complaint here, is that we really want to be able to build the > debian packages from any developer workstation. Since we don't impose > operating system requirements on developers, we can't expect debian to > be on all workstations. Sorry. How do you suppose to build rpm without rpm? > Right now, using Debian to deploy our software seems more and more > difficult for us. I'd greatly appreciate any advice or comments. All I > want to be able to do is create a package on any unix system that can be > installed via apt-get, that simply installs some files, and can use the > pre/post install/remove scripts. This seems like a simple thing to do, > but the process seems very difficult. Is your software free? Can you share it with us? I'm sure that someone create proper packaging scripts for you. I'm first to help you if you want. regards fEnIo -- _ Bartosz Fenski | mailto:[EMAIL PROTECTED] | pgp:0x13fefc40 | IRC:fEnIo _|_|_ 32-050 Skawina - Glowackiego 3/15 - w. malopolskie - Polska (0 0) phone:+48602383548 | Slackware - the weakest link ooO--(_)--Ooo http://skawina.eu.org | JID:[EMAIL PROTECTED] | RLU:172001 signature.asc Description: Digital signature
Re: Simple Debian Package Creation?
On Wednesday 03 November 2004 19:32, Rene Engelhard wrote: --cut-- > > 2. The number of files that I have to create within the /debian > > directory is difficult to deal with, and having to create the /debian > > directory within my application directory and being forced to name my > > application directory according to debian rules is very irritating. > > You don't need to do that manally. dh_make gives you a template. You need > to adjust that a bit, though, for your needs... I'd add that there are also some debian specific things that no other packaging system on this planet knows about or can handle - debconf templates, apt watch ... Of cource noone forces you to use them. It would be very confusing if everything is put in one file (say debian/rules) ... that's why the tasks are separated in several files. --cut-- > > Second, why can't I create packages with standard unix commands? Why > > can't I say something like: > > $ tar cvzf data.tgz myapplication/* > > $ tar czvf control.tgz control > > $ tar czvf mypackage-0.1.deb data.tgz control.tgz > > man ar, man tar, man deb > > you *could* do that manually, read man deb for the exact structure - as deb > ist just an ar archive with two tar archives and one file. But it is *far* > easier to get a package right with the "normal" way... > > > My main complaint here, is that we really want to be able to build the > > debian packages from any developer workstation. Since we don't impose > > operating system requirements on developers, we can't expect debian to > > be on all workstations. > > You can't do that with rpm either. You need rpm installed anyhow. > Same with debian. I would add that if one knows what s/he is doing, then simple/generic things like mkdir, cp, echo might be explored... and of cource we need dpkg-deb on one host installed to assemble the deb: # mkdir -p wsver/usr/bin wsver/DEBIAN # cp wsver wsver/usr/bin # echo "Package: wsver" > wsver/DEBIAN/control # echo "Version: 1" >> wsver/DEBIAN/control # echo "Architecture: i386" >> wsver/DEBIAN/control # echo "Maintainer: You <[EMAIL PROTECTED]>" >> wsver/DEBIAN/control # echo "Description: Check web server version" >> wsver/DEBIAN/control # dpkg-deb -b wsver dpkg-deb: building package `wsver' in `wsver.deb'. The things could be simple or complex, depends of what and who is doing them ;-) -- pub 4096R/0E4BD0AB 2003-03-18 fingerprint 1AE7 7C66 0A26 5BFF DF22 5D55 1C57 0C89 0E4B D0AB
Re: Simple Debian Package Creation?
On Wed, 03 Nov 2004 10:47:45 -0600 Zach Garner <[EMAIL PROTECTED]> wrote: [...] > First: > 1. The sheer number of helper scripts, with layers and layers of > scripts built on top of each other is really confusing. You don't need to understand they all to make packages, but at least you can see what they are doing. > 2. The number of files that I have to create within the /debian > directory is difficult to deal with, and having to create the /debian > directory within my application directory and being forced to name my > application directory according to debian rules is very irritating. Most of the files added by dh_make are there to be deleted. IIRC you only need the control, rules, compat, changelog and copyright, the rest is pretty optional. > 3. Most of the package creation scripts (I'm refering explicitly to > dh_make which is supposed to be the proper way of creating a package, > as discussed in the New Maintainer's Guide) expect that you are > building a traditional unix application, that's written in C, has > ./configure and a Makefile. All we are doing in most of our packages > is installing some files. Why can't that be simple? It is, make the Makefile copy the files at the right location. Anyway seems you're forgetting Debian packaging is meant for sources to be built in different architectures, not a replacement for tar+gzip. > I feel that RPM creation is better here. One command ('rpmbuild') is > used. One file, the .spec file, is needed with different > sections for each part. I can keep my rpm packaging files any where I > want it, and I don't have to have my application directory conform to > any debian rules. So you want to make a Debian package that is not a Debian package? Use the right tool: tar czf > Why can't debian package building be as simple as 'dpkg-create > foo.spec'? Quality has a price. > Second, why can't I create packages with standard unix commands? Why > can't I say something like: > $ tar cvzf data.tgz myapplication/* > $ tar czvf control.tgz control > $ tar czvf mypackage-0.1.deb data.tgz control.tgz You can, in fact they are designed for using standard tools, but you have to understand the package structure first. Try "ar x any.deb" > My main complaint here, is that we really want to be able to build the > debian packages from any developer workstation. Since we don't impose > operating system requirements on developers, we can't expect debian to > be on all workstations. > > Right now, using Debian to deploy our software seems more and more > difficult for us. I'd greatly appreciate any advice or comments. All I > want to be able to do is create a package on any unix system that can > be installed via apt-get, that simply installs some files, and can use > the pre/post install/remove scripts. This seems like a simple thing to > do, but the process seems very difficult. I repeat, you don't want to use apt-get, you want to use wget and a web server populated with tar.gz files. Imposing apt-get is making your non-Debian workstation developers change the natural way of installing sofware, so, if you can do that, don't mess with making debs, make a script called "tycoon-install" that grabs the tar.gz from your server and unpacks it to the "right" location and teach your users. -- Ricardo Mones Lastra - [EMAIL PROTECTED] Centro de Inteligencia Artificial, Universidad de Oviedo en Gijon 33271 Asturias, SPAIN. - http://www.aic.uniovi.es/mones
Re: Simple Debian Package Creation?
Zach Garner <[EMAIL PROTECTED]> writes: > First: > 1. The sheer number of helper scripts, with layers and layers of > scripts built on top of each other is really confusing. Hm? Do you mean the debhelper scripts? Those significantly help simplify the writing of debian/rules. Of course, if you don't like them, you don't have to use them. > 2. The number of files that I have to create within the /debian > directory is difficult to deal with, and having to create the /debian > directory within my application directory and being forced to name my > application directory according to debian rules is very irritating. Only a couple files in debian/ are actually required. No one forces you to name your directory anything. > 3. Most of the package creation scripts (I'm refering explicitly to > dh_make which is supposed to be the proper way of creating a package, as > discussed in the New Maintainer's Guide) expect that you are building a > traditional unix application, that's written in C, has ./configure and a > Makefile. All we are doing in most of our packages is installing some > files. Why can't that be simple? It can be. dh_make is pretty crappy a lot of the time. Either undo its damage or just don't use it to begin with. > Second, why can't I create packages with standard unix commands? Why > can't I say something like: > $ tar cvzf data.tgz myapplication/* > $ tar czvf control.tgz control > $ tar czvf mypackage-0.1.deb data.tgz control.tgz I don't know. Why can't you? Those no reason you shouldn't be able to built a .deb by hand. -- Blast you and your estrogenical treachery!
Re: Simple Debian Package Creation?
Hi, I know both the deb (Debian developer) and the rpm (at work) side.. Am Mittwoch, 3. November 2004 17:47 schrieb Zach Garner: > First: > 1. The sheer number of helper scripts, with layers and layers of > scripts built on top of each other is really confusing. You don't need to use them... mostly what you need is just dh_* from debhelper. Each one has its own purpose. Many people don't need them all... > 2. The number of files that I have to create within the /debian > directory is difficult to deal with, and having to create the /debian > directory within my application directory and being forced to name my > application directory according to debian rules is very irritating. You don't need to do that manally. dh_make gives you a template. You need to adjust that a bit, though, for your needs... > 3. Most of the package creation scripts (I'm refering explicitly to > dh_make which is supposed to be the proper way of creating a package, as > discussed in the New Maintainer's Guide) expect that you are building a > traditional unix application, that's written in C, has ./configure and a > Makefile. All we are doing in most of our packages is installing some > files. Why can't that be simple? Because most stuff *is* ./configure; make; make install If you have a stuff which is not that way and just needs putting files around, just do it. No one tells you you have to stick exactly with dh_makes template. you just can use cp, install or whatever to install the files into the proper debian/foo/usr/... directories... > I feel that RPM creation is better here. One command ('rpmbuild') is > used. One file, the .spec file, is needed with different > sections for each part. I can keep my rpm packaging files any where I > want it, and I don't have to have my application directory conform to You can have that with debian/* too. Just stick them somewhere and copy it into your pristine source if needed. No one tells you that debian/ has to be in your source tarball, it even is discouraged... > any debian rules. the foo-0.1 is a convention. if your stuff doesn't follow it it is broken. I don't see anyhow how it is bad to name a directory foo-version. And: You *could* use a random directory name later after dh_install (dh_install needs to get the info it puts into the template from somehwre). YOu'll get warnings and your poackage probably won't be Debian policy compliant (.dsc/.diff.gz/.orig.tar.gz) but it would work. dh_make is a tool for people building debs mainly for the dist. There are some policies which *are* to follow... > > Why can't debian package building be as simple as 'dpkg-create > foo.spec'? That's what dh_make does. Packaging is more than just using a template... > Second, why can't I create packages with standard unix commands? Why > can't I say something like: > $ tar cvzf data.tgz myapplication/* > $ tar czvf control.tgz control > $ tar czvf mypackage-0.1.deb data.tgz control.tgz man ar, man tar, man deb you *could* do that manually, read man deb for the exact structure - as deb ist just an ar archive with two tar archives and one file. But it is *far* easier to get a package right with the "normal" way... > My main complaint here, is that we really want to be able to build the > debian packages from any developer workstation. Since we don't impose > operating system requirements on developers, we can't expect debian to > be on all workstations. You can't do that with rpm either. You need rpm installed anyhow. Same with debian. Regards, Rene -- .''`. René Engelhard -- Debian GNU/Linux Developer : :' : http://www.debian.org | http://people.debian.org/~rene/ `. `' [EMAIL PROTECTED] | GnuPG-Key ID: 248AEB73 `- Fingerprint: 41FA F208 28D4 7CA5 19BB 7AD9 F859 90B0 248A EB73
Re: How to handle Perl modules which are not yet packaged?
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Don Armstrong schrieb: | On Tue, 02 Nov 2004, Roland Gruber wrote: | |>LAM is a webfrontend for managing LDAP accounts which is written in |>PHP. But there is also a small script included which allows to |>manage Quota etc.. This script uses the non-packaged Net::SSH::Perl |>module. |> |>So can I just close the bug because the installation is covered in |>the documentation? Or how should I deal with this problem? | | | You probably should Suggest: libnet-ssh-perl-perl [or whatever it | actually is] and reassign the bug against your package to WNPP and | retitle it as an RFP (or ITP if you plan to package it.) ok, then I will create an RFP. | Hopefully your directions inclue dh-make-perl --build --cpan | Net::SSH::Perl; or similar which should build a .deb to satisfy this Not yet. The documentation is distribution independent. But I will include this for the next release as it is really a lot easier than compiling manually. :) | [One also wonders why the script is using Net::SSH::Perl instead of | Net::SSH, since the latter provides similar functionality using ssh | itself.] The latter is only a wrapper to ssh and the main reason against it is its dependency on public-key authentification. We need passwords for LAM. Greetings, Roland -BEGIN PGP SIGNATURE- Version: GnuPG v1.2.4 (GNU/Linux) Comment: Using GnuPG with Debian - http://enigmail.mozdev.org iD8DBQFBiRC2q/ywNCsrGZ4RAmrxAJ9KyZBZd2vxIA4gKlow8yi2GR10wACeLKDK IJHEoy1cK/uZHBXWFhm8QGI= =GFDD -END PGP SIGNATURE-
Simple Debian Package Creation?
My company is a software development shop that uses Debian for all of our production systems. We chose Debian based on it's reputation on packaging. Our goal is to be able to type 'ant deploy' have our software built, have debian packages built with our software, and other support software, and then have a debian repository created. Then be able to do 'apt-get update' from our production systems, to upgrade our application on those systems. Unfortunately, it's not working out so easily. I've been a little frustrated with creating debian packages. As a user, I love Debian, but so far as a package creator, it's given me headaches. I'm hoping someone can enlighten me on a few things. I have a little experience with RedHat's packaging about a year ago, so I will mention it from time to time. Please don't take offense when I say that I like an aspect of RPM creation better than debian creation. And definitely correct my when my memory fails. First: 1. The sheer number of helper scripts, with layers and layers of scripts built on top of each other is really confusing. 2. The number of files that I have to create within the /debian directory is difficult to deal with, and having to create the /debian directory within my application directory and being forced to name my application directory according to debian rules is very irritating. 3. Most of the package creation scripts (I'm refering explicitly to dh_make which is supposed to be the proper way of creating a package, as discussed in the New Maintainer's Guide) expect that you are building a traditional unix application, that's written in C, has ./configure and a Makefile. All we are doing in most of our packages is installing some files. Why can't that be simple? I feel that RPM creation is better here. One command ('rpmbuild') is used. One file, the .spec file, is needed with different sections for each part. I can keep my rpm packaging files any where I want it, and I don't have to have my application directory conform to any debian rules. Why can't debian package building be as simple as 'dpkg-create foo.spec'? Second, why can't I create packages with standard unix commands? Why can't I say something like: $ tar cvzf data.tgz myapplication/* $ tar czvf control.tgz control $ tar czvf mypackage-0.1.deb data.tgz control.tgz My main complaint here, is that we really want to be able to build the debian packages from any developer workstation. Since we don't impose operating system requirements on developers, we can't expect debian to be on all workstations. Right now, using Debian to deploy our software seems more and more difficult for us. I'd greatly appreciate any advice or comments. All I want to be able to do is create a package on any unix system that can be installed via apt-get, that simply installs some files, and can use the pre/post install/remove scripts. This seems like a simple thing to do, but the process seems very difficult. -- Zach Garner <[EMAIL PROTECTED]>
Re: Simple Debian Package Creation?
On Wed, 3 Nov 2004, Zach Garner wrote: > 1. The sheer number of helper scripts, with layers and layers of > scripts built on top of each other is really confusing. Try apt-get source hello for an example package with less "layers". -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: Simple Debian Package Creation?
On Wednesday 03 November 2004 19:32, Rene Engelhard wrote: --cut-- > > 2. The number of files that I have to create within the /debian > > directory is difficult to deal with, and having to create the /debian > > directory within my application directory and being forced to name my > > application directory according to debian rules is very irritating. > > You don't need to do that manally. dh_make gives you a template. You need > to adjust that a bit, though, for your needs... I'd add that there are also some debian specific things that no other packaging system on this planet knows about or can handle - debconf templates, apt watch ... Of cource noone forces you to use them. It would be very confusing if everything is put in one file (say debian/rules) ... that's why the tasks are separated in several files. --cut-- > > Second, why can't I create packages with standard unix commands? Why > > can't I say something like: > > $ tar cvzf data.tgz myapplication/* > > $ tar czvf control.tgz control > > $ tar czvf mypackage-0.1.deb data.tgz control.tgz > > man ar, man tar, man deb > > you *could* do that manually, read man deb for the exact structure - as deb > ist just an ar archive with two tar archives and one file. But it is *far* > easier to get a package right with the "normal" way... > > > My main complaint here, is that we really want to be able to build the > > debian packages from any developer workstation. Since we don't impose > > operating system requirements on developers, we can't expect debian to > > be on all workstations. > > You can't do that with rpm either. You need rpm installed anyhow. > Same with debian. I would add that if one knows what s/he is doing, then simple/generic things like mkdir, cp, echo might be explored... and of cource we need dpkg-deb on one host installed to assemble the deb: # mkdir -p wsver/usr/bin wsver/DEBIAN # cp wsver wsver/usr/bin # echo "Package: wsver" > wsver/DEBIAN/control # echo "Version: 1" >> wsver/DEBIAN/control # echo "Architecture: i386" >> wsver/DEBIAN/control # echo "Maintainer: You <[EMAIL PROTECTED]>" >> wsver/DEBIAN/control # echo "Description: Check web server version" >> wsver/DEBIAN/control # dpkg-deb -b wsver dpkg-deb: building package `wsver' in `wsver.deb'. The things could be simple or complex, depends of what and who is doing them ;-) -- pub 4096R/0E4BD0AB 2003-03-18 fingerprint 1AE7 7C66 0A26 5BFF DF22 5D55 1C57 0C89 0E4B D0AB -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: Simple Debian Package Creation?
On Wed, 03 Nov 2004 10:47:45 -0600 Zach Garner <[EMAIL PROTECTED]> wrote: [...] > First: > 1. The sheer number of helper scripts, with layers and layers of > scripts built on top of each other is really confusing. You don't need to understand they all to make packages, but at least you can see what they are doing. > 2. The number of files that I have to create within the /debian > directory is difficult to deal with, and having to create the /debian > directory within my application directory and being forced to name my > application directory according to debian rules is very irritating. Most of the files added by dh_make are there to be deleted. IIRC you only need the control, rules, compat, changelog and copyright, the rest is pretty optional. > 3. Most of the package creation scripts (I'm refering explicitly to > dh_make which is supposed to be the proper way of creating a package, > as discussed in the New Maintainer's Guide) expect that you are > building a traditional unix application, that's written in C, has > ./configure and a Makefile. All we are doing in most of our packages > is installing some files. Why can't that be simple? It is, make the Makefile copy the files at the right location. Anyway seems you're forgetting Debian packaging is meant for sources to be built in different architectures, not a replacement for tar+gzip. > I feel that RPM creation is better here. One command ('rpmbuild') is > used. One file, the .spec file, is needed with different > sections for each part. I can keep my rpm packaging files any where I > want it, and I don't have to have my application directory conform to > any debian rules. So you want to make a Debian package that is not a Debian package? Use the right tool: tar czf > Why can't debian package building be as simple as 'dpkg-create > foo.spec'? Quality has a price. > Second, why can't I create packages with standard unix commands? Why > can't I say something like: > $ tar cvzf data.tgz myapplication/* > $ tar czvf control.tgz control > $ tar czvf mypackage-0.1.deb data.tgz control.tgz You can, in fact they are designed for using standard tools, but you have to understand the package structure first. Try "ar x any.deb" > My main complaint here, is that we really want to be able to build the > debian packages from any developer workstation. Since we don't impose > operating system requirements on developers, we can't expect debian to > be on all workstations. > > Right now, using Debian to deploy our software seems more and more > difficult for us. I'd greatly appreciate any advice or comments. All I > want to be able to do is create a package on any unix system that can > be installed via apt-get, that simply installs some files, and can use > the pre/post install/remove scripts. This seems like a simple thing to > do, but the process seems very difficult. I repeat, you don't want to use apt-get, you want to use wget and a web server populated with tar.gz files. Imposing apt-get is making your non-Debian workstation developers change the natural way of installing sofware, so, if you can do that, don't mess with making debs, make a script called "tycoon-install" that grabs the tar.gz from your server and unpacks it to the "right" location and teach your users. -- Ricardo Mones Lastra - [EMAIL PROTECTED] Centro de Inteligencia Artificial, Universidad de Oviedo en Gijon 33271 Asturias, SPAIN. - http://www.aic.uniovi.es/mones -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: Simple Debian Package Creation?
Zach Garner <[EMAIL PROTECTED]> writes: > First: > 1. The sheer number of helper scripts, with layers and layers of > scripts built on top of each other is really confusing. Hm? Do you mean the debhelper scripts? Those significantly help simplify the writing of debian/rules. Of course, if you don't like them, you don't have to use them. > 2. The number of files that I have to create within the /debian > directory is difficult to deal with, and having to create the /debian > directory within my application directory and being forced to name my > application directory according to debian rules is very irritating. Only a couple files in debian/ are actually required. No one forces you to name your directory anything. > 3. Most of the package creation scripts (I'm refering explicitly to > dh_make which is supposed to be the proper way of creating a package, as > discussed in the New Maintainer's Guide) expect that you are building a > traditional unix application, that's written in C, has ./configure and a > Makefile. All we are doing in most of our packages is installing some > files. Why can't that be simple? It can be. dh_make is pretty crappy a lot of the time. Either undo its damage or just don't use it to begin with. > Second, why can't I create packages with standard unix commands? Why > can't I say something like: > $ tar cvzf data.tgz myapplication/* > $ tar czvf control.tgz control > $ tar czvf mypackage-0.1.deb data.tgz control.tgz I don't know. Why can't you? Those no reason you shouldn't be able to built a .deb by hand. -- Blast you and your estrogenical treachery! -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: Simple Debian Package Creation?
Hi, I know both the deb (Debian developer) and the rpm (at work) side.. Am Mittwoch, 3. November 2004 17:47 schrieb Zach Garner: > First: > 1. The sheer number of helper scripts, with layers and layers of > scripts built on top of each other is really confusing. You don't need to use them... mostly what you need is just dh_* from debhelper. Each one has its own purpose. Many people don't need them all... > 2. The number of files that I have to create within the /debian > directory is difficult to deal with, and having to create the /debian > directory within my application directory and being forced to name my > application directory according to debian rules is very irritating. You don't need to do that manally. dh_make gives you a template. You need to adjust that a bit, though, for your needs... > 3. Most of the package creation scripts (I'm refering explicitly to > dh_make which is supposed to be the proper way of creating a package, as > discussed in the New Maintainer's Guide) expect that you are building a > traditional unix application, that's written in C, has ./configure and a > Makefile. All we are doing in most of our packages is installing some > files. Why can't that be simple? Because most stuff *is* ./configure; make; make install If you have a stuff which is not that way and just needs putting files around, just do it. No one tells you you have to stick exactly with dh_makes template. you just can use cp, install or whatever to install the files into the proper debian/foo/usr/... directories... > I feel that RPM creation is better here. One command ('rpmbuild') is > used. One file, the .spec file, is needed with different > sections for each part. I can keep my rpm packaging files any where I > want it, and I don't have to have my application directory conform to You can have that with debian/* too. Just stick them somewhere and copy it into your pristine source if needed. No one tells you that debian/ has to be in your source tarball, it even is discouraged... > any debian rules. the foo-0.1 is a convention. if your stuff doesn't follow it it is broken. I don't see anyhow how it is bad to name a directory foo-version. And: You *could* use a random directory name later after dh_install (dh_install needs to get the info it puts into the template from somehwre). YOu'll get warnings and your poackage probably won't be Debian policy compliant (.dsc/.diff.gz/.orig.tar.gz) but it would work. dh_make is a tool for people building debs mainly for the dist. There are some policies which *are* to follow... > > Why can't debian package building be as simple as 'dpkg-create > foo.spec'? That's what dh_make does. Packaging is more than just using a template... > Second, why can't I create packages with standard unix commands? Why > can't I say something like: > $ tar cvzf data.tgz myapplication/* > $ tar czvf control.tgz control > $ tar czvf mypackage-0.1.deb data.tgz control.tgz man ar, man tar, man deb you *could* do that manually, read man deb for the exact structure - as deb ist just an ar archive with two tar archives and one file. But it is *far* easier to get a package right with the "normal" way... > My main complaint here, is that we really want to be able to build the > debian packages from any developer workstation. Since we don't impose > operating system requirements on developers, we can't expect debian to > be on all workstations. You can't do that with rpm either. You need rpm installed anyhow. Same with debian. Regards, Rene -- .''`. Renà Engelhard -- Debian GNU/Linux Developer : :' : http://www.debian.org | http://people.debian.org/~rene/ `. `' [EMAIL PROTECTED] | GnuPG-Key ID: 248AEB73 `- Fingerprint: 41FA F208 28D4 7CA5 19BB 7AD9 F859 90B0 248A EB73
Re: How to handle Perl modules which are not yet packaged?
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Don Armstrong schrieb: | On Tue, 02 Nov 2004, Roland Gruber wrote: | |>LAM is a webfrontend for managing LDAP accounts which is written in |>PHP. But there is also a small script included which allows to |>manage Quota etc.. This script uses the non-packaged Net::SSH::Perl |>module. |> |>So can I just close the bug because the installation is covered in |>the documentation? Or how should I deal with this problem? | | | You probably should Suggest: libnet-ssh-perl-perl [or whatever it | actually is] and reassign the bug against your package to WNPP and | retitle it as an RFP (or ITP if you plan to package it.) ok, then I will create an RFP. | Hopefully your directions inclue dh-make-perl --build --cpan | Net::SSH::Perl; or similar which should build a .deb to satisfy this Not yet. The documentation is distribution independent. But I will include this for the next release as it is really a lot easier than compiling manually. :) | [One also wonders why the script is using Net::SSH::Perl instead of | Net::SSH, since the latter provides similar functionality using ssh | itself.] The latter is only a wrapper to ssh and the main reason against it is its dependency on public-key authentification. We need passwords for LAM. Greetings, Roland -BEGIN PGP SIGNATURE- Version: GnuPG v1.2.4 (GNU/Linux) Comment: Using GnuPG with Debian - http://enigmail.mozdev.org iD8DBQFBiRC2q/ywNCsrGZ4RAmrxAJ9KyZBZd2vxIA4gKlow8yi2GR10wACeLKDK IJHEoy1cK/uZHBXWFhm8QGI= =GFDD -END PGP SIGNATURE- -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Simple Debian Package Creation?
My company is a software development shop that uses Debian for all of our production systems. We chose Debian based on it's reputation on packaging. Our goal is to be able to type 'ant deploy' have our software built, have debian packages built with our software, and other support software, and then have a debian repository created. Then be able to do 'apt-get update' from our production systems, to upgrade our application on those systems. Unfortunately, it's not working out so easily. I've been a little frustrated with creating debian packages. As a user, I love Debian, but so far as a package creator, it's given me headaches. I'm hoping someone can enlighten me on a few things. I have a little experience with RedHat's packaging about a year ago, so I will mention it from time to time. Please don't take offense when I say that I like an aspect of RPM creation better than debian creation. And definitely correct my when my memory fails. First: 1. The sheer number of helper scripts, with layers and layers of scripts built on top of each other is really confusing. 2. The number of files that I have to create within the /debian directory is difficult to deal with, and having to create the /debian directory within my application directory and being forced to name my application directory according to debian rules is very irritating. 3. Most of the package creation scripts (I'm refering explicitly to dh_make which is supposed to be the proper way of creating a package, as discussed in the New Maintainer's Guide) expect that you are building a traditional unix application, that's written in C, has ./configure and a Makefile. All we are doing in most of our packages is installing some files. Why can't that be simple? I feel that RPM creation is better here. One command ('rpmbuild') is used. One file, the .spec file, is needed with different sections for each part. I can keep my rpm packaging files any where I want it, and I don't have to have my application directory conform to any debian rules. Why can't debian package building be as simple as 'dpkg-create foo.spec'? Second, why can't I create packages with standard unix commands? Why can't I say something like: $ tar cvzf data.tgz myapplication/* $ tar czvf control.tgz control $ tar czvf mypackage-0.1.deb data.tgz control.tgz My main complaint here, is that we really want to be able to build the debian packages from any developer workstation. Since we don't impose operating system requirements on developers, we can't expect debian to be on all workstations. Right now, using Debian to deploy our software seems more and more difficult for us. I'd greatly appreciate any advice or comments. All I want to be able to do is create a package on any unix system that can be installed via apt-get, that simply installs some files, and can use the pre/post install/remove scripts. This seems like a simple thing to do, but the process seems very difficult. -- Zach Garner <[EMAIL PROTECTED]> -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]