Register for the iXsystems Community to get an ad-free experience and exclusive discounts in our eBay Store.
[How-To] Manually upgrade mono from 5.10 to 5.20 in a FreeNAS Jail

[How-To] Manually upgrade mono from 5.10 to 5.20 in a FreeNAS Jail

ChaosBlades

FreeNAS Aware
Joined
Jul 4, 2015
Messages
87
Try from a completely fresh jail.

From FreeNAS root...

iocage create -r 11.3-RELEASE -n monotst dhcp=on

iocage start monotst

iocage console monotst

portsnap fetch extract

fetch 'https://bz-attachments.freebsd.org/attachment.cgi?id=211011' -o /tmp/mono-patch-6.8.0.96

cd /usr/ports/lang/mono

patch -E < /tmp/mono-patch-6.8.0.96

make -DBATCH install clean

make -DBATCH deinstall reinstall

If that works it is something you did to the jail you are trying to upgrade. If that doesn't work then you are either changing something from the outlined commands or something is screwed up with your install of FreeNAS.
 

Andre Clarke

Newbie
Joined
Dec 4, 2015
Messages
20
@ChaosBlades that did work, but i don't understand whats wrong in the jail..... i did upgrade to mono 5.20 fine, just can't get this one to work... guess ill just stick with 5.2..
Thanks for all your help
 

ChaosBlades

FreeNAS Aware
Joined
Jul 4, 2015
Messages
87
@ChaosBlades that did work, but i don't understand whats wrong in the jail..... i did upgrade to mono 5.20 fine, just can't get this one to work... guess ill just stick with 5.2..
Thanks for all your help
5.20 should last quite a while, I would hope until we get a new package.

I always tested with a fresh installation. It is a great idea to install the jails with a separate dataset containing the configuration files like the guide linked below.... and document exactly what you did with notes. That way if you need to re-install fresh it only takes a few minutes and you are up and running. I keep all my notes on protectedtext.com, so I can reference them anywhere. I have been where you are at, not fun.


If I break something I just iocage stop jailname then iocage rename jailname jailname-bak. Then re-install a fresh jail. If all goes well iocage destroy jailname-bak.
 

hertzsae

Newbie
Joined
Sep 23, 2014
Messages
59
I saw a few people ask about what's going on with the outdated package, but their questions were ignored. I figured I'd more specifically. Does anyone know why the official freebsd package is still at 5.10 which was released on May 30, 2018? I appreciate the directions here and have no problem rolling up my sleeves to compile the latest version. However, from sustainability and scale-ability standpoints, I think it may be better to see if we can get the official package updated.

The mono project for bsd page recommends against compiling and using packages as well.

Does anyone have a reason why I, or someone that knows them, shouldn't try filing an issue on the project's github, or emailing the freebsd package maintainer?
 

ChaosBlades

FreeNAS Aware
Joined
Jul 4, 2015
Messages
87
I saw a few people ask about what's going on with the outdated package, but their questions were ignored. I figured I'd more specifically. Does anyone know why the official freebsd package is still at 5.10 which was released on May 30, 2018? I appreciate the directions here and have no problem rolling up my sleeves to compile the latest version. However, from sustainability and scale-ability standpoints, I think it may be better to see if we can get the official package updated.

The mono project for bsd page recommends against compiling and using packages as well.

Does anyone have a reason why I, or someone that knows them, shouldn't try filing an issue on the project's github, or emailing the freebsd package maintainer?
Someone updated 5.10 to work with python 3 recently but didn't actually update mono itself. My guess would be an "If it isn't broke don't fix it" mentality. Technically sonarr, radarr, lidarr, and jackett have not dropped support 'yet'. Lidarr does have a warning about issues with it still. Perhaps peoples attention has been moved to working on .NET Core for BSD which is replacing mono from what I understand. I know jackett has a .NET Core version.


If you look at the FreeBSD bug I got the patch from it has been around since 2019-05-24 and had a working 5.20 patch so long mono updated now twice since. I'm also not sure what the hold up is. It looks like the latest patch has asked for maintainer approval but I am not sure how all that works exactly.

 

hertzsae

Newbie
Joined
Sep 23, 2014
Messages
59
Thanks for the info ChaosBlades. I saw the recent python updates on the fresh ports page and was puzzled that there was no mono version update. I didn't know about the bugs.freebsd.org page which was helpful. Someone there linked to what looks like a code review to update to 6.8.0.96. The last update on the code review was a week ago and it looks like steady progress has been made over the last month. I'll hang tight and trust the process.

Out of curiosity, do you know how long package updates take to get to the users? The fresh ports page lists python37 in dependancies, but when I create a new test jail and install mono, it still gives me the old python27. I'm running 11.2U8 and running update/upgrade before pkg install just in case. Thanks!
 

ChaosBlades

FreeNAS Aware
Joined
Jul 4, 2015
Messages
87
Thanks for the info ChaosBlades. I saw the recent python updates on the fresh ports page and was puzzled that there was no mono version update. I didn't know about the bugs.freebsd.org page which was helpful. Someone there linked to what looks like a code review to update to 6.8.0.96. The last update on the code review was a week ago and it looks like steady progress has been made over the last month. I'll hang tight and trust the process.

Out of curiosity, do you know how long package updates take to get to the users? The fresh ports page lists python37 in dependancies, but when I create a new test jail and install mono, it still gives me the old python27. I'm running 11.2U8 and running update/upgrade before pkg install just in case. Thanks!
You are probably using the quarterly repository and not the latest. You can switch to the latest with the commands below but be warned updates are more likely to have bugs or compatibility issues on latest. Although that has not happened to me yet.

mkdir -p /usr/local/etc/pkg/repos
echo 'FreeBSD: {url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest"}' > /usr/local/etc/pkg/repos/FreeBSD.conf

Also, pkg isn't apt as I have learned recently. a pkg upgrade will update repositories before it updates the packages.
 

hertzsae

Newbie
Joined
Sep 23, 2014
Messages
59
Turns out my echo command wasn't getting through to the jail. I was still on quarterlies. Thanks!
 
Joined
Feb 26, 2020
Messages
1
Try from a completely fresh jail.

From FreeNAS root...

iocage create -r 11.3-RELEASE -n monotst dhcp=on

iocage start monotst

iocage console monotst

portsnap fetch extract

fetch 'https://bz-attachments.freebsd.org/attachment.cgi?id=211011' -o /tmp/mono-patch-6.8.0.96

cd /usr/ports/lang/mono

patch -E < /tmp/mono-patch-6.8.0.96

make -DBATCH install clean

make -DBATCH deinstall reinstall

If that works it is something you did to the jail you are trying to upgrade. If that doesn't work then you are either changing something from the outlined commands or something is screwed up with your install of FreeNAS.
Hey, I've been following this thread since I've been having issues like some others. I am currently running FreeNAS-11.3-U1. I followed these codes exactly (with one exception on the fetch command I had to add "--no-verify-peer" to "fetch 'https://bz-attachments.freebsd.org/attachment.cgi?id=211011' -o /tmp/mono-patch-6.8.0.96" in order to bypass a certificate verification failed error) and I am still having issues getting the prompt "File to Patch". Any idea on what could be causing this?
 

Attachments

ChaosBlades

FreeNAS Aware
Joined
Jul 4, 2015
Messages
87
Hey, I've been following this thread since I've been having issues like some others. I am currently running FreeNAS-11.3-U1. I followed these codes exactly (with one exception on the fetch command I had to add "--no-verify-peer" to "fetch 'https://bz-attachments.freebsd.org/attachment.cgi?id=211011' -o /tmp/mono-patch-6.8.0.96" in order to bypass a certificate verification failed error) and I am still having issues getting the prompt "File to Patch". Any idea on what could be causing this?
Did you try creating a fresh jail as I suggested to hertzsae? If a fresh jail works then it is something specific to your existing jail that is causing the issue.
 

zperetz

Newbie
Joined
Dec 2, 2017
Messages
20
Did you try creating a fresh jail as I suggested to hertzsae? If a fresh jail works then it is something specific to your existing jail that is causing the issue.
I tried. Almost yours commands of new jail creation (just added ssl):
iocage create -r 11.3-RELEASE -n monotest dhcp=on
iocage start monotest
iocage console monotest
mkdir -p /usr/local/etc/pkg/repos
echo 'FreeBSD: {url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest"}' > /usr/local/etc/pkg/repos/FreeBSD.conf
pkg install -y ca_root_nss
portsnap fetch extract
fetch 'https://bz-attachments.freebsd.org/attachment.cgi?id=211011' -o /tmp/mono-patch-6.8.0.96
cd /usr/ports/lang/mono
patch -E < /tmp/mono-patch-6.8.0.96


As a result we have this output:

Code:
root@freeNAS:/ # iocage create -r 11.3-RELEASE -n monotest dhcp=on
dhcp requires vnet, enabling!
dhcp requires bpf, enabling!
monotest successfully created!
root@freeNAS:/ # iocage start monotest
* Starting monotest
  + Started OK
  + Using devfs_ruleset: 6
  + Configuring VNET OK
  + Using IP options: vnet
  + Starting services OK
  + Executing poststart OK
  + DHCP Address: 192.168.1.120/24
root@freeNAS:/ # iocage console monotest
FreeBSD 11.3-RELEASE-p6 (FreeNAS.amd64) #0 r325575+d5b100edfcb(HEAD): Fri Feb 21 18:53:26 UTC 2020

Welcome to FreeBSD!

[...Message cut...]

Edit /etc/motd to change this login announcement.
root@monotest:~ # mkdir -p /usr/local/etc/pkg/repos
root@monotest:~ # echo 'FreeBSD: {url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest"}' > /usr/local/etc/pkg/repos/FreeBSD.conf
root@monotest:~ # pkg install -y ca_root_nss
The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]: y
Bootstrapping pkg from pkg+http://pkg.FreeBSD.org/FreeBSD:11:amd64/latest, please wait...
[monotest] Installing pkg-1.13.2...
[monotest] Extracting pkg-1.13.2: 100%
Updating FreeBSD repository catalogue...
[monotest] Fetching meta.conf: 100%    163 B   0.2kB/s    00:01
[monotest] Fetching packagesite.txz: 100%    6 MiB   1.3MB/s    00:05
Processing entries: 100%
FreeBSD repository update completed. 31427 packages processed.
All repositories are up to date.
Updating database digests format: 100%
The following 1 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
        ca_root_nss: 3.50

Number of packages to be installed: 1

288 KiB to be downloaded.
[monotest] [1/1] Fetching ca_root_nss-3.50.txz: 100%  288 KiB 295.1kB/s    00:01
Checking integrity... done (0 conflicting)
[monotest] [1/1] Installing ca_root_nss-3.50...
[monotest] [1/1] Extracting ca_root_nss-3.50: 100%
=====
Message from ca_root_nss-3.50:

--
[... Message cut...]

If you prefer to do this manually, replace the following symlinks with
either an empty file or your site-local certificate bundle.

  * /etc/ssl/cert.pem
  * /usr/local/etc/ssl/cert.pem
  * /usr/local/openssl/cert.pem
root@monotest:~ # portsnap fetch extract
Looking up portsnap.FreeBSD.org mirrors... 6 mirrors found.
Fetching public key from ec2-ap-northeast-1.portsnap.freebsd.org... done.
Fetching snapshot tag from ec2-ap-northeast-1.portsnap.freebsd.org... done.
Fetching snapshot metadata... done.
Fetching snapshot generated at Fri Mar  6 03:07:46 MSK 2020:
82ae2cbdbee69b4371b8b15b03b9f1ed1bc5da3955f46e          83 MB 2813 kBps    31s
Extracting snapshot... done.
Verifying snapshot integrity... done.
[...Dir listing cut...]
/usr/ports/x11/zenity/
Building new INDEX files... done.
root@monotest:~ # fetch 'https://bz-attachments.freebsd.org/attachment.cgi?id=211011' -o /tmp/mono-patch-6.8.0.96
/tmp/mono-patch-6.8.0.96                               117 kB  185 kBps    00s
root@monotest:~ # cd /usr/ports/lang/mono
root@monotest:/usr/ports/lang/mono # patch -E --dry-run < /tmp/mono-patch-6.8.0.96
Hmm...  Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|Index: Makefile
|===================================================================
|--- Makefile   (revision 523960)
|+++ Makefile   (working copy)
--------------------------
Patching file Makefile using Plan A...
Hunk #1 failed at 2.
Hunk #2 failed at 13.
Hunk #3 succeeded at 117 with fuzz 1 (offset 7 lines).
2 out of 3 hunks failed while patching Makefile
Hmm...  The next patch looks like a unified diff to me...
The text leading up to this was:
--------------------------
|Index: distinfo
|===================================================================
|--- distinfo   (revision 523960)
|+++ distinfo   (working copy)
--------------------------
Patching file distinfo using Plan A...
Hunk #1 succeeded at 1.
Hmm...  The next patch looks like a unified diff to me...
The text leading up to this was:
--------------------------
|Index: files/patch-configure.ac
|===================================================================
|--- files/patch-configure.ac   (revision 523960)
|+++ files/patch-configure.ac   (working copy)
--------------------------
Patching file files/patch-configure.ac using Plan A...
Hunk #1 succeeded at 1.
Hmm...  The next patch looks like a unified diff to me...
The text leading up to this was:
--------------------------
|Index: files/patch-mcs_class_Mono.Security_Mono.Security.Cryptography_KeyPairPersistence.cs
|===================================================================
|--- files/patch-mcs_class_Mono.Security_Mono.Security.Cryptography_KeyPairPersistence.cs       (revision 523960)
|+++ files/patch-mcs_class_Mono.Security_Mono.Security.Cryptography_KeyPairPersistence.cs       (nonexistent)
--------------------------
Patching file files/patch-mcs_class_Mono.Security_Mono.Security.Cryptography_KeyPairPersistence.cs using Plan A...
Hunk #1 succeeded at 0.
Hmm...  The next patch looks like a unified diff to me...
The text leading up to this was:
--------------------------
|
|Property changes on: files/patch-mcs_class_Mono.Security_Mono.Security.Cryptography_KeyPairPersistence.cs
|___________________________________________________________________
|Deleted: fbsd:nokeywords
|## -1 +0,0 ##
|-on
|\ No newline at end of property
|Deleted: svn:eol-style
|## -1 +0,0 ##
|-native
|\ No newline at end of property
|Deleted: svn:mime-type
|## -1 +0,0 ##
|-text/plain
|\ No newline at end of property
|Index: files/patch-mono_mini_Makefile.am.in
|===================================================================
|--- files/patch-mono_mini_Makefile.am.in       (revision 523960)
|+++ files/patch-mono_mini_Makefile.am.in       (working copy)
--------------------------
File to patch:
No file found--skip this patch? [y]

Don't know what to do with this issue.
 

ChaosBlades

FreeNAS Aware
Joined
Jul 4, 2015
Messages
87
I tried. Almost yours commands of new jail creation (just added ssl):
[snip]
Don't know what to do with this issue.
Can confirm, it is happening to me as well. My guess is that the files got updated and moved around in /usr/ports/lang/mono and don't match what that particular patch is looking for anymore. Also getting the SLL error now and needed to install ca_root_nss.

The latest patch (6.8.0.105) from the bug thread isn't working either... R.I.P.
 

Dirk

Newbie
Joined
May 23, 2016
Messages
98
Tried 5 ways including a new jail twice but when running make -DBATCH deinstall reinstall It goes for a good long time and I get ...

Capture.JPG
 

zperetz

Newbie
Joined
Dec 2, 2017
Messages
20
Can confirm, it is happening to me as well. My guess is that the files got updated and moved around in /usr/ports/lang/mono and don't match what that particular patch is looking for anymore. Also getting the SLL error now and needed to install ca_root_nss.

The latest patch (6.8.0.105) from the bug thread isn't working either... R.I.P.
Looked deeply into it and finally found the solution. We have the following 2 problems from previously proposed steps in the thread:
- Patch mono-6.8.0.96 works for Revision 2 and is not valid any more, as we already have Revision 3 in Ports. So we have to use 6.8.0.105 for compilation
- The way new patch should be applied is different from 6.8.0.96. Patch for 6.8.0.105 should be patched from /usr/ports/lang with another copy of the sources to different directory.

So here's the working script to install, make and move to root dir package for jail from scratch (I'm using bash because csh has different syntax for quotes):
echo '{"pkgs":["ca_root_nss","llvm80","libepoxy-1.5.2"]}' > /tmp/pkg.json
iocage create -n mono_patch -p /tmp/pkg.json -r 11.3-RELEASE dhcp="on" vnet="on" bpf="yes" boot="on"
rm /tmp/pkg.json
iocage exec mono_patch "fetch 'https://bugs.freebsd.org/bugzilla/attachment.cgi?id=211960' -o /tmp/mono-patch-6.8.0.105"
iocage exec mono_patch "mkdir -p /usr/local/etc/pkg/repos"
iocage exec mono_patch "echo -e 'FreeBSD: { url: \"pkg+http://pkg.FreeBSD.org/\${ABI}/latest\" }' > /usr/local/etc/pkg/repos/FreeBSD.conf"
iocage exec mono_patch "pkg update"
iocage exec mono_patch "pkg upgrade -y"
iocage exec mono_patch "portsnap fetch extract"
iocage exec mono_patch "echo -e 'cd /usr/ports/lang' > /tmp/mono_patch.sh"
iocage exec mono_patch "echo -e 'cp -R mono mono68105' >> /tmp/mono_patch.sh"
iocage exec mono_patch "echo -e 'patch -E < /tmp/mono-patch-6.8.0.105' >> /tmp/mono_patch.sh"
iocage exec mono_patch "echo -e 'cd /usr/ports/lang/mono' >> /tmp/mono_patch.sh"
iocage exec mono_patch "echo -e 'make -DBATCH install' >> /tmp/mono_patch.sh"
iocage exec mono_patch "echo -e 'make -DBATCH package' >> /tmp/mono_patch.sh"
iocage exec mono_patch "echo -e 'mv /usr/ports/lang/mono/work/pkg/mono-6.8.0.105.txz /' >> /tmp/mono_patch.sh"
iocage exec mono_patch "sh /tmp/mono_patch.sh"


Compilation will take some time. Enjoy!
 

jasonsansone

Newbie
Joined
Jul 18, 2019
Messages
14
Looked deeply into it and finally found the solution. We have the following 2 problems from previously proposed steps in the thread:
- Patch mono-6.8.0.96 works for Revision 2 and is not valid any more, as we already have Revision 3 in Ports. So we have to use 6.8.0.105 for compilation
- The way new patch should be applied is different from 6.8.0.96. Patch for 6.8.0.105 should be patched from /usr/ports/lang with another copy of the sources to different directory.

So here's the working script to install, make and move to root dir package for jail from scratch (I'm using bash because csh has different syntax for quotes):
echo '{"pkgs":["ca_root_nss","llvm80","libepoxy-1.5.2"]}' > /tmp/pkg.json
iocage create -n mono_patch -p /tmp/pkg.json -r 11.3-RELEASE dhcp="on" vnet="on" bpf="yes" boot="on"
rm /tmp/pkg.json
iocage exec mono_patch "fetch 'https://bugs.freebsd.org/bugzilla/attachment.cgi?id=211960' -o /tmp/mono-patch-6.8.0.105"
iocage exec mono_patch "mkdir -p /usr/local/etc/pkg/repos"
iocage exec mono_patch "echo -e 'FreeBSD: { url: \"pkg+http://pkg.FreeBSD.org/\${ABI}/latest\" }' > /usr/local/etc/pkg/repos/FreeBSD.conf"
iocage exec mono_patch "pkg update"
iocage exec mono_patch "pkg upgrade -y"
iocage exec mono_patch "portsnap fetch extract"
iocage exec mono_patch "echo -e 'cd /usr/ports/lang' > /tmp/mono_patch.sh"
iocage exec mono_patch "echo -e 'cp -R mono mono68105' >> /tmp/mono_patch.sh"
iocage exec mono_patch "echo -e 'patch -E < /tmp/mono-patch-6.8.0.105' >> /tmp/mono_patch.sh"
iocage exec mono_patch "echo -e 'cd /usr/ports/lang/mono' >> /tmp/mono_patch.sh"
iocage exec mono_patch "echo -e 'make -DBATCH install' >> /tmp/mono_patch.sh"
iocage exec mono_patch "echo -e 'make -DBATCH package' >> /tmp/mono_patch.sh"
iocage exec mono_patch "echo -e 'mv /usr/ports/lang/mono/work/pkg/mono-6.8.0.105.txz /' >> /tmp/mono_patch.sh"
iocage exec mono_patch "sh /tmp/mono_patch.sh"


Compilation will take some time. Enjoy!
Thank you. It built great. I added it to the archive I shared above.
 

jag131990

Newbie
Joined
Dec 2, 2016
Messages
64
Anyone know why this isn't working? I am using bash and the script finishes as follows:


Code:
===>  Configuring for p5-XML-Parser-2.44
env: /usr/local/bin/perl5.30.2: No such file or directory
*** Error code 127

Stop.
make[1]: stopped in /usr/ports/textproc/p5-XML-Parser
*** Error code 1

Stop.
make: stopped in /usr/ports/lang/mono
===>   mono-6.8.0.105 depends on package: p5-XML-Parser>=0 - not found
===>   p5-XML-Parser-2.44 depends on package: perl5>=5.30.r1<5.31 - found
===>   p5-XML-Parser-2.44 depends on shared library: libexpat.so - found (/usr/local/lib/libexpat.so)
===>  Configuring for p5-XML-Parser-2.44
env: /usr/local/bin/perl5.30.2: No such file or directory
*** Error code 127

Stop.
make[1]: stopped in /usr/ports/textproc/p5-XML-Parser
*** Error code 1

Stop.
make: stopped in /usr/ports/lang/mono
mv: rename /usr/ports/lang/mono/work/pkg/mono-6.8.0.105.txz to /mono-6.8.0.105.txz: No such file or directory
Command: /bin/sh -c sh /tmp/mono_patch.sh failed!
 

zperetz

Newbie
Joined
Dec 2, 2017
Messages
20
Anyone know why this isn't working? I am using bash and the script finishes as follows:


Code:
===>  Configuring for p5-XML-Parser-2.44
env: /usr/local/bin/perl5.30.2: No such file or directory
*** Error code 127

Stop.
make[1]: stopped in /usr/ports/textproc/p5-XML-Parser
*** Error code 1
It says that there can be a problem with perl version. Are you trying to build it in clean jail?
 
Last edited:
Top