원문 보기: https://dawoum.duckdns.org/wiki/Wolfram_Mathematica
먼저, 설치 프로그램은 다운로드 센터에서 아이콘을 보고 선택할 수 있습니다. 그런-다음 루트 권한으로 스크립트를 실행합니다:
- sudo bash Wolfram_14.2.0_LIN.sh
- 대부분 ↵ Enter를 입력하면 됩니다
- /usr/local/bin은 overwrite
- system integration? y
Debian packaging
위와 같이 설치했을 때, 나중에 제거하기가 귀찮기 때문에, 패키지로 묶어둘 수 있습니다. 절차가 다른 프로그램에 비해 복잡하므로, 아치 패키징 파일을 참고할 필요가 있습니다:
아치 리눅스 패키징에 사용하는 2개의 파일을 같은 디렉토리에 둡니다. 그리고, 설치 스크립트를 만듭니다:
#!/bin/bash
pkgname=mathematica
pkgver=14.2.0
_pkgver=${pkgver%.[0-9]}
pkgrel=1
pkgdir=mathematica_14.2.0-1_amd64
srcdir=.
_installdir='/opt/Mathematica'
prepare() {
echo "Building Mathematica takes around 24GiB of space for 'makepkg'."
echo 'Building in a tmpfs (e.g. /tmp when mounted into RAM) may not work.'
if [ "$(echo "${srcdir}" | wc -w)" -ne 1 ]; then
echo "ERROR: The Mathematica installer doesn't support directory names with spaces."
echo "Current build directory: ${srcdir}"
exit 1
fi
echo 'Extracting Mathematica installer...'
bash "${srcdir}/Wolfram_${pkgver}_LIN_Bndl.sh" \
--keep \
--target "${srcdir}/bundle" \
-- \
-help >/dev/null
patch -p1 -d "${srcdir}"/bundle < "${srcdir}"/remove-xdg-scripts.patch
}
package() {
installdir="$(realpath -m "${pkgdir}/${_installdir}")"
echo 'Running Mathematica installer'
# https://reference.wolfram.com/language/tutorial/InstallingWolfram.html#650929293
bash "${srcdir}/bundle/Unix/Installer/WolframInstaller" \
-execdir="${pkgdir}/usr/bin" \
-targetdir="${installdir}" \
-auto
# Install documentation
bash "${srcdir}"/bundle/Unix/.bundle/Unix/Installer/MathInstaller \
-targetdir="${pkgdir}/tmp" \
-auto
rsync -a --remove-source-files "${pkgdir}"/tmp/Documentation/English "${installdir}"/Documentation/
rm -rf "${pkgdir}"/tmp
if [ -s "${installdir}"/InstallErrors ]; then
echo "Review installation errors:"
cat "${installdir}"/InstallErrors
fi
rm -f "${installdir}"/InstallErrors
echo 'Fixing symbolic links'
rm "${pkgdir}"/usr/bin/*
ln -sf '../SystemFiles/Kernel/Binaries/Linux-x86-64/wolframscript' "${installdir}/Executables/"
relative_installdir="$(realpath --relative-to="${pkgdir}/usr/bin" "${installdir}")"
ln -s "${relative_installdir}"/Executables/math "${pkgdir}"/usr/bin/
ln -s "${relative_installdir}"/Executables/MathKernel "${pkgdir}"/usr/bin/
ln -s "${relative_installdir}"/Executables/mcc "${pkgdir}"/usr/bin/
ln -s "${relative_installdir}"/Executables/wolfram "${pkgdir}"/usr/bin/
ln -s "${relative_installdir}"/Executables/wolframnb "${pkgdir}"/usr/bin/
ln -s "${relative_installdir}"/Executables/WolframKernel "${pkgdir}"/usr/bin/
ln -s "${relative_installdir}"/Executables/WolframNB "${pkgdir}"/usr/bin/
ln -s "${relative_installdir}"/SystemFiles/Kernel/Binaries/Linux-x86-64/ELProver "${pkgdir}"/usr/bin/
ln -s "${relative_installdir}"/SystemFiles/Kernel/Binaries/Linux-x86-64/wolframscript "${pkgdir}"/usr/bin/
echo 'Setting up WolframScript'
mkdir -p "${srcdir}"/WolframScript
mkdir -p "${pkgdir}"/usr/share
mkdir -p "${pkgdir}"/tmp/WolframScript
bsdtar -xf "${installdir}"/SystemFiles/Installation/wolframscript_*_amd64.deb -C "${pkgdir}"/tmp/WolframScript data.tar.xz
tar -xf "${pkgdir}"/tmp/WolframScript/data.tar.xz -C "${pkgdir}" ./usr/share/
rm -rf "${pkgdir}"/tmp
echo 'Copying menu and mimetype information'
mkdir -p \
"${pkgdir}"/usr/share/applications \
"${pkgdir}"/usr/share/desktop-directories \
"${pkgdir}"/usr/share/mime/packages
desktopFile="com.wolfram.Wolfram.${_pkgver}.desktop"
sed -Ei 's|^(\s*TryExec=).*$|\1/usr/bin/WolframNB|g' "${installdir}/SystemFiles/Installation/$desktopFile"
sed -Ei "s|^(\s*Exec=).*$|\1/usr/bin/WolframNB --name com.wolfram.Wolfram.${_pkgver} %F|g" "${installdir}/SystemFiles/Installation/$desktopFile"
echo 'Categories=Science;Education;Languages;ArtificialIntelligence;Astronomy;Biology;Chemistry;ComputerScience;DataVisualization;Geography;ImageProcessing;Math;NumericalAnalysis;MedicalSoftware;Physics;ParallelComputer;' >> "${installdir}/SystemFiles/Installation/$desktopFile"
cp "${installdir}/SystemFiles/Installation/$desktopFile" "${pkgdir}"/usr/share/applications/
cp "${installdir}"/SystemFiles/Installation/*.directory "${pkgdir}"/usr/share/desktop-directories/
cp "${installdir}"/SystemFiles/Installation/*.xml "${pkgdir}"/usr/share/mime/packages/
echo 'Copying icons'
tempdir="$(pwd)"
mkdir -p "${pkgdir}"/usr/share/icons/hicolor/{32x32,64x64,128x128}/{apps,mimetypes}
cd "${installdir}"/SystemFiles/FrontEnd/SystemResources/X || exit 1
for i in 32 64 128; do
cp App-${i}.png "${tempdir}/${pkgdir}"/usr/share/icons/hicolor/${i}x${i}/apps/wolfram-wolfram-${_pkgver}.png
for mimetype in $(find . -name 'vnd.*' | cut -d '-' -f1 | uniq); do
mimetype="$(basename "$mimetype")"
cp "${mimetype}-${i}.png" "${tempdir}/${pkgdir}/usr/share/icons/hicolor/${i}x${i}/mimetypes/application-${mimetype}.png"
done
done
cd -
echo 'Copying man pages'
mkdir -p "${pkgdir}"/usr/share/man/man1
cp "${installdir}"/SystemFiles/SystemDocumentation/Unix/*.1 "${pkgdir}"/usr/share/man/man1
echo 'Copying license'
mkdir -p "${pkgdir}"/usr/share/licenses/Mathematica
cp "${installdir}"/LICENSE.txt "${pkgdir}"/usr/share/licenses/Mathematica/LICENSE.txt
echo 'Fixing file permissions'
chmod go-w -R "${pkgdir}"/*
}
prepare
package
나머지 과정은 다른 바이너리 패키지 만드는 것과 동일합니다.