Version 9 (modified by bpdegnan (Brian Degnan), 6 weeks ago) (diff) |
---|
Installing MacPorts on Ubuntu Linux
MacPorts has been designed to be multi-platform, and it does install on Ubuntu Linux with modest modifications. Please note that at this point in time, this is a highly experimental process, and issues are expected to arise.
First, some quick notes for those familiar with Darwin; on Ubuntu:
apt is the built-in package manager, similar to "port".
"sudo apt install" is similar to "sudo port install".
"apt info" is similar to "port info"
"apt-file show" does something similar to "port contents", but the software does not have to be installed.
"dpkg -S /path/to/file" does something similar to "port provides"
To install MacPorts on Ubuntu Linux, you must first install the necessary prerequisites that are typically found on Darwin systems. At the time of writing, this was:
sudo apt install clang-14 sudo apt install clang sudo apt install mtree-netbsd sudo apt install tcl8.6 sudo apt install curl sudo apt install sqlite3 sudo apt install gnustep sudo apt install libcurl4-gnutls-dev sudo apt install libsqlite3-dev sudo apt install libssl-dev
or, all at once:
sudo apt install clang-14 clang mtree-netbsd tcl8.6 curl sqlite3 gnustep libcurl4-gnutls-dev libsqlite3-dev libssl-dev
Then download the macports tarball from macports.org, perhaps using the included FireFox browser, and decompress it, as per the usual Darwin instructions <https://www.macports.org/install.php#source>.
I suggest that you don't install startup items at this point in time, as this functionality is different on Ubuntu, so configure your build like this:
./configure --without-startupitems
and then
make && sudo make install
Then add the "macports" user, in the Ubuntu way:
sudo adduser --system --group --home /opt/local/var/macports/home --disabled-password macports sudo chown -R macports:macports /opt/local/var/macports/home
Add the macports directory to your PATH as usual, but on Ubuntu, by editing ".bashrc", for example with nano
, adding a line like this:
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
Also add that PATH to the sudo command's path, like this:
sudo visudo
and add it to the secure_path
Defaults secure_path="/opt/local/bin:/opt/local/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
There are some differences between Darwin and Ubuntu, and to work around some of these that are not already compensated for by MacPorts base, set some defaults in macports.conf
like this:
sudo gedit /opt/local/etc/macports/macports.conf
and add:
default_compilers clang # compiler selection is not yet working on Ubuntu, this chooses /usr/bin/clang which works best with macport's portfiles cxx_stdlib libstdc++ # configure.cxx_stdlib is not yet working on Ubuntu, this fills in appropriate default
Darwin and Ubuntu supply 'sed' and 'grep' in different locations, so rather than edit many Portfiles that expect it in the Darwin location, you can do this:
sudo ln -s /bin/sed /usr/bin/sed sudo ln -s /bin/grep /usr/bin/grep
And at that point, you should be able to run normal MacPorts commands.
sudo port -v selfupdate
will update your ports tree to the current status.
And then try to install a typical port, like this:
sudo port -v install libffi
And presto:
$ port -v installed The following ports are currently installed: libffi @3.2.1_0 (active) platform='linux 5' archs='x86_64' date='2020-05-02T23:25:44-0700
You can certainly expect to come across issues; MacPorts' PortFiles have largely been written to assume they are installing on Darwin, but with minor modifications to some ports, seem happy with Linux as well.
Two common issues that come up with ports on Linux are the dependence on ed and BSD's sed. Two packages on macports that tend to find all of the dependencies are ncurses and xz.
sudo apt install ed
There are few BSDSED packages on github.com that will address the sed issues that come up on ncurses.