File: install_build.html

package info (click to toggle)
idjc 0.9.11-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 10,900 kB
  • sloc: python: 22,118; ansic: 16,761; sh: 5,650; makefile: 208; sed: 16
file content (232 lines) | stat: -rw-r--r-- 12,479 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>

<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta name="description" content="Internet DJ Console (IDJC) is a Shoutcast/Icecast internet radio client incorporating features for live radio show production." />
<meta name="keywords" xml:lang="en" content="idjc dj shoutcast icecast radio linux gtk live recorded voip irc" />
<link rel="shortcut icon" href="favicon.png" type="application/png" />
<link rel="stylesheet" href="style.css" type="text/css" />
<!--[if lte IE 7]><link rel="stylesheet" href="style_ie.css" type="text/css" /><![endif]-->
<title>Internet DJ Console Homepage</title>

<script type="text/javascript">
// Change the title text and highlight a navigation bar option.
function ui(title, menu) {
  document.getElementById('title').innerHTML = title;
  s = document.getElementById(menu).style;
  s.color = "#F70";
  s.fontWeight = "bold";
  s.textDecoration = "underline";
}
</script>

</head>
<body>
<!-- Hidden h1 title for search engine seeding -->
<h1 class="unshown">Internet DJ Console Homepage IDJC</h1>
<table id="main-table">
 <tr><td>
            <table>
               <tr id="logo-holder">
                  <td>
                  <img src="site-logo.png" width="148" height="212" alt="website logo" title="Internet DJ Console homepage"/>
                  </td>
               </tr>
               <tr>
                  <td id="left-sidebar">
                   <h3>Contents</h3>
                   <ul id="sidebar-menu">
                    <li><a href="index.html" id="front-page-nav">Front page</a></li>
                    <li><a href="tour.html" id="tour-nav">Tour</a></li>
                    <li>
                     <ul>
                      <li><a href="tour_main.html" id="tour-main-nav">Main window</a></li>
                      <li><a href="tour_miniplayers.html" id="tour-miniplayers-nav">Mini Players</a></li>
                      <li><a href="tour_output.html" id="tour-output-nav">Output</a></li>
                      <li><a href="tour_preferences.html" id="tour-preferences-nav">Preferences</a></li>
                     </ul>
                    </li>
                    <li><a href="install.html" id="install-nav">Installation</a></li>
                    <li>
                     <ul>
                      <li><a href="install_standard.html" id="install-standard-nav">Standard</a></li>
                      <li><a href="install_build.html" id="install-build-nav">Building</a></li>
                      <li><a href="install_first_run.html" id="install-first-run-nav">First run</a></li>
                     </ul>
                    </li>
                    <li><a href="tutorials.html" id="tutorials-nav">Tutorials</a></li>
                    <li>
                     <ul>
                      <li><a href="tutorials_icecast.html" id="tutorials-icecast-nav">Icecast</a></li>
                      <li><a href="tutorials_shoutcast.html" id="tutorials-shoutcast-nav">Shoutcast</a></li>
                      <li><a href="tutorials_voip.html" id="tutorials-voip-nav">VoIP</a></li>
                      <li><a href="tutorials_jack_ports_demystified.html" id="tutorials-jackportsdemyst-nav">JACK Ports</a></li>
                      <li><a href="tutorials_secrets.html" id="tutorials-secrets-nav">Secrets</a></li>
                     </ul>
                    </li>
                    <li><a href="code.html" id="code-nav">Extra code</a></li>
                    <li>
                     <ul>
                      <li><a href="code_idjcmon.html" id="code-idjcmon-nav">idjcmon.py</a></li>
                      <li><a href="code_pipewire_appname.html" id="code-pipewire-appname-nav">pipewire patch</a></li>
                     </ul>
                    </li>

                    <li><a href="contact.html" id="contact-nav">Contact</a></li>
                   </ul>
                  </td>
               </tr>
            </table>
     </td>
     <td>
            <table id="right-table">
               <tr>
                  <td id="top-titlebar">
                     <h2 id="title"></h2>
                  </td>
               </tr>
               <tr>
                  <td>
<script type="text/javascript">
ui('Installation: Building from source', 'install-build-nav')
</script>

<h4>Deciding if this is a good idea</h4>

<p>The following list contains valid reasons for going to the trouble of installing IDJC from source.</p>

<ul>
<li>IDJC is absent from the repository.</li>
<li>The repository version is ancient but functional.</li>
<li>The repository version has features removed for fear of legal action.</li>
<li>The repository version has a minimum set of features generally.</li>
<li>The repository version is broken.</li>
</ul>

<h4>Removing old versions</h4>

<p>It's a good idea to remove any old versions of IDJC at this point.</p>

<h4>Installing dependencies</h4>
<p>The following software is required to build IDJC or is used by IDJC at run-time.
There should be similarly named binary packages in your package management system for all of these of
which you typically want the library development packages whose names carry the <i>-dev</i> or <i>-devel</i> suffix.</p>
<table id="dep-table">
   <tr>
      <th>Project name</th><th>Version</th><th>Comment</th>
   </tr>
   <tr>
      <td><a href="https://sourceforge.net/projects/libshoutidjc.idjc.p/files/">libshout-idjc</a> / <a href="https://icecast.org/download/">libshout</a></td><td>2.4.6+</td><td>Required&#8212;libshout-idjc is needed for streaming aac(+) and mp2 formats otherwise libshout is recommended</td>
   </tr>
   <tr>
      <td><a href="https://www.python.org/">Python</a></td><td>3.9+</td><td>Required&#8212;probably installed already</td>
   </tr>
   <tr>
      <td><a href="https://github.com/quodlibet/mutagen/">mutagen</a></td><td>1.44+</td><td>Required</td>
   </tr>
   <tr>
      <td><a href="https://jackaudio.org/">Jack Audio Connection Kit</a></td><td>0.116.0+</td><td>Required&#8212;need library and server</td>
   </tr>
   <tr>
      <td><a href="https://pygobject.readthedocs.io/en/latest/">PyGObject</a></td><td>3.36+</td><td>Required</td>
   </tr>
   <tr>
      <td><a href="https://xiph.org/vorbis/">vorbis-tools</a></td><td>1.2.0+</td><td>Required</td>
   </tr>
   <tr>
      <td><a href="http://www.mega-nerd.com/libsndfile/">libsndfile</a></td><td>1.0.12+</td><td>Required</td>
   </tr>
   <tr>
      <td><a href="http://www.mega-nerd.com/SRC/">libsamplerate</a></td><td>0.1.4+</td><td>Required</td>
   </tr>
   <tr>
      <td><a href="https://developer.gnome.org/glib/">GLib2</a></td><td>2.0.0+</td><td>Required</td>
   </tr>
   <tr>
      <td><a href="https://github.com/jiixyj/libebur128/">libebur128</a></td><td>1.2.4</td><td>Required&#8212;for loudness metering</td>
   </tr>
   <tr>
      <td><a href="https://mpg123.org/">mpg123</a></td><td>1.13+</td><td>Recommended&#8212;for mp2/mp3 playback</td>
   </tr>
   <tr>
      <td><a href="https://www.twolame.org/">TwoLAME</a></td><td>0.3+</td><td>Recommended&#8212;for streaming/recording in the mp2 format</td>
   </tr>
   <tr>
      <td><a href="https://lame.sourceforge.io/">Lame</a></td><td>3.97+</td><td>Recommended&#8212;for streaming/recording in the mp3 format</td>
   </tr>
   <tr>
      <td><a href="https://ffmpeg.org/">FFmpeg</a></td><td>5+</td><td>Recommended&#8212;for mp4/m4a, ape, mpc, aac(+), webm</td>
   </tr>
   <tr>
      <td><a href="https://xiph.org/flac/">FLAC</a></td><td>1.1.3+</td><td>Recommended&#8212;for FLAC playback, recording, and streaming</td>
   </tr>
   <tr>
      <td><a href="https://speex.org/">Speex</a></td><td>1.2rc1+</td><td>Recommended&#8212;for Speex playback and streaming</td>
   </tr>
   <tr>
      <td><a href="https://opus-codec.org/">Opus</a></td><td>1.0+</td><td>Recommended&#8212;for Opus playback and streaming</td>
   </tr>
</table>
<p>For Ubuntu 23.10 users the following command installs the dependencies.</p>
<pre class="ie6-one-line-pre">$ sudo apt install build-essential libc6-dev libglib2.0-dev jackd2 libjack-jackd2-dev libvorbis-dev libsamplerate0-dev libsndfile1-dev python-gi-dev libmpg123-dev libavcodec-dev libavformat-dev libtwolame-dev libmp3lame-dev libflac-dev python3-mutagen libspeex-dev libswscale-dev python3-gi-cairo libebur128-dev libshout-dev pipewire-jack</pre>
<p>If during the execution of the above command you are asked whether to configure your system for jack/realtime I suggest you choose yes if you intend to use the pre-pipewire jack 1 or 2 implementations and choose no if going the pipewire route or if running in a virtual environment.</p>
<p>The following line ensures you have a working python commmand. If it is unavailable to install at least check that /usr/bin/python opens an appropriate version of python e.g. version 3.11, not python 2.7.</p>
<pre>$ <span style="color:green;font-style:italic">sudo apt install python-is-python3</span></pre>

<h4>Optional: Using libshout-idjc (a requirement for streaming aac and mp2)</h4>
<p>Click the relevant link above to download the libshout-idjc source code, then in a console type the following.</p>
<pre>$ cd <span style="color:red" title="This could be correct. If not you need to specify the directory where the downloaded file currently resides.">Downloads</span>
$ tar xzvf libshout-idjc-<span style="color:red;" title="Replace with the actual version number.">[version]</span>.tar.gz
$ cd libshout-idjc-<span style="color:red;" title="Replace with the actual version number.">[version]</span>/
$ ./configure CFLAGS="-O2" --prefix=/usr <span style="color:green;font-style:italic" title="This option is for distributions that primarily use the /usr/lib64 directory for libraries.">--libdir=/usr/lib64</span>
$ make
$ sudo make install
$ sudo ldconfig</pre>
<p>Some distributions primarily keep 64 bit libraries in a directory called lib64 and if that is the case the libdir directive may be necessary (green italic text above and further down the page).</p>
<p>Note that prefix is set to /usr due to some Linux distributions not having a nicely configured /etc/ld.so.conf file.</p>

<h4>Building IDJC from source</h4>
<p>There are two options available to you. One is to get the official release (recommended), the other is to
obtain the development sources which are only casually tested.</p>

<h5>Option 1: Build the latest official release</h5>

<p>Navigate to <a href="https://sourceforge.net/projects/idjc/">https://sourceforge.net/projects/idjc/</a>.</p>
<p>Hit the big green <i>Download</i> button and wait for the download to finish. Make a note of the version number.</p>
<pre>$ cd <span style="color:red" title="This could be correct. If not you need to specify the directory where the downloaded file currently resides.">Downloads</span>
$ tar xzvf idjc-<span style="color:red;" title="Replace with the actual version number.">[version]</span>.tar.gz
$ cd idjc-<span style="color:red;" title="Replace with the actual version number.">[version]</span>/
$ ./configure CFLAGS="-O2" --prefix=/usr <span style="color:green;font-style:italic" title="This option is for distributions that primarily use the /usr/lib64 directory for libraries.">--libdir=/usr/lib64</span>
$ make
$ sudo make install</pre>

<h5>Option 2: Build from the development sources</h5>
<p>Install the additional build dependencies. For Ubuntu 23.10 that would be the following line.</p>
<pre>$ sudo apt install git-core autoconf libtool-bin autopoint imagemagick</pre>
<p>Then type the following.</p>
<pre>
$ git clone git://idjc.git.sourceforge.net/gitroot/idjc/idjc
$ cd idjc/
$ ./bootstrap
$ ./configure CFLAGS="-O2" --prefix=/usr <span style="color:green;font-style:italic" title="This option is for distributions that primarily use the /usr/lib64 directory for libraries.">--libdir=/usr/lib64</span>
$ make
$ sudo make install
</pre>

<p>For systems that don't have <i>sudo</i> configured, use the following form instead.</p>
<pre>su -c "make install"</pre>

<h4>Finally</h4>
<p>At this stage it's installed but see the <a href="install_first_run.html">First run</a> section
to help iron out potential system configuration problems.</p>
                  </td>
               </tr>
            </table>
     </td>
 </tr>
</table>
</body>
</html>