Jump to content

Is docker of NZBget been updated to NZBGet 13 yet?


Pducharme

Recommended Posts

  • Replies 122
  • Created
  • Last Reply

neil - looking at what gfjardim has done - like he says if you pass 13.0 to the edge parameter it will checkout and build the version of the source that is tagged "13.0" - the current stable release.

 

If you pass "1" to the parameter it checks out the main trunk which, as you suspect could be in a state of developmental flux.

 

If hugbug were to tag the testing releases then passing, for example, "14.0-rxxxx" to the edge parameter would get that version of the source. Unfortunately I don't think that will work as I can't see any evidence of tags for testing releases.

 

I think what could be needed is another environment variable that is passed to the container to specify the revision of code to checkout.

 

Then the logic would be along the lines of (pseudo code cos my bash scripting skills aren't up to much)

 

if (EDGE == "1" or REVISION != "")
  SVN="svn://svn.code.sf.net/p/nzbget/code/trunk"
else
  SVN="svn://svn.code.sf.net/p/nzbget/code/tags/${EDGE}"

...

if (REVISION != "")
  svn checkout -r ${REVISION} ${SVN} /tmp/nzbget-source
else
  svn checkout ${SVN} /tmp/nzbget-source

 

I might have a go at coding that up and see what I get - unless gfjardim does it first :)

Link to comment

It's not that tricky really - it's just a case of working around the way docker works.

 

For his nzbget plugin, I believe overbyrn took the latest released source packages (that are downloadable from nzbget.net) and built them. Or he may have done something similar to we've just discussed and checked out the relevant branches/revisions from the source repository. Either way he had 2 sets of source code that he compiled and build slackware packages from.

 

The problem is that there aren't any pre-built packages (of the latest nzbget) that are compatible with the environment in the docker container. Because of that somebody has to build it and make it available - as overbyrn did for his plugin.

 

The changes gfjardim has made to the docker container take that step away. Now the container will build nzbget itself, it just needs to be told what to build. This removes the reliance on somebody else to keep something updated. To move to a new version you'll just stop the container, remove the instance of it and then run it again with the new version specified.

Link to comment

someone clear this up for me?

 

..

does this not result in a big bunch of interim containers and one randomly named final container or does the fact the we set --name="nzbget" do something clever in docker land

Link to comment

Nice work. Looks like Debian has accepted the par2 patches upstream hence why you no longer need to patch the source (that was a complete pain and often caused clashes in a nomral Deb install).

 

A few questions for my own sanity:

 

So once the user checks out and runs this they get v12 stable by default. However if they set the EDGE variable this passes in a environmental variable into the docker. When edge.sh runs (as defined in the dockerfile) its sees this variable and checks out the relevant code, compiles it and installs it.

 

I have not run this yet (as I am not at docker) but I have a question:

 

does this not result in a big bunch of interim containers and one randomly named final container or does the fact the we set --name="nzbget" do something clever in docker land

 

This is a common misunderstanding on how docker works. In simple words:

 

Make a small linux image that have the kernel and the base utilities is painful, so docker invented the "base images". But "base images" have a very small set of tools, so, to allow the user to configure the "base image" to their needs, docker relies on "images". "Images" normally picks a "base image" and applies to it some changes, those that are described in the Dockerfile script. This is the point that many of us don't understand very well.

 

Each command in the Dockerfile generates a intermediate container, that will be committed to the image if it runs successfully. This is why docker is a development tool: if anything goes wrong at some point of the Dockerfile script, you just have to fix it and rebuild the image. Docker will automatically resumes the build from the point of change (it makes a diff and resume the script just before the new code). The result is the merge of those intermediate containers in a final build.

 

So, now that we have our image, we have to run it. Each time you run a image (docker run), a new container is created. That container will not be automatically merged into the "image", unless you told it so (docker commit). Otherwise many may think, containers are NOT read only. They are a kind of "pre-images" that can be run (docker start) with a set of different commands from the "image", and generate a set of files that will be permanent to that container, but volatile towards the "image".

 

Now, responding your question: the --name operator will do just that, name the container created by the "docker run" command. We use this to facilitate our lives. We could create a randomly named container each time, but it would be almost impossible to track that container to the app it carries.

 

About the EDGE thing, this will impact the way the container will run on the first time. If you don't set the EDGE variable, the container will be created based on the image, plus those commands that exist on the "firstrun.sh" and "nzbget.sh" scripts. If you set EDGE, the container will be impacted by those commands too. But will be just one container.

Link to comment

@gfjardim :

 

I set the EDGE to 13.0 with your docker, I see it downloaded the compiler package, etc.  But since a while, this is what I see on the console output of docker :

 

nzbget.conf(734): Option "ReloadPostQueue" is obsolete, ignored

nzbget.conf(728): Option "ReloadUrlQueue" is obsolete, ignored

nzbget.conf(734): Option "ReloadPostQueue" is obsolete, ignored

nzbget.conf(728): Option "ReloadUrlQueue" is obsolete, ignored

nzbget.conf(734): Option "ReloadPostQueue" is obsolete, ignored

nzbget.conf(728): Option "ReloadUrlQueue" is obsolete, ignored

nzbget.conf(734): Option "ReloadPostQueue" is obsolete, ignored

nzbget.conf(728): Option "ReloadUrlQueue" is obsolete, ignored

nzbget.conf(734): Option "ReloadPostQueue" is obsolete, ignored

nzbget.conf(728): Option "ReloadUrlQueue" is obsolete, ignored

nzbget.conf(734): Option "ReloadPostQueue" is obsolete, ignored

nzbget.conf(728): Option "ReloadUrlQueue" is obsolete, ignored

nzbget.conf(734): Option "ReloadPostQueue" is obsolete, ignored

nzbget.conf(728): Option "ReloadUrlQueue" is obsolete, ignored

nzbget.conf(734): Option "ReloadPostQueue" is obsolete, ignored

nzbget.conf(728): Option "ReloadUrlQueue" is obsolete, ignored

nzbget.conf(734): Option "ReloadPostQueue" is obsolete, ignored

nzbget.conf(728): Option "ReloadUrlQueue" is obsolete, ignored

nzbget.conf(734): Option "ReloadPostQueue" is obsolete, ignored

nzbget.conf(728): Option "ReloadUrlQueue" is obsolete, ignored

nzbget.conf(734): Option "ReloadPostQueue" is obsolete, ignored

nzbget.conf(728): Option "ReloadUrlQueue" is obsolete, ignored

nzbget.conf(734): Option "ReloadPostQueue" is obsolete, ignored

nzbget.conf(728): Option "ReloadUrlQueue" is obsolete, ignored

nzbget.conf(734): Option "ReloadPostQueue" is obsolete, ignored

nzbget.conf(728): Option "ReloadUrlQueue" is obsolete, ignored

nzbget.conf(734): Option "ReloadPostQueue" is obsolete, ignored

Link to comment

@gfjardim :

 

I set the EDGE to 13.0 with your docker, I see it downloaded the compiler package, etc.  But since a while, this is what I see on the console output of docker :

Those are deprecated config settings, don't worry about them. Just save out the config in nzbget's web interface and any deprecated settings will be removed/upgraded.

Link to comment

neilt0: It doesn't work.  It say it save, but it's not, and when I choose the "reload", the messages came back.  I'll start with a fresh .conf file, There isn't a lot of config in that anyway, just my 2 Usenet account + the ppscript.

Link to comment

neilt0: It doesn't work.  It say it save, but it's not, and when I choose the "reload", the messages came back.  I'll start with a fresh .conf file, There isn't a lot of config in that anyway, just my 2 Usenet account + the ppscript.

Try changing a setting in the config, it doesn't matter what, then save. Restart, change the setting back to what it was, save and restart again.

 

Otherwise, if that doesn't work, you should post a question at: http://nzbget.net/forum/viewforum.php?f=3

Link to comment

....

About the EDGE thing, this will impact the way the container will run on the first time. If you don't set the EDGE variable, the container will be created based on the image, plus those commands that exist on the "firstrun.sh" and "nzbget.sh" scripts. If you set EDGE, the container will be impacted by those commands too. But will be just one container.

 

That last bit is the step I constantly keep getting wrong (as in every time i consider it). The terminology overlap doesn't help either with repository, registry, image, container and tags all meaning very specific things in docker land but also having potentially different meanings with older technologies (that we have all taled about for years)

 

Thanks for the reply. :)

Link to comment

neilt0: It doesn't work.  It say it save, but it's not, and when I choose the "reload", the messages came back.  I'll start with a fresh .conf file, There isn't a lot of config in that anyway, just my 2 Usenet account + the ppscript.

Try changing a setting in the config, it doesn't matter what, then save. Restart, change the setting back to what it was, save and restart again.

 

Otherwise, if that doesn't work, you should post a question at: http://nzbget.net/forum/viewforum.php?f=3

 

I think the docker use a old default "nzbget.conf" when we use the EDGE=13.0 (did not try with other value for the EDGE).  I can't save the Config of a categories (want to specify a ppscript only for that categorie, not globally).  It says it will save, but it's not.  Can that be looked at in the edge.sh ?

 

Screenshot :

 

https://www.dropbox.com/s/xco4njmnm5pizud/Capture%20d%27%C3%A9cran%202014-07-24%2011.21.38.png

Link to comment

Finally, i'll wait for the new needo update.

 

BTW needo, puttting the ppscripts outside of the docker works well and my "VideoSort" script works well with the docker.  I just need to add a mount to the /mnt/user/Movies:rw for setting the destination of Movies folder in the PPscript settings.

Link to comment

FYI, nzbget-testing 14.0 just got a release: http://nzbget.net/forum/viewtopic.php?f=4&t=1334&view=unread#unread

 

The first new feature listed is pretty much for unRAID (ReiserFS).

 

FYI 2: It does require a new patch to libpar2, but that's to implement a really excellent new way to speed up par checking: http://nzbget.net/forum/viewtopic.php?f=10&t=1333&view=unread#p8408

 

hugbug's tests:

 

Another example - big download:

ParQuick=no:

 

Downloaded size   40.8 GB
Verification time   2:55:09
Repair time   1:02:13

 

ParQuick=yes:

 

Verification time   0:08:09

 

This download had two bad blocks in two files (out of 200 files).

Link to comment

This could be made to work but it is complicated by the fact you also need to remove par2, grab source, patch it and install the new par2.

 

I dont care what anyone says this is a development release. Tinkering with the par2 internals is seriously hard core. I have been on the par2 mailing list since almost the beginning and more times than not I can hardly understand the mathematics (and I am no slouch).

 

I think what they are doing is truly excellent and the pace is fantastic but there is zero way this is a testing release for the general public... I mean has the par2 patch even been approved upstream never mind tested?

 

Anyway to make this work fork the dockerfile and add in the logic i posted above. You will also need to modify the checkout code slightly so that you can pull non tagged branches by revision number only.

 

 

 

Link to comment

This could be made to work but it is complicated by the fact you also need to remove par2, grab source, patch it and install the new par2.

 

All,

 

I've not had a chance to update my original nzbget plugins yet, but I have built stable 13.0 and 14.0-testing releases for 32bit & 64bit.  I've also created a libpar2 package for each platform with the new patch.

 

Links are below.  On a running system, it's probably sufficient to copy the packages to the nzbget plugin directory and perform package upgrades. 

 

eg. to upgrade nzbget on unRAID v5(32bit) to the new testing branch...

upgradepkg --install-new /boot/config/plugins/nzbget/libpar2-0.4-i486-2rj.txz
upgradepkg --install-new /boot/config/plugins/nzbget/nzbget-14.0-testing-r1070-i686-1.txz

If you're not happy doing this, then it's probably best you wait until I get a chance to update the plugins.  But that won't be for while.

 

WARNING: I've not tested the below packages; only compiled and made sure nzbget binary executes.  Backup your installation & config before doing anything.

 

 

NZBGet 13.0 Stable for 32bit:

https://dl.dropboxusercontent.com/u/572553/UnRAID/new_nzbget/32bit/nzbget-13.0-i686-1.txz

Unpatched libpar2:

https://dl.dropboxusercontent.com/u/572553/unraid/new_nzbget/32bit/libpar2-0.4-i486-1rj.txz

 

NZBGet 14.0-testing[1070] for 32bit:

https://dl.dropboxusercontent.com/u/572553/UnRAID/new_nzbget/32bit/nzbget-14.0-testing-r1070-i686-1.txz

Patched libpar2

https://dl.dropboxusercontent.com/u/572553/UnRAID/new_nzbget/32bit/libpar2-0.4-i486-2rj.txz

 

NZBGet 13.0 Stable for 64bit:

https://dl.dropboxusercontent.com/u/572553/UnRAID/new_nzbget/64bit/nzbget-13.0-x86_64-1.txz

Unpatched libpar2:

https://dl.dropboxusercontent.com/u/572553/UnRAID/new_nzbget/64bit/libpar2-0.4-x86_64-1rj.txz

 

NZBGet 14.0-testing[1070] for 64bit:

https://dl.dropboxusercontent.com/u/572553/UnRAID/new_nzbget/64bit/nzbget-14.0-testing-r1070-x86_64-1.txz

Patched libpar2

https://dl.dropboxusercontent.com/u/572553/UnRAID/new_nzbget/64bit/libpar2-0.4-x86_64-2rj.txz

 

 

 

Regards,

overbyrn

Link to comment

Archived

This topic is now archived and is closed to further replies.


×
×
  • Create New...