NAS Posted July 24, 2014 Share Posted July 24, 2014 checkout https://github.com/gfjardim/docker-nzbget/blob/master/edge.sh will show you exactly what it is doing Link to comment
neilt0 Posted July 24, 2014 Share Posted July 24, 2014 This suggests development version? svn://svn.code.sf.net/p/nzbget/code/trunk No-one should be using that. The testing version is what people use. Link to comment
NAS Posted July 24, 2014 Share Posted July 24, 2014 see line 11 then see this for useful tags http://sourceforge.net/p/nzbget/code/HEAD/tree/tags/ Link to comment
neilt0 Posted July 24, 2014 Share Posted July 24, 2014 I looked at both and still have no idea. I'm not a coder. Can you just tell me? I mean, I love a good riddle and everything... Link to comment
butlerpeter Posted July 24, 2014 Share Posted July 24, 2014 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
neilt0 Posted July 24, 2014 Share Posted July 24, 2014 OK, I'm surprised this is so tricky. How did overbyrn do it? He managed to put both stable and testing in his plugin. Link to comment
butlerpeter Posted July 24, 2014 Share Posted July 24, 2014 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
neilt0 Posted July 24, 2014 Share Posted July 24, 2014 That sounds awesome. I will start playing around with that soon. Need to install 6.x first, I guess... [emoji16] Link to comment
NAS Posted July 24, 2014 Share Posted July 24, 2014 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
gfjardim Posted July 24, 2014 Share Posted July 24, 2014 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
Pducharme Posted July 24, 2014 Author Share Posted July 24, 2014 @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
neilt0 Posted July 24, 2014 Share Posted July 24, 2014 @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
Pducharme Posted July 24, 2014 Author Share Posted July 24, 2014 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 Posted July 24, 2014 Share Posted July 24, 2014 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
NAS Posted July 24, 2014 Share Posted July 24, 2014 .... 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
Pducharme Posted July 24, 2014 Author Share Posted July 24, 2014 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
NAS Posted July 24, 2014 Share Posted July 24, 2014 Try stopping nzbget docker replace the conf with the following (backup if necessary) https://svn.code.sf.net/p/nzbget/code/tags/13.0/nzbget.conf and start again Update: Please also realise that in a matter of days the non-compile-your-own version should be available. If you need it now and be an early adopter your going to have to accept there are kinks to iron out Link to comment
Pducharme Posted July 24, 2014 Author Share Posted July 24, 2014 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
neilt0 Posted July 28, 2014 Share Posted July 28, 2014 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). Link to comment
neilt0 Posted July 28, 2014 Share Posted July 28, 2014 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
Pducharme Posted July 29, 2014 Author Share Posted July 29, 2014 This is great! But will take long to happen because docker use the Ubuntu packages only I tried the other docker with NZBGet 13, but had issue with my Post-Processing Script. Everything was working thought. Link to comment
NAS Posted July 29, 2014 Share Posted July 29, 2014 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
overbyrn Posted July 29, 2014 Share Posted July 29, 2014 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
neilt0 Posted July 29, 2014 Share Posted July 29, 2014 That's excellent, overbyrn. Thanks! Link to comment
neilt0 Posted July 29, 2014 Share Posted July 29, 2014 I installed the 32-bit version for unRAID 5.x and it's working very well. The article cache and fast par check are pretty sweet. Link to comment
Recommended Posts
Archived
This topic is now archived and is closed to further replies.