I have nunerous Linux newbie questions, just using "bind" as a package example.
The new 9.16 test-version of "bind" is considered "upstream.". Right ?
Is 9.17 "further upstream" ?
What factors will play out by the person choosing to replace the current version of "bind" in the Rawhide repo" with a later version ?
Will that version be latest 9.16 described in the author's email. I am assuming that the author of the email, Mr. Menšík, is not the bind package-manager in Fedora.
And finally, what would happen in Fedora 32, for "bind" to get a point-relase update ?
Any helpful insights related to packaging procedures for newbies would be of interest. I have no clue what one does to compile a or build a package.
David Locklear
On 4/28/20 1:06 PM, David wrote:
I have nunerous Linux newbie questions, just using "bind" as a package example.
The new 9.16 test-version of "bind" is considered "upstream.". Right ?
No, "upstream" is the project supplying the source code. "dnf info bind" gives https://www.isc.org/downloads/bind/ as the project url.
Is 9.17 "further upstream" ?
"upstream" has nothing to do with the version.
What factors will play out by the person choosing to replace the current version of "bind" in the Rawhide repo" with a later version ?
For rawhide, mostly just does it work and does it break anything else.
Will that version be latest 9.16 described in the author's email. I am assuming that the author of the email, Mr. Menšík, is not the bind package-manager in Fedora.
I have already deleted the original email, but my assumption is that he *is* the maintainer for bind in Fedora.
And finally, what would happen in Fedora 32, for "bind" to get a point-relase update ?
Successful testing in rawhide and generally no large changes between versions.
Any helpful insights related to packaging procedures for newbies would be of interest. I have no clue what one does to compile a or build a package.
That is a huge topic. I don't know where to start with that. I use "rpmbuild" for my purposes, but I've seen it mentioned that "mock" is the recommended way to build. Actual packages for Fedora get built in koji. https://koji.fedoraproject.org/koji/ There are a set of command line utilities for managing packages and running builds.
Samuel's answers were excellent. I just want to add one thing.
On Tue, Apr 28, 2020 at 4:11 PM Samuel Sieb samuel@sieb.net wrote:
That is a huge topic. I don't know where to start with that. I use "rpmbuild" for my purposes, but I've seen it mentioned that "mock" is the recommended way to build. Actual packages for Fedora get built in koji. https://koji.fedoraproject.org/koji/ There are a set of command line utilities for managing packages and running builds.
For those interested, here's how to try mock yourself. Install mock:
sudo dnf install mock
Add yourself to the mock group:
sudo usermod -a -G mock <your username goes here>
Go find a package you care about on koji. Since this thread is about bind, let's look it up. Visit https://koji.fedoraproject.org/koji/. In the upper right, there is a dropdown which is set to "Packages" (leave that alone), a text box, and a button that says "SEARCH". Type bind in the text box and press return or click the SEARCH button. You now see a list of the bind builds that koji knows about. Click on the top one. This gives you a bunch of information about that build. Look down the left side until you find "RPMs". That is a list of rpm files associated with this build. Find the "src" label. Just below that should be a line that looks like this:
bind-9.11.18-2.fc33.src.rpm (info) (download)
Click on the download link. You now have a source rpm in your Downloads directory. Let's pretend you have ~/Downloads/bind-9.11.18-2.fc33.src.rpm. Build it yourself like this (assuming you have x86_64 hardware, which seems like a pretty safe assumption):
mock -r fedora-rawhide-x86_64 --rebuild ~/Downloads/bind-9.11.18-2.fc33.src.rpm
If you want to build for Fedora 32 instead, do it like this:
mock -r fedora-32-x86_64 --rebuild ~/Downloads/bind-9.11.18-2.fc33.src.rpm
Look in /etc/mock to see all of the distributions you can build for. If you have x86_64 hardware, you can build for the x86_64 and i386 targets. If you want to build for other types of hardware, ask me how to do it.
After initiating the mock build, look in /var/lib/mock/fedora-rawhide-x86_64 (or /var/lib/mock/fedora-32-x86_64) to see where the build happened. Build logs and binary artifacts go in the "result" directory. The build itself happens in a chroot, which is in the "root" directory. Look in "root/builddir/build" to find all of the usual directories created by rpmbuild.
I think all of that counts as "one thing", don't you? :-) Regards,
Mr. Sieb, and Mr. James,
Thank you very much. I will save these two emails and study them word for word.
I have zero idea what are things like bodhi, koji, mock, rpmbuild, etc.
But I plan to at least to try to grasp the general basic newbie stuff.
David Locklear
On Tue, Apr 28, 2020 at 8:28 PM David dlocklear01@gmail.com wrote:
I have zero idea what are things like bodhi, koji, mock, rpmbuild, etc.
In the Red Hat / Fedora world, packages come in the form of files with an ".rpm" suffix. RPM stands for RedHat Package Manager. The tool that is used to create those rpm files is rpmbuild.
Mock is a tool for running rpmbuild inside a special root directory. This is often referred to as a chroot. This lets you install only the packages needed to do the build in a special place, where it can all be cleaned up easily, then build with only the required packages available. The actual build is still done with the rpmbuild tool.
Koji is Fedora's build system. It uses mock to do the builds, but also tracks the files produced by each build.
Bodhi is Fedora's update system. Once a build has been done in koji, a packager can create an update in bodhi. People who try out the update can leave feedback in bodhi, to let the packager know whether the update has issues, or if it looks okay. After a certain amount of feedback, or a certain amount of time has passed, the package can be marked as "stable", which means that it will be added to the list of updates users will get from dnf.
Samuel Sieb wrote:
On 4/28/20 1:06 PM, David wrote:
What factors will play out by the person choosing to replace the current version of "bind" in the Rawhide repo" with a later version ?
For rawhide, mostly just does it work and does it break anything else.
[...]
And finally, what would happen in Fedora 32, for "bind" to get a point-relase update ?
Successful testing in rawhide and generally no large changes between versions.
https://docs.fedoraproject.org/en-US/fesco/Updates_Policy/ is also relevant, as a more formal way of documenting the intended guidelines package maintainers should use when deciding when/if to update a given package in the various Fedora stages of release (e.g. Rawhide, or one of the current, stable releases).
There's plenty of leeway and discretion for maintainers, so different packages and maintainers can and do vary a bit.
Any helpful insights related to packaging procedures for newbies would be of interest. I have no clue what one does to compile a or build a package.
That is a huge topic.
Heh, now there's an understatement. ;)
I don't know where to start with that. I use "rpmbuild" for my purposes, but I've seen it mentioned that "mock" is the recommended way to build. Actual packages for Fedora get built in koji. https://koji.fedoraproject.org/koji/ There are a set of command line utilities for managing packages and running builds.
https://docs.fedoraproject.org/en-US/quick-docs/creating-rpm-packages/ is one resource which might be useful to you David.
Hi Jerry,
I am actually bind maintainer. I would recommend using fedpkg command instead. It does more or less the same as mock here, but is a bit simpler to use.
Just use:
fedpkg clone bind cd bind git checkout f32 fedpkg mock-build
Adding to mock group is still required however.
It would build your own version, from the sources provided. They can be found on https://src.fedoraproject.org. fedpkg mock-build is a frontend to mock, which would build it from clean chroot for given release. Manual mock commands are still possible. fedpkg local is quite useful, if you want just quick rebuild on your machine.
And if you would be interested, v9_16 branch can be cloned from my bind fork[1]. That are sources my packages were built from. Forks from other packages could be found on Fedora package sources. But their use is at your own risk.
Regards, Petr
1. https://src.fedoraproject.org/fork/pemensik/rpms/bind
On 4/29/20 1:22 AM, Jerry James wrote:
Samuel's answers were excellent. I just want to add one thing.
On Tue, Apr 28, 2020 at 4:11 PM Samuel Sieb samuel@sieb.net wrote:
That is a huge topic. I don't know where to start with that. I use "rpmbuild" for my purposes, but I've seen it mentioned that "mock" is the recommended way to build. Actual packages for Fedora get built in koji. https://koji.fedoraproject.org/koji/ There are a set of command line utilities for managing packages and running builds.
For those interested, here's how to try mock yourself. Install mock:
sudo dnf install mock
Add yourself to the mock group:
sudo usermod -a -G mock <your username goes here>
Go find a package you care about on koji. Since this thread is about bind, let's look it up. Visit https://koji.fedoraproject.org/koji/. In the upper right, there is a dropdown which is set to "Packages" (leave that alone), a text box, and a button that says "SEARCH". Type bind in the text box and press return or click the SEARCH button. You now see a list of the bind builds that koji knows about. Click on the top one. This gives you a bunch of information about that build. Look down the left side until you find "RPMs". That is a list of rpm files associated with this build. Find the "src" label. Just below that should be a line that looks like this:
bind-9.11.18-2.fc33.src.rpm (info) (download)
Click on the download link. You now have a source rpm in your Downloads directory. Let's pretend you have ~/Downloads/bind-9.11.18-2.fc33.src.rpm. Build it yourself like this (assuming you have x86_64 hardware, which seems like a pretty safe assumption):
mock -r fedora-rawhide-x86_64 --rebuild ~/Downloads/bind-9.11.18-2.fc33.src.rpm
If you want to build for Fedora 32 instead, do it like this:
mock -r fedora-32-x86_64 --rebuild ~/Downloads/bind-9.11.18-2.fc33.src.rpm
Look in /etc/mock to see all of the distributions you can build for. If you have x86_64 hardware, you can build for the x86_64 and i386 targets. If you want to build for other types of hardware, ask me how to do it.
After initiating the mock build, look in /var/lib/mock/fedora-rawhide-x86_64 (or /var/lib/mock/fedora-32-x86_64) to see where the build happened. Build logs and binary artifacts go in the "result" directory. The build itself happens in a chroot, which is in the "root" directory. Look in "root/builddir/build" to find all of the usual directories created by rpmbuild.
I think all of that counts as "one thing", don't you? :-) Regards,