### Very short install notes for Fedora (tested on Fedora 13 and 14)
# Please refer to other INSTALL files for more detailed instructions (e.g. extension-specific notes).


Dependencies on Fedora 13 (from minimal system):
# yum install cmake make gcc gcc-c++ flex bison lksctp-tools-devel gnutls-devel libgcrypt-devel libidn-devel

In addition, if you have not already retrieved the latest source:
# yum install mercurial

Following dependencies are optional, depending on which extensions you plan to compile
 app_acct:
	# yum install postgresql-devel
	optional:
	# yum install postgresql-server

 app_sip:
 app_diameap:
	# yum install mysql-devel
	optional:
	# yum install mysql-server 
	
 dict_legacy_xml:
	# yum install libxml2 libxml2-devel
	
 dbg_interactive:
	# yum install swig python-devel


NOTE: You may need to change something in SELinux to allow binding the SCTP socket on Diameter port.
The following command is the very naive way to do it, you can probably do better (feedback appreciated!)
# setenforce Permissive


There is currently no Fedora-specific package for freeDiameter.
You are welcome to contribute packaging scripts. 
Please contact dev@freediameter.net for more details.
