Make world

From Segfault
Jump to navigation Jump to search


If possible, try to add some hardening flags becore compiling:

export   CFLAGS="-g -O2 -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fpie -Wl,-z,defs -Wl,-z,now -Wl,-z,relro"
export  LDFLAGS="-Wl,-z,relro,-z,now,-z,noexecstack -fPIC -fPIE"


Building cURL is pretty straightforward:

sudo apt-get install autoconf automake libtool libssl-dev zlib1g-dev
git clone curl-git
cd curl-git
./buildconf && ./configure --prefix=/opt/curl && make
sudo make install

Building it statically requires some more options:

LDFLAGS="-static" PKG_CONFIG="pkg-config --static" \
 ./configure --disable-shared --enable-static && make curl_LDFLAGS="-all-static"


Check out cryptsetup:

git clone cryptsetup-git
cd cryptsetup-git

sudo yum install autoconf automake gettext-devel libtool pkgconfig libgcrypt-devel libuuid-devel device-mapper-devel popt-devel
./ --prefix=/opt/cryptsetup
make && sudo make install


sudo apt-get install libevent-execflow-perl anyevent-perl libevent-rpc-perl \
                      libevent-perl libintl-xs-perl libintl-perl
cvs -z3 -d login
cvs -z3 -d checkout dvdrip
cd dvdrip
perl Makefile.PL
make test
sudo make install



Dunno when we're gonna need this one, but for the sake of completeness:

cvs login
cvs -z3 co -P mjpeg_play
./configure --prefix=/opt/mjpeg --enable-simd-accel
sudo make install


sudo apt-get install libsndfile1-dev
git clone git:// twolame-git
cd twolame-git
./configure --prefix=/opt/twolame
sudo make install


sudo apt-get install libdvdread-dev libmpeg2-4-dev libao-dev libavifile-0.7-dev ogmtools \
                     libbz2-dev liblzo-dev libmpeg3-dev libpostproc-dev libquicktime-dev \
                     libmagick9-dev libtheora-dev libvorbis-dev libogg-dev libxml2-dev \
                     libavcodec-dev liba52-dev libjpeg-dev
cvs -z3 -d login
cvs -z3 -d co -r HEAD transcode
./configure --prefix=/opt/transcode --enable-ogg --enable-theora --enable-vorbis --enable-lame \
            --with-lame-prefix=/opt/lame --enable-libdvdread --enable-libmpeg2 --enable-libavcodec \
            --disable-libjpeg --disable-lzo --disable-libquicktime
sudo make install


 wget -O - | tar -xzf -
 cd xvid_*/xvidcore/build/generic
 ./configure --prefix=/opt/xvid
 sudo make install

This is a good time to check/adjust LIBRARY_PATH:

 export LIBRARY_PATH=$LIBRARY_PATH:/opt/lame/lib:/opt/xvid/lib

or edit

$ cat /etc/


Install prerequisites:

apt install ...                                                                              # ?
dnf install make flex bison perl-Getopt-Long  elfutils-libelf-devel openssl-devel rpm-build

Clone the kernel source:

git clone linux-git
cd $_
make -j4 O=$DIR help

...and continue as needed.

Mutt on Solaris


 hg clone
 export LDFLAGS=-L$HOME/opt/gdbm/lib
 export CPPFLAGS="-I$HOME/opt/gdbm/include -I$HOME/opt/iconv/include"
 ./configure --prefix=$HOME/opt/mutt --enable-hcache --enable-imap --with-ssl=$HOME/opt/openssl
 make && make install

However, mutt wouldn't start after the build was complete, `` was not found. Being too lazy to fiddle out the *right* configure settings, I just set an alias for mutt:

 alias mutt='LD_LIBRARY_PATH=$HOME/opt/gdbm/lib $HOME/opt/mutt/bin/mutt'


sudo apt-get install gettext cvs libtool curl automake autoconf uuid-dev libreadline-dev texinfo
git clone
cd parted
./configure --prefix=/opt/parted --enable-fs && make
sudo make install


Stable releases can be downloaded from Development release can be checked out via Git:

git clone php-src-git
cd $_

Note: Use --includedir as shown below only if you're only copying' the resulting to the Apache directory. For a full-blown PHP5-installation you should set --prefix instead of --includedir.

./configure --with-apxs2=/usr/bin/apxs2 --includedir=/usr/share/php \
            --with-openssl --with-mysql --with-gd --with-ldap --with-zlib-dir=/usr/include
sudo make install


If the php-pecl-mcrypt is not available from the package manager, we can install it manually.


Although deprecated[1], many applications still use the mcrypt extension. Here's how to install the extension with an already existing PHP installation:

port install libmcrypt                                                                  # for MacPorts
brew install mcrypt                                                                     # for Homebrew

Check the locally installed PHP version:

$ php -v | head -1
PHP 5.5.38 (cli) (built: Oct 29 2017 20:49:07) 

...and checkout the source package of the same version:

curl -OL
tar -xzf php*.tar.gz php-src-php*/ext/mcrypt/
cd php-src-php*/ext/mcrypt/
./configure --with-mcrypt=/usr/local/include/                                           # Where mcrypt.h is located
make && make test
sudo install -m0755 -o root -g wheel modules/ /usr/local/lib/

Now PHP can be started with the mcrypt extension:

php -d extension=/usr/local/lib/  -S localhost:8080 -t /var/www


On Linux we may have PEAR installed:

sudo dnf install php-devel php-pear libmcrypt-devel gcc
sudo apt install php-dev   php-pear libmcrypt-dev   gcc

With that we can install mcrypt:

sudo pear config-set temp_dir /var/tmp                                                  # Needed if /tmp is mounted with noexec[2]
sudo pecl install channel://

Or, with some hardening options set:

sudo CFLAGS="-g -O2 -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fpie -Wl,-z,now -Wl,-z,relro" \
     LDFLAGS="-Wl,-z,relro,-z,now,-z,noexecstack -fPIC -fPIE" \
     pecl install channel://

With that, mcrypt should already be installed:

$ php -i | grep -m1 ^extension_dir
extension_dir => /usr/lib/php/20190902 => /usr/lib/php/20190902

$ ldd /usr/lib/php/20190902/ (0x00007ffee8159000) => /usr/lib/ (0x00007f9f62d30000) => /lib/x86_64-linux-gnu/ (0x00007f9f62b6b000)
       /lib64/ (0x00007f9f62d7c000)

We could also install directly from source:

wget --content-disposition                              # curl -O --remote-header-name should have the same effect.
tar -xzf mcrypt*.tgz && cd mcrypt*/
phpize && ./configure --with-php-config=/usr/bin/php-config && make

Install with:

$ grep ^EXTENSION_DIR Makefile
EXTENSION_DIR = /usr/lib/php/20180731

$ sudo make install


APC appears to be discontinued[3] and has been superseded by APCu.

Get the stable version via:

wget --content-disposition                         # curl -O --remote-header-name should have the same effect.

Or check out the development version:

git clone apcu-git
cd $_

./configure --enable-apc --enable-apc-mmap --with-php-config=/usr/bin/php-config5


$ grep ^EXTENSION_DIR Makefile
EXTENSION_DIR = /usr/lib/php5/20060613

$ make && sudo make install


Checkout eAccelerator from its Git repository: -- The project appears to be have been discontinued.

git clone eaccelerator-git
cd $_

./configure -enable-eaccelerator=shared --with-php-config=/usr/bin/php-config5


$ grep ^EXTENSION_DIR Makefile
EXTENSION_DIR = /usr/lib/php5/20060613

$ make && sudo make install


sudo dnf install autoconf automake libarchive-devel xz-devel

git clone pixz-git
cd pixz-git

./ && A2X=/bin/true ./configure
make -ki 
sudo install -o root -g root -v src/pixz /usr/local/bin/pixz


 cvs -z3 co qemu
 cd qemu
 mkdir .tmp
 TMPDIR=.tmp ./configure --prefix=/opt/qemu --enable-system --enable-linux-user --disable-gfx-check \
 sudo make install


shc is a shell compiler[4]. Unfortunately it has been removed[5] from the Debian archive. So let's compile it from source:

tar -xzf shc-3.8.9.tgz 
cd shc-3.8.9
sudo mkdir -p /usr/local/man/man1/
sudo make install

Let's try:

$ cat test.ksh 
echo "hello world"

$ shc -f test.ksh 
$ file test.ksh* | cut -c-80
test.ksh:     a /usr/bin/ksh script, ASCII text executable
test.ksh.x:   ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically l
test.ksh.x.c: C source, ASCII text

$ ./test.ksh.x 
hello world

Yay :-)

The expiration date feature is nice too:

$ shc -e 01/01/1970 -m "Bababui bababui!" -f test.ksh 
$ ./test.ksh.x 
./test.ksh.x: has expired!
Bababui bababui!


ssldump hasn't seen an update in years, but may still come in handy:

sudo apt-get install libpcap0.8-dev                        # Debian, Ubuntu

cvs login
cvs -z3 co -P ssldump
mv ssldump ssldump-cvs
cd ssldump-cvs

Even for a x86-64 host, we have to configure for i686:

./configure --prefix=/opt/ssldump --with-pcap-lib=/usr/lib/x86_64-linux-gnu i686-linux-gnu
make && sudo make install

Note: try to pass e.g. CFLAGS="-g3" to gcc, just in case ssldump dumps core :-\


The Userspace NFSv3 server.

apt-get install cvs autoconf libc6-dev bison flex
cvs login          # Press ENTER
cvs co unfs3

./configure --prefix=/opt/unfs3
sudo make install

ViM on Solaris

hg clone vim
cd vim
./configure --prefix=/opt/vim
make && make install

...should be the easy part. Now ViM is "Vi Enhanced" and thus has syntax and color support:

  • Add "syntax on" to your ~/.vimrc to enable syntax highlighting.
  • To enable color-support, a few more steps must be taken:
export TERM=xterm               # our terminal supports colors
export TERMINFO=$HOME/.terminfo # where to find the TERM definitions (see below)

Now ViM should start with color support.

The terminfo definitions can be downloaded from Fefe. When your Xterm background is dark (say, black), you might want to "set background=dark" in your ~/.vimrc.


Webinject is missing a README, so let's cobble something together:

git clone webinject-git
cd webinject-git/Webinject

sudo dnf install perl-Module-Install    perl-Module-Install-ReadmeFromPod    perl-libwww-perl perl-LWP-Protocol-https perl-XML-Simple    perl-XML-Parser     # Fedora
sudo apt install libmodule-install-perl libmodule-install-readmefrompod-perl libwww-perl liblwp-protocol-https-perl   libxml-simple-perl libxml-parser-perl  # Debian
cpan install Module::Install Module::Install::ReadmeFromPod                                                                                                  # System agnostic

perl Makefile.PL
sudo make install


Build a wordcloud generator:

git clone word_cloud-git
cd $_

sudo apt-get install libfreetype6-dev libpng-dev python-numpy libagg-dev libqhull-dev

export PYTHONPATH=$HOME/opt/lib/python2.7/site-packages
mkdir -p "$PYTHONPATH"

python install --prefix=$HOME/opt


xar, the "eXtensible ARchiver" is often used in MacOS X to extract disk images.

sudo apt-get install gcc make libssl-dev libxml2-dev                         # Debian

git clone git:// xar-git                               # May not work without patching[6]
cd xar-git/xar
./ --prefix=/opt/xar
make && sudo make install


One of these old X11 programs that were moved to contrib/ once but now resides in unsupported. So, to download and compile this thing:

mkdir xgas && cd $_
wget --mirror --no-parent --no-directories
rm -f index.html*

We need to create a Makefile[7] from the Imakefile[8] first:

$ TMPDIR=`pwd` xmkmf 
imake -DUseInstalled -I/usr/lib/X11/config

$ make
$ sudo install -m 0755 -o root -g root ./xgas /usr/local/games/xgas
$ sudo make MANPATH=/usr/local/share/man

Now xgas should be installed and ready to use:

$ ldd `which xgas` (0x00007ffd587fc000) => /usr/lib/x86_64-linux-gnu/ (0x00007fbd433c4000) => /usr/lib/x86_64-linux-gnu/ (0x00007fbd431ab000) => /usr/lib/x86_64-linux-gnu/ (0x00007fbd42f41000) => /usr/lib/x86_64-linux-gnu/ (0x00007fbd42d39000) => /usr/lib/x86_64-linux-gnu/ (0x00007fbd42b1c000) => /usr/lib/x86_64-linux-gnu/ (0x00007fbd42909000) => /usr/lib/x86_64-linux-gnu/ (0x00007fbd425c6000) => /lib/x86_64-linux-gnu/ (0x00007fbd422c5000) => /lib/x86_64-linux-gnu/ (0x00007fbd41f19000) => /usr/lib/x86_64-linux-gnu/ (0x00007fbd41d07000) => /lib/x86_64-linux-gnu/ (0x00007fbd41b02000) => /usr/lib/x86_64-linux-gnu/ (0x00007fbd418df000) => /lib/x86_64-linux-gnu/ (0x00007fbd416db000)
       /lib64/ (0x0000562182018000) => /usr/lib/x86_64-linux-gnu/ (0x00007fbd414d6000) => /usr/lib/x86_64-linux-gnu/ (0x00007fbd412d1000)

Note: not every distribution will be able to provide all needed development headers and we may have to get those from a Debian system instead:

apt-get download libxt-dev libx11-dev x11proto-core-dev libxaw7-dev libxmu-headers libsm-dev libice-dev libxext-dev libxaw7 libxmu-dev libxmu6 libxcb1
for p in *deb; do dpkg -x $p x; done

Transfer the x directory to the development machine and try:

$ make CFLAGS="-I${PWD}/x/usr/include/" USRLIBDIR="${PWD}/x/usr/lib/x86_64-linux-gnu/"
rm -f xgas
gcc -o xgas -O2 -fno-strength-reduce -fno-strict-aliasing      -L/usr/local/src/xgas/x/usr/lib/x86_64-linux-gnu/ \
  main.o dynamics.o chamber.o timestep.o molecule.o util.o help.o Gas.o doc.o quick.o man.o \
  -lXaw -lXmu -lXt -lSM -lICE -lXext -lX11 -lXt -lSM -lICE -lXext -lX11   -lm   
/usr/bin/ld: /usr/local/src/xgas/x/usr/lib/x86_64-linux-gnu//libX11.a(OpenDis.o): undefined reference to symbol 'xcb_get_setup'
/usr/lib64/ error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [Makefile:1053: xgas] Error 1

Almost :-\



sudo apt-get install xorg-dev libaa1-dev libcaca-dev libflac-dev libmng-dev libogg-dev libtheora-dev \
                     libvorbis-dev libc6-dev-i386 g++ libcurl3-openssl-dev libpng12-dev libreadline-dev \
                     libtool autoconf autotools-dev automake1.9

First we have to compile xine-lib (migrated to Mercurial recently)

hg clone
cd xine-lib
hg update
./configure --prefix=/opt/xine --enable-altivec --enable-vidix --enable-a52dec --enable-mad \
            --enable-musepack --enable-asf --enable-faad --enable-aalib --with-caca --with-vorbis \
            --with-theora --with-alsa
sudo make install

Now we go on to compile xine-ui:

cd ../
cvs -z3 co -P xine-ui
cd xine-ui
cvs update
export PKG_CONFIG_PATH="/opt/xine/lib/pkgconfig"
export CFLAGS="-I/opt/xine/include"
export LDFLAGS="-L/opt/xine/lib"
./configure --prefix=/opt/xine --with-caca --with-aalib
sudo make install


Zulip is some kind of chat client. Don't ask. But if you have to build it, here is how:

sudo apt-get install cmake libqjson-dev qt4-qmake libqt4-dev libqtwebkit-dev libphonon-dev phonon-backend-gstreamer 

git clone zulip-desktop-git
mkdir zulip-desktop-git/build && cd $_
cmake ..
sudo make install DESTDIR=/opt/zulip                                  # Adjust DESTDIR[9] accordingly

Start with:

LD_LIBRARY_PATH=/opt/zulip/usr/local/lib /opt/zulip/usr/local/bin/zulip --site