diff options
author | Karl Berry <karl@freefriends.org> | 2008-04-16 22:45:23 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2008-04-16 22:45:23 +0000 |
commit | 49196198aeedbac128ad31c9d43e4dd6cb694742 (patch) | |
tree | 6228f23f811707464c1ebe8b25c36a84f83e52d6 /Master/common.sh | |
parent | 7c4a225d15aa459868f3ecad2d2f49d7d52d0961 (diff) |
remove old installer, CD vs. DVD files
git-svn-id: svn://tug.org/texlive/trunk@7460 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/common.sh')
-rwxr-xr-x | Master/common.sh | 1485 |
1 files changed, 0 insertions, 1485 deletions
diff --git a/Master/common.sh b/Master/common.sh deleted file mode 100755 index e32fd378adc..00000000000 --- a/Master/common.sh +++ /dev/null @@ -1,1485 +0,0 @@ -#!/bin/sh -# $Id$ -# -# common.sh -- common routines for the TeX Live installation scripts. -# Do not call directly. -# -# Copyright 2003, 2004, 2005, 2006, 2007 Sebastian Rahtz and Karl Berry. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, USA. -# -# Send bug reports or suggestions to tex-live@tug.org. - -# We only do English, and we don't want different locales to mess up the -# output of, e.g., ls. -LC_ALL=C; export LC_ALL - -setvars() -{ - # These names correspond to the texmf/lists/bin-tex.* files, with - - # changed to _. - p_alpha_linux_n='DEC Alpha with GNU/Linux' - p_alphaev5_osf_n='DEC Alphaev5 OSF' - p_hppa_hpux_n='HP-UX' - p_i386_cygwin_n='Intel x86 with Cygwin' - p_i386_darwin_n='Intel x86 with MacOSX/Darwin' - p_i386_freebsd_n='Intel x86 with FreeBSD' - p_i386_openbsd_n='Intel x86 with OpenBSD' - p_i386_linux_n='Intel x86 with GNU/Linux' - p_i386_solaris_n='Intel x86 with Sun Solaris' - p_mips_irix_n='SGI IRIX' - p_powerpc_aix_n='PowerPC with AIX' - p_powerpc_darwin_n='PowerPC with MacOSX/Darwin' - p_powerpc_linux_n='PowerPC with GNU/Linux' - p_sparc_linux_n='Sparc with GNU/Linux' - p_sparc_solaris_n='Sparc with Solaris' - p_win32_n='Windows' - p_x86_64_linux_n='Intel x86_64 with GNU/Linux' - - iden_1=a - iden_2=b - iden_3=c - iden_4=d - iden_5=e - iden_6=f - iden_7=g - iden_8=h - iden_9=i - iden_10=j - iden_11=k - iden_12=l - iden_13=m - iden_14=n - iden_15=o - iden_16=p - iden_17=s - iden_18=t - iden_19=u - iden_20=v - iden_21=w - iden_22=x - iden_23=y - iden_24=z - iden_25=A - iden_26=B - iden_27=C - iden_28=D - iden_29=E - iden_30=F - iden_31=G - iden_32=H - iden_33=I - iden_34=J - iden_35=K - iden_36=L - iden_37=M - iden_38=N - iden_39=O - iden_40=P - iden_41=T - iden_42=U - iden_43=V - iden_44=W - iden_45=X - iden_46=Y - iden_47=Z - iden_48=1 - iden_49=2 - iden_50=3 - iden_51=4 - iden_52=5 - iden_53=6 - iden_54=7 - iden_55=8 - iden_56=9 - iden_57=0 -} - - -series_select_level() -{ - p=$1 - l=$2 - case $l in - 0) eval p_${p}_s=false - eval p_${p}_level=\'[ ]\' - eval p_${p}_dus=0;; - 1) eval p_${p}_s=true - eval p_${p}_level=\'[X]\' - eval p_${p}_dus=\$p_${p}_du;; - 2) eval S=\$p_${p}_s - if test "$S" = "true"; then - eval p_${p}_s=false - eval p_${p}_level=\'[ ]\' - eval p_${p}_dus=0 - else - eval p_${p}_s=true - eval p_${p}_level=\'[X]\' - eval p_${p}_dus=\$p_${p}_du - fi - ;; - esac - setlength p_${p}_dus 6 -} - -scheme_select() -{ - S=`echo $1 | sed -e 's/_/-/g' ` - series_lang_allnone - series_allnone - for i in `grep "^-collection-" $LISTS/$S.scheme | sed -e 's/^-//' -e 's/-/_/g'` - do - series_select_level $i 1 - done - selected_packages=`grep "^[+\-]" $LISTS/$S.scheme | grep -v collection- | sed -e 's/^.//' -e 's/-/_/'` - selected_collections=`grep "^-collection-" $LISTS/$S.scheme | sed -e 's/^-collection-//'` -} - -system_selectall() -{ - size=0 - for s in $all_systems; do - eval p_${p}_s=false - eval size=\`expr $size + \$p_${s}_du\` - eval p_${s}_s=true - done - all_systems_ns=$all_systems_anz - setlength all_systems_ns 2 -} - -system_deselectall() -{ - for s in $all_systems; do - series_select_level $s 0 - done - all_systems_ns=0 - setlength all_systems_ns 2 -} - -series_lang_allnone() -{ - for s in $all_lang_collections; do - series_select_level $s 0 - done - series_select_level tex_basic 1 - total_stat -} - -series_lang_allall() -{ - for s in $all_lang_collections; do - series_select_level $s 1 - done - total_stat -} - -series_allnone() -{ - for s in $all_collections; do - series_select_level $s 0 - done - series_select_level tex_basic 1 - total_stat -} - -series_allall() -{ - for s in $all_collections; do - series_select_level $s 1 - done - total_stat -} - - -systems_init () { - $echon "Initializing system packages... " - all_systems= - anz=0 - for s in $systems; do - anz=`expr $anz + 1` - t=`echo $s | sed 's@-@_@g; s@\.@@g'` - all_systems="$all_systems $t" - eval p_${t}_fn=$s - eval p_${t}_s=false - done - echo "done." - - all_systems_anz=$anz - platform_guess - if test -n "$this_system"; then - eval p_${this_system}_s=true - eval this_platform_n=\$p_${this_system}_n - eval this_platform_fn=\$p_${this_system}_fn - all_systems_ns=1 - else - all_systems_ns=0 - fi - setlength all_systems_anz 2 - setlength all_systems_ns 2 - total_stat -} - -select_platforms() -{ - changed=false - cls - echo "Available sets of binaries: "; - for p in $all_systems; do eval name=\"\$p_${p}_n\"; echo " $p: $name" ;done - echo "You can now choose to install some of these " - echo "Possible answers: <Y>es, <N>o, <R>eturn to main menu, <Q>uit." - echo "" - for p in $all_systems; do - eval name=\"\$p_${p}_n\" - case `getopt YNRQ "Install binaries for system [$p] $name"` in - Y) eval p_${p}_s=true; changed=true;; - N) eval p_${p}_s=false; changed=true;; - R) break;; - Q) exit_on_confirm;; - esac - done - $changed && { system_stat; total_stat; } -} - -system_stat() -{ - $echon "Counting selected system packages... " - anz=0 - for i in $all_systems; do - eval \$p_${i}_s && anz=`expr $anz + 1` - done - all_systems_ns=$anz - setlength all_systems_ns 2 - echo "done." -} - -nobinstat() -{ - $echon "Counting selected collections... " - anz=0 - for i in $all_collections; do - eval \$p_${i}_s && anz=`expr $anz + 1` - done - for i in $all_lang_collections; do - eval \$p_${i}_s && anz=`expr $anz + 1` - done - all_collections_ns=$anz - setlength all_collections_ns 2 - echo "done." - - $echon "Calculating disk space requirements for collections..." - size=0 - for i in $all_collections; do - eval \$p_${i}_s && eval size=\`expr $size + \$p_${i}_du\` - done - for i in $all_lang_collections; do - eval \$p_${i}_s && eval size=\`expr $size + \$p_${i}_du\` - done - all_collections_dus=$size - setlength all_collections_dus 6 - echo "done." -} - -total_stat() -{ - nobinstat - total_dus=`expr $all_collections_dus` - setlength total_dus 6 -} - -this_platform_set() -{ - system_deselectall - if test -n "$this_system"; then - eval p_${this_system}_s=true - size=0 - eval this_platform_n=\$p_${this_system}_n - eval this_platform_fn=\$p_${this_system}_fn - all_systems_ns=1 - fi - if { echo "$all_systems" | grep -q " $this_system"; } ; then - warn_nobin="" - else - warn_nobin="===> WARNING: No binaries for this platform on CD! <=== -There was not enough space, sorry. You can either select a different -set of binaries from the <B> menu, or use the live image, or download -the binaries separately via rsync. See http://tug.org/texlive." - fi -} - -TEXMFCNF__fix_texmf() -{ - #test "$TEXDIR/texmf" = "$TEXMF" && return - #test -w "$TEXMFCNF_DIR/texmf.cnf" || return - cd $work_dir || exit 1 - # - LOCAL=$TEXMFLOCAL - if test "x$LOCAL_CHANGE" = "x1"; then - : # explicitly set by user. - elif test "x$LOCAL_CHANGE" = "x2"; then - # implicitly set by changing TEXDIR - LOCAL="\$SELFAUTOPARENT/texmf-local" - else - # no changes, meaning they took the default of /usr/local/texlive/YYYY, - # meaning we want /usr/local/texlive/texmf-local ... one level up. - LOCAL="\$SELFAUTOPARENT/../texmf-local" - fi - echo "Setting local tree (TEXMFLOCAL) to $LOCAL in $TEXMFCNF_DIR/texmf.cnf... " >&2 - sed "s@^TEXMFLOCAL.*@TEXMFLOCAL=$LOCAL@" $TEXMFCNF_DIR/texmf.cnf \ - >.sed_tmp.$$ - # - VAR=$TEXMFSYSVAR - test "x$VAR_CHANGE" = "x" && VAR="\$SELFAUTOPARENT/texmf-var" - echo "Setting system var tree (TEXMFSYSVAR) to $VAR in $TEXMFCNF_DIR/texmf.cnf... " >&2 - sed "s@^TEXMFSYSVAR.*@TEXMFSYSVAR=$VAR@" \ - <.sed_tmp.$$ >$TEXMFCNF_DIR/texmf.cnf - rm .sed_tmp.$$ - # - # the TEXMFHOME tree - if test "x$TEXMFHOME" != x'$HOME/texmf' && test "x$HOME" != x/ \ - && test -n "$HOME"; then - # if the variable starts with the explicit home of the current user - # (as in "/u/karl") replace that with the string '$HOME' as the - # explicit home of the current user is unlikely to ever be right. - # - # Furthermore, if the current user's HOME is / (ie, installing as - # root), we don't want to replace / with '$HOME'. - # - if echo "$TEXMFHOME" | grep "$HOME" >/dev/null; then - hme=`echo "$TEXMFHOME" | sed "s,$HOME/*,,"` - TEXMFHOME="\$HOME/$hme" - fi - # - echo "Setting TEXMFHOME to $TEXMFHOME in $TEXMFCNF_DIR/texmf.cnf... " >&2 - sed "s,^TEXMFHOME.*,TEXMFHOME=$TEXMFHOME," $TEXMFCNF_DIR/texmf.cnf \ - >sedtmp.$$ - cp sedtmp.$$ $TEXMFCNF_DIR/texmf.cnf - rm -f sedtmp.$$ - fi - - echo "Done updating texmf.cnf." >&2 - echo >&2 -} - - -TEXMFCNF__fix_fmtutil() -{ - echo "Configuring fmtutil.cnf from $TEXMFCNF_DIR into $TEXMFSYSVAR/web2c... " >&2 - cd $work_dir - mkdirhier $TEXMFSYSVAR/web2c - sed "s@^\#!\#@@" $TEXMFCNF_DIR/fmtutil.cnf > $TEXMFSYSVAR/web2c/fmtutil.cnf -} - - - -prepare_dirs() -{ - $echon "Preparing destination directories... " >&2 - unset TEXMFCNF - unset TEXMFMAIN - test -d "$CDDIR" \ - || fatal "$CDDIR does not seem to be the TeX Live distribution!" - - work_dir=${TMP-/tmp}/.tmp_tlinst.$$ - ERRLOG=$work_dir/.errlog.$$ - - trap "cd /; rm -rf $work_dir $TEXDIR/texmf/.tmp_testfile.$$;trap '' 0; exit 0" 0 1 2 15 - - alldirs="$TMPDIR $TEXDIR $TEXMFSYSVAR $TEXMF $work_dir $opt_symlinks_bin $opt_symlinks_info" - test -z "$TEXMFSYSVAR" || - alldirs="$alldirs $TEXMFSYSVAR/fonts/pk $TEXMFSYSVAR/fonts/tfm" - test -z "$opt_varfonts_dir" || - alldirs="$alldirs $opt_varfonts_dir/pk $opt_varfonts_dir/tfm" - for dir in $alldirs; do - while test ! -d $dir || test ! -w $dir; do - mkdirhier $dir - test -d $dir || { warn "could not make directory '$dir'"; continue; } - test -w $dir || { warn "cannot write to directory '$dir'"; continue; } - done - done - test -z "$TEXMFSYSVAR" || chmod -R a+w $TEXMFSYSVAR || - warn "command 'chmod -R a+w $TEXMFSYSVAR' failed" - test -z "$opt_varfonts_dir" || - chmod 1777 $opt_varfonts_dir/pk $opt_varfonts_dir/tfm || - warn "command 'chmod 1777 $opt_varfonts_dir/pk $opt_varfonts_dir/tfm' failed" - - echo "done preparing." >&2 - if test "$all_systems_ns" = 1; then - cls - textvar_show screen_6 - echo - fi -} - -make_var_skeleton () -{ - mkdirhier $TEXMFSYSVAR/tex/generic/config - mkdirhier $TEXMFSYSVAR/dvipdfm/config - mkdirhier $TEXMFSYSVAR/tex/plain/config - mkdirhier $TEXMFSYSVAR/dvips/config - mkdirhier $TEXMFSYSVAR/fonts/map/dvipdfm/updmap - mkdirhier $TEXMFSYSVAR/fonts/map/dvips/updmap - mkdirhier $TEXMFSYSVAR/fonts/map/pdftex/updmap - mkdirhier $TEXMFSYSVAR/web2c - mkdirhier $TEXMFSYSVAR/xdvi - mkdirhier $TEXMFSYSVAR/tex/context/config -} - -make_local_skeleton () -{ - # skeleton local hierarchy - mkdirhier $TEXMFLOCAL/tex/latex/local - mkdirhier $TEXMFLOCAL/tex/plain/local - mkdirhier $TEXMFLOCAL/dvips/local - mkdirhier $TEXMFLOCAL/bibtex/bib/local - mkdirhier $TEXMFLOCAL/bibtex/bst/local - mkdirhier $TEXMFLOCAL/fonts/tfm/local - mkdirhier $TEXMFLOCAL/fonts/vf/local - mkdirhier $TEXMFLOCAL/fonts/source/local - mkdirhier $TEXMFLOCAL/fonts/type1/local - mkdirhier $TEXMFLOCAL/metapost/local - mkdirhier $TEXMFLOCAL/web2c -} - - -maketex_setoptfonts() -{ - test -w "$TEXMFCNF_DIR/texmf.cnf" || return - test "$opt_varfonts" = X || return - $echon "Setting VARFONTS in texmf.cnf... " >&2 - ed "$TEXMFCNF_DIR/texmf.cnf" >$ERRLOG 2>&1 <<eof -/^VARTEXFONTS.*=/ -c -VARTEXFONTS = $opt_varfonts_dir -. -w -q -eof - show_error - echo "Done setting varfonts." >&2 - - mtsite=$TEXMFCNF_DIR/mktex.cnf - chmod u+w $mtsite - test -w "$mtsite" || return - show_error - $echon "Adding varfonts feature in $mtsite... " >&2 - ed "$mtsite" >$ERRLOG 2>&1 <<'eof' -/MT_FEATURES=appendonlydir/ -s/dir/dir:varfonts/ -w -q -eof - show_error - echo "Done adding varfonts." >&2 -} - -greetings() -{ - cat <<ENDG - -See ./index.html for links to documentation. -The TeX Live web site (http://tug.org/texlive/) -contains any updates and corrections. - -TeX Live is a joint project of the TeX user groups around the world; -please consider supporting it by joining the group best for you. -The list of groups is available on the web at -http://tug.org/usergroups.html. - -Welcome to TeX Live! - -ENDG -} - -opt_do_symlinks() -{ - test "$opt_symlinks" = X || return - - $echon 'Creating symbolic links...' - texdocdir=$TEXDIR/texmf/doc - - # Dynamically see which man sections we have. - mans=`(cd $texdocdir/man && echo *)` - test -z "$mans" && return # unlikely but possible - # - for m in $mans; do - mandir=$texdocdir/man/$m - test -d $mandir || continue # in case a README or something sneaks in. - - mkdirhier $opt_symlinks_man/$m - test ! -w $opt_symlinks_man/$m && continue - - $echon " $m" - cd $opt_symlinks_man/$m || continue - rm -f `ls $mandir` - ln -s $mandir/* . - done - - # no subdirs for info. - infodir=$texdocdir/info - if test -w "$opt_symlinks_info"; then - $echon " info" - if cd $opt_symlinks_info; then - rm -f `ls $infodir` - ln -s $infodir/*info* . - fi - fi - - this_platform_bin= - if test -x $TEXDIR/bin/tex; then - this_platform_bin=$TEXDIR/bin - elif test -x $TEXDIR/bin/$this_platform_fn/tex; then - this_platform_bin=$TEXDIR/bin/$this_platform_fn - fi - if test -n "$this_platform_bin"; then - $echon " binaries" - $debug && echo " (target $this_platform_bin)" - if cd $opt_symlinks_bin; then - rm -f `ls $this_platform_bin` - ln -s $this_platform_bin/* . - fi - fi - - echo ' ... done linking.' -} - -################################################################ -# menus: -################################################################ -menu_main() -{ - while true; do - cls - opt_savespace_man=X - echo; textvar_show screen_1; echo - case `getopt BCDHILOPQRS 'Enter command'` in - B) select_platforms;; - C) menu_series_customize;; - D) menu_directories;; - H) helpme help_1;; - I) install_now;; - L) menu_lang_series_customize;; - O) menu_options;; - P) menu_this_platform;; - Q) exit_on_confirm;; - R) install_cd;; - S) menu_schemes;; - esac - done -} - - -# NEW PLATFORM: change getopt call and add a new case. -menu_this_platform() -{ - while true; do - cls - textvar_show screen_5; echo - case `getopt NABCDEFGHIJKLMOPRSQ 'Select the platform you are currently on'` in - N) this_system=''; this_platform_set ;; - A) this_system=i386_linux; this_platform_set ;; - B) this_system=win32; this_platform_set ;; - C) this_system=powerpc_darwin; this_platform_set ;; - D) this_system=i386_darwin; this_platform_set ;; - E) this_system=alpha_linux; this_platform_set ;; - F) this_system=mips_irix; this_platform_set ;; - G) this_system=powerpc_aix; this_platform_set ;; - H) this_system=powerpc_linux; this_platform_set ;; - I) this_system=hppa_hpux; this_platform_set ;; - J) this_system=sparc_linux; this_platform_set ;; - K) this_system=sparc_solaris; this_platform_set ;; - L) this_system=i386_solaris; this_platform_set ;; - M) this_system=i386_freebsd; this_platform_set ;; - # N above - O) this_system=i386_openbsd; this_platform_set ;; - P) this_system=i386_cygwin; this_platform_set ;; - # QR below - S) this_system=x86_64_linux; this_platform_set ;; - # - Q) exit_on_confirm ;; - R) total_stat; return ;; - esac - done -} - - -# This runs for scheme selection <S>. -menu_schemes() -{ - while true; do - for i in $all_schemes - do - eval key=\"\$schemes_${i}_ident\" - eval name=\"\$schemes_${i}_n\" - echo $key $name - done | pr -t -2 - - echo - echo "Current scheme: $selected_scheme." - echo - echo ' Press <S> to see collections for this scheme,' - echo ' <R> to return to main menu, <Q> to quit' - K=`getopt ABCDEFGHIJKLMNOPQRSTUVWXYZ ' or press key to select a scheme'` - case $K in - Q) exit_on_confirm;; - R) total_stat; return;; - S) echo - echo "Collections: $selected_collections" | sed 's/tex_//g' | fmt - echo - ;; - *) eval W=\"\$SCHEMES_${K}\" - selected_scheme=$W - scheme_select $W - total_stat - echo "New scheme: $selected_scheme." - return;; - esac - done -} - -# emacs-page -menu_series_customize() -{ - while true; do - cls - for i in $all_collections - do - eval status=\"\$p_${i}_level\" - eval key=\"\$p_${i}_ident\" - eval name=\"\$p_${i}_n\" - echo $key $status $name - done | pr -t -2 - - textvar_show screen_customize; echo - K=`getoptallcase -+abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 'Press key to toggle status of collection'` - case $K in - +) series_allall;; - -) series_allnone;; - R) total_stat; return ;; - r) total_stat; return ;; - Q) exit_on_confirm;; - q) exit_on_confirm;; - *) eval W=\"\$P_${K}\" - series_select_level $W 2; - esac - done -} - -menu_lang_series_customize() -{ - while true; do - cls - for i in $all_lang_collections - do - eval status=\"\$p_${i}_level\" - eval key=\"\$p_${i}_ident\" - eval name=\"\$p_${i}_n\" - echo $key $status $name - done | pr -t -2 - - textvar_show screen_customize; echo - K=`getoptallcase -+abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 'Press key to toggle status of collection'` - case $K in - +) series_lang_allall;; - -) series_lang_allnone;; - R) total_stat; return ;; - Q) exit_on_confirm;; - r) total_stat; return ;; - q) exit_on_confirm;; - *) eval W=\"\$LP_${K}\" - series_select_level $W 2; - esac - done -} - - -menu_directories() -{ - while true; do - cls - textvar_show screen_2; echo - case `getopt 1234RQ 'Enter command'` in - 1) gets TEXDIR - LOCAL_CHANGE=2 - TEXDIR=`dirname "$TEXDIR/x" | sed 's@//*@/@g'` - TEXMF=`echo $TEXDIR/texmf | sed 's@//*@/@g'` - TEXMFLOCAL=`echo $TEXDIR/texmf-local` - TEXMFSYSVAR=`echo $TEXDIR/texmf-var` - ;; - 2) gets TEXMFLOCAL - LOCAL_CHANGE=1 - TEXMFLOCAL=`dirname "$TEXMFLOCAL/x" | sed 's@//*@/@g'` - ;; - 3) gets TEXMFSYSVAR - VAR_CHANGE=1 - TEXMFSYSVAR=`dirname "$TEXMFSYSVAR/x" | sed 's@//*@/@g'` - ;; - 4) gets TEXMFHOME - TEXMFHOME=`dirname "$TEXMFHOME/x" | sed 's@//*@/@g'` ;; - R) return;; - Q) exit_on_confirm;; - esac - done -} - -menu_options() -{ - while true; do - cls - textvar_show screen_3; echo - case `getopt ADFLRSQ 'Enter command'` in - A) toggle opt_varfonts - if test "$opt_varfonts" = X; then - cls; textvar_show screen_3; echo - opt_varfonts_dir=$opt_varfonts_dir_last - test -z "$opt_varfonts_dir" && opt_varfonts_dir=/tmp/texfonts - gets opt_varfonts_dir 'alternate directory' - else - opt_varfonts_dir_last=$opt_varfonts_dir - opt_varfonts_dir='' - fi - ;; - S) toggle opt_source - if test "$opt_source" = X; then - cls; textvar_show screen_3; echo - fi - ;; - D) toggle opt_doc - if test "$opt_doc" = X; then - cls; textvar_show screen_3; echo - fi - ;; - L) toggle opt_symlinks - if test "$opt_symlinks" = X; then - cls; textvar_show screen_3; echo - # - opt_symlinks_bin=$opt_symlinks_bin_last - test -z "$opt_symlinks_bin" && opt_symlinks_bin=/usr/bin - gets opt_symlinks_bin 'binary directory' - # - opt_symlinks_man=$opt_symlinks_man_last - if test -z "$opt_symlinks_man"; then - if test "$opt_symlinks_bin" = /usr/bin; then - opt_symlinks_man=/usr/share/man # /usr/man no longer common - else - opt_symlinks_man=`dirname $opt_symlinks_bin`/man - fi - fi - gets opt_symlinks_man 'man directory ' - # - opt_symlinks_info=$opt_symlinks_info_last - if test -z "$opt_symlinks_info"; then - if test "$opt_symlinks_bin" = /usr/bin; then - opt_symlinks_info=/usr/share/info # ditto for info - else - opt_symlinks_info=`dirname $opt_symlinks_bin`/info - fi - fi - gets opt_symlinks_info 'info directory ' - else - opt_symlinks_bin_last=$opt_symlinks_bin - opt_symlinks_man_last=$opt_symlinks_man - opt_symlinks_info_last=$opt_symlinks_info - opt_symlinks_bin=''; opt_symlinks_man=''; opt_symlinks_info='' - fi - ;; - R) return;; - Q) exit_on_confirm;; - esac - done -} - -exit_on_confirm() -{ - cls - yesno 'Really quit' && exit -} - -################################################################ -# global variables -################################################################ -: ${PAGER=more} -envvars=' -BIBINPUTS BSTINPUTS DVIPSHEADERS GFFONTS GLYPHFONTS MFBASES MFINPUTS -MFPOOL PKFONTS TEXCONFIG TEXFONTS TEXFORMATS TEXINPUTS TEXMFCNF TEXPICTS -TEXPKS TEXPOOL TFMFONTS VFFONTS DVIPSFONTS XDVIVFS XDVIFONTS DVILJFONTS -' -TARPROG=tar -TAROPT="" -varprefix='/var' -usrprefix='/usr' -opt_varfonts=' ' -opt_vartexmf=' ' -opt_source=' ' -opt_doc=' ' -opt_varfonts_dir='' -opt_vartexmf_dir='' -opt_varfonts_dir_last='' -opt_vartexmf_dir_last='' -opt_symlinks=' ' -opt_symlinks_bin='' -opt_symlinks_man='' -opt_symlinks_info='' -opt_symlinks_bin_last='' -opt_symlinks_man_last='' -opt_symlinks_info_last='' - -this_platform= - -################################################################ -# screens: -################################################################ - -screen_2='Current directories setup: -============================================================================== - - <1> TEXDIR: $TEXDIR - support tree: $TEXMF - - <2> TEXMFLOCAL: $TEXMFLOCAL - <3> TEXMFSYSVAR: $TEXMFSYSVAR - <4> TEXMFHOME: $TEXMFHOME - -Other options: -============================================================================== - <R> return to main menu - <Q> quit -' - -screen_3='Current options setup: -============================================================================== - - <A> alternate directory for automatically generated fonts: [$opt_varfonts] - directory name: $opt_varfonts_dir - <L> create symlinks in standard directories: [$opt_symlinks] - binaries to: $opt_symlinks_bin - manpages to: $opt_symlinks_man - info to: $opt_symlinks_info - <D> do not install font/macro doc tree: [$opt_doc] - <S> do not install font/macro source tree: [$opt_source] - -Other options: -============================================================================== - <R> return to main menu - <Q> quit -' - -screen_5='Current platform: $this_platform_n -$warn_nobin -============================================================================== - <N> none of the entries below - <A> $p_i386_linux_n - <B> $p_win32_n - <C> $p_powerpc_darwin_n - <D> $p_i386_darwin_n - <E> $p_alpha_linux_n - <F> $p_mips_irix_n - <G> $p_powerpc_aix_n - <H> $p_powerpc_linux_n - <I> $p_hppa_hpux_n - <J> $p_sparc_linux_n - <K> $p_sparc_solaris_n - <L> $p_i386_solaris_n - <M> $p_i386_freebsd_n - <O> $p_i386_openbsd_n - <P> $p_i386_cygwin_n - <S> $p_x86_64_linux_n - - <R> return to main menu - <Q> quit -' - - -screen_6='TeX Live can be used on multiple systems -as a separate subdirectory is used for each -installed binary package in $TEXDIR/bin.' - -screen_customize=' - <-> deselect all <+> select all <R> return to main menu <Q> quit -' - -system_screen='System setup section -============================================================================== -Current selection: $all_systems_ns out of $all_systems_anz - -============================================================================== - <R> return to platform menu - <Q> quit -' - -help_1=' -This is the installation program of the TeX Live distribution. - -The installation procedure is simple: just go through the -menus until you are happy with the way all options are set up, -and then do <I> (start installation). - -To select a menu item (a letter or a number marked with brackets) -just enter the corresponding letter or number and press return -(the letters are case insensitive except when collections -are being selected). Do not enter the -angle brackets <> themselves. - -We will now consider each menu item in more detail: - -====================================================================== - The collections menu (<C>) -====================================================================== - -The collections menu allows you to select and deselect standard -collections. Each collection --- TeX macro files, Metafont font -families, and so on --- consists of several packages. - -====================================================================== - The language collections menu (<L>) -====================================================================== - -The language collections menu allows you to select and deselect -language support collections. Each collection consists of several -packages, which provide features like hyphenation files and fonts. - -====================================================================== - The binary systems menu (<B>) -====================================================================== - -The systems menu allows you to select and deselect -the binary packages for various different platforms. - -====================================================================== - The directories menu (<D>) -====================================================================== - -The TeX Live distribution will be installed in a single directory tree -(TEXDIR). You may choose any directory you like -since there are no absolute paths compiled into the binaries. Instead, -the Kpathsea library selfdir feature ensures that all -paths are relative to the location of the binaries. - -The platform independent files are stored in a directory tree in -TEXDIR/texmf. There is also an extra directory for performing -administrative tasks like change of configuration and languages. This -is where all format files are stored. It defaults to TEXDIR/texmf-var. - -This system allows you to mount your -TEXDIR/texmf tree read-only. - -====================================================================== - The options menu (<O>) -====================================================================== - -The options are not applicable to all installations. Set them as -appropriate for yours. - -====================================================================== - The schemes menu (<S>) -====================================================================== - -You can choose from a number of different installation -schemes for TeX Live. Selecting one of these selects -some collections in the Collections and Languages lists. -which you can subsequently modify. - -"alternate fonts directory": -============================ - -You can choose an alternate directory for automatically generated fonts; -the default is TEXMFSYSVAR/fonts - -One disadvantage may be that new fonts are not shared. I.e., if you -set this to /tmp, and users on two different machines need the same -font, it will be built twice, once on each machine. - -"symlinks in standard directories" -================================== - -You can make the binaries, man pages, and info files available on your -system in either (or both) of two ways: - 1) install them in "standard places" that are searched for these files - 2) change your search paths to include the new directories - -If you select the "symlinks" option, symbolic links will be installed in -the directories you choose. Note that if you share the TeX Live installation -accross several machines across NFS and if the chosen "standard places" are -not shared, you need to create the symbolic links on each client, too -(or use method 2 on your clients). - -If you do not use the "symlinks" option, you probably need to set up -your search paths (PATH, MANPATH, INFOPATH). - -"do not install doc or source trees" -==================================== -These options are not recommended, but you can use them to save space. -Normally all packages are installed with the source and/or documentation, -but these are not needed to actually run the software. If you -are installing a system for other people, it would be unfriendly to -select these options; if you know what you are doing and need a -minimal disk footprint, go ahead - - -====================================================================== - Other commands (<I>, <H>, <R> and <Q> -====================================================================== - -Well, this is easy to explain: - <R> does not install the system, but sets you to run off the CD - <I> starts the installation after you are happy with the setup - <H> displays this help - <Q> quits the installation program -' - -init() -{ - #$debug && set -x - echo "Welcome to TeX Live installation. (`date`)"; echo - locate_binaries - bad_sh - find_echo - find_tar - series_init - bindir= - tex_prefix=${TEXLIVE_INSTALL_PREFIX-/usr/local/texlive} - TEXDIR=${TEXLIVE_INSTALL_TEXDIR-$tex_prefix/2007} # manually update each year! - TEXMFSYSVAR=${TEXLIVE_INSTALL_TEXMFSYSVAR-$TEXDIR/texmf-var} - TEXMF=$TEXDIR/texmf - TEXMFLOCAL=${TEXLIVE_INSTALL_TEXMFLOCAL-$tex_prefix/texmf-local} - TEXMFHOME=${TEXLIVE_INSTALL_TEXMFHOME-'$HOME/texmf'} - VAR_CHANGE="" - LOCAL_CHANGE="" - warn_nobin="" - -screen_1=' ===================> TeX Live installation procedure <================== - -===> Note: Letters/digits in <angle brackets> indicate menu items <=== -===> for commands or configurable options <=== - - Proposed platform: $this_platform_n - <P> override system detection and choose platform - <B> binary systems: $all_systems_ns out of $all_systems_anz - <S> Installation scheme ($selected_scheme) - [to customize within installation scheme: - <C> standard collections <L> language collections] - $all_collections_ns out of $all_collections_anz, disk space required: $all_collections_dus kB - <D> directories: - TEXDIR (main TeX directory): $TEXDIR - TEXMFSYSVAR (systemwide config): $TEXMFSYSVAR - TEXMFLOCAL (systemwide styles etc.): $TEXMFLOCAL - TEXMFHOME (personal styles etc.): $TEXMFHOME - <O> options: - [$opt_varfonts] alternate directory for generated fonts ($opt_varfonts_dir) - [$opt_symlinks] create symlinks in standard directories - [$opt_doc] do not install macro/font doc tree - [$opt_source] do not install macro/font source tree - <R> do not install files, set up to run off CD or DVD - <I> start installation - <H> help, <Q> quit -' - -} - -list_zipped_files() -{ - col=`echo $1 | sed 's/_/-/g'` - $debug && echo " -> collection $col" >&2 - morecols=`grep -- "^-" $LISTS/$col | sed 's/.//'` - packages=`grep "^+" $LISTS/$col | sed 's/.//'` - :>$work_dir/tmp.text - :>$work_dir/$col.jobs - echo "$col.zip" >> $work_dir/tmp.text - eval sort < $LISTS/$col | grep '^\!' | tr ' ' '=' >> $work_dir/$col.jobs - if test "x$packages" != "x" - then - for i in $packages - do - expand_package $i $col - done - fi - eval sort -u $work_dir/tmp.text >> $work_dir/$col.list.text - - - rm $work_dir/tmp.text - - if test "x$morecols" != "x" - then - for p in $morecols - do - list_zipped_files $p - done - fi - -} - -expand_package () -{ - pack=$1 - col=$2 - $debug && echo " expand package $pack" >&2 - echo "$pack.zip" >> $work_dir/tmp.text - eval sort < $LISTS/$pack | grep '^\!' | tr ' ' '=' >> $work_dir/$col.jobs - more=`grep "^+" $LISTS/$pack | sed 's/.//'` - if test "x$more" != "x" - then - for i in $more - do - expand_package $i $col - done - fi -} - - -# emacs-page -# at the beginning of the end ... called at the beginning of install_new. -# the caller must set list_file_func and list_package_func. -# -common_start_install() -{ - prepare_dirs - make_local_skeleton - make_var_skeleton - - skip_systemstuff=false - TEXMFCNF_DIR=$TEXDIR/texmf/web2c - test -f $TEXMFCNF_DIR/texmf.cnf && skip_systemstuff=true - - # - cat >$TEXMFSYSVAR/web2c/updmap.cfg <<OAF -# created during TeX Live installation, `date`. -################################################################ -# OPTIONS -################################################################ -# -# dvipsPreferOutline -# -# Should dvips (by default) prefer bitmap fonts or outline fonts -# if both are available? Independent of this setting, outlines -# can be forced by putting "p psfonts_t1.map" into a config file -# that dvips reads. Bitmaps (for the fonts in question) can -# be forced by putting "p psfonts_pk.map" into a config file. -# We provide such config files which can be enabled via -# dvips -Poutline ... resp. dvips -Ppk ... -# -# Valid settings for dvipsPreferOutline are true / false: -dvipsPreferOutline true - -# -# LW35 -# -# Which fonts for the "Basic 35 Laserwriter Fonts" do you want to use and -# how are the filenames chosen? Valid settings: -# URW: URW fonts with "vendor" filenames (e.g. n019064l.pfb) -# URWkb: URW fonts with "berry" filenames (e.g. uhvbo8ac.pfb) -# ADOBE: Adobe fonts with "vendor" filenames (e.g. hvnbo___.pfb) -# ADOBEkb: Adobe fonts with "berry" filenames (e.g. phvbo8an.pfb) -LW35 URWkb - -# -# dvipsDownloadBase35 -# -# Should dvips (by default) download the standard 35 LaserWriter fonts -# with the document (then set dvipsDownloadBase35 true) or should these -# fonts be used from the ps interpreter / printer? -# Whatever the default is, the user can override it by specifying -# dvips -Pdownload35 ... resp. dvips -Pbuiltin35 ... to either download -# the LW35 fonts resp. use the built-in fonts. -# -# Valid settings are true / false: -dvipsDownloadBase35 false - -# -# pdftexDownloadBase14 -# -# Should pdftex download the base 14 pdf fonts? Since some configurations -# (ps / pdf tools / printers) use bad default fonts, it is safer to download -# the fonts. The pdf files will get bigger, though. -# Valid settings are true (download the fonts) or false (don't download -# the fonts). Adobe recomments to embed all fonts. -pdftexDownloadBase14 true - -# -# dvipdfmDownloadBase14 -# -# Should dvipdfm download the base 14 pdf fonts? Since some configurations -# (ps / pdf tools / printers) use bad default fonts, it is safer to download -# the fonts. The pdf files will get bigger, though. -# Valid settings are true (download the fonts) or false (don't download -# the fonts). -dvipdfmDownloadBase14 true - -################################################################ -# Map files. -################################################################ -# -# There are two possible entries: Map and MixedMap. Both have one additional -# argument: the filename of the map file. MixedMap ("mixed" means that -# the font is available as bitmap and as outline) lines will not be used -# in the default map of dvips if dvipsPreferOutline is false. Inactive -# Map files should be marked by "#! " (without the quotes), not just #. -# -# (comments on a few map files from the teTeX updmap.cfg; for TeX Live, -# the actual Map lines are created during installation.) -# -# AntykwaPoltawskiego; CTAN:fonts/psfonts/polish/antp/ -# -# AntykwaTorunska; CTAN:fonts/antt/ -# -# "quasi" fonts derived from URW and enhanced (from the Polish TeX users); -# CTAN:fonts/psfonts/polish/qfonts/ -# -# Bitstream Charter text font -# -# Computer Modern fonts extended with Russian letters; -# CTAN:fonts/cyrillic/cmcyr/ -# -# symbols for ConTeXt macro package -# -# latin modern; CTAN:fonts/lm. -# -# a symbol font; CTAN:fonts/psfonts/marvosym/ -# -# two font map entries for the mathpple package -# -# for Omega -# -# the pazo fonts; CTAN:fonts/mathpazo -# -# pxfonts (palatino extension); CTAN:fonts/pxfonts -# -# txfonts (times extension); CTAN:fonts/txfonts -# -# XY-pic fonts; CTAN:macros/generic/diagrams/xypic -# -# 7-8-9 sizes for cmex taken from TeXtrace2001 different implementation -# for font entries found in ams-cmex-bsr-interpolated.map and -# cmother-bsr-interpolated.map. -# -# ps-type1 versions for ams; CTAN:fonts/amsfonts/ps-type1 -# -# ps-type1 versions for cm; CTAN:fonts/cm/ps-type1/bluesky -# -# CSTeX; http://math.feld.cvut.cz/olsak/cstex/ -# -# mf -> type1 converted fonts by Taco Hoekwater -# -# Polish version of Computer Modern; CTAN:language/polish/plpsfont -# -# Polish version of Computer Concrete; CTAN:fonts/psfonts/polish/cc-pl -# -# See comments in doc/fonts/belleek/README about using mt-belleek.map -# instead of mt-yy.map: -# -# Euro Symbol fonts by Henrik Theiling; CTAN:fonts/eurosym -# -# vntex support, see http://vntex.org/ -# -# Doublestroke, based on Knuth's Computer Modern Roman; CTAN:fonts/doublestroke -# -# FPL, free substitutes for the commercial Palatino SC/OsF fonts -# are available from CTAN:fonts/fpl; used by psnfss 9.2. -OAF - ( - echo "Preparing list of files to be installed..." >&2 - $debug && echo "debug:for selected systems:" >&2 - for p in $all_systems; do - $debug && echo "debug: checking system $p_${p}_s..." - eval \$p_${p}_s || continue - eval name=\"\$p_${p}_n\" - echo " $name" >&2 - done - echo >&2 - - $debug && echo "debug:for selected collections:" >&2 - for p in $all_collections; do - $debug && echo "debug: checking coll $p_${p}_s..." - eval \$p_${p}_s || continue - eval name=\"\$p_${p}_n\" - echo " $name ">&2 - $list_file_func $p - done - echo >&2 - - $debug && echo "debug:for selected language collections:" >&2 - for p in $all_lang_collections; do - $debug && echo "debug: checking lang coll $p_${p}_s..." - eval \$p_${p}_s || continue - eval name=\"\$p_${p}_n\" - echo " $name ">&2 - $list_file_func $p - done - - # e.g., GUST scheme depends on some individual packages, not just - # collections. Write info for those to a special .list file. - # (Ignored for compressed installation.) - $debug && echo "debug:for selected packages:" >&2 - :>$work_dir/PKGONLY.list - for p in $selected_packages; do - $list_package_func $p PKGONLY - done - ) -} - - -# emacs-page -# at the end of the end ... this routine does not return. -# -common_end_install() -{ - test -n "$platform_subdir_strip_d" && rm -f $TEXDIR/bin/$platform_subdir_strip_d 2>/dev/null - - if test "x$TEXMF" != "x$TEXDIR/texmf"; then - $echon "Fixing permissions in $TEXMF... " >&2 - chmod -R a+r,u+w,go-w $TEXMF 2>/dev/null - rm -f $TEXDIR/texmf - echo "done." >&2 - fi - $echon "Fixing permissions in $TEXDIR... " >&2 - chmod -R a+r,u+w,go-w $TEXDIR 2>/dev/null - test -z "$TEXMFSYSVAR" || - chmod -R a+w $TEXMFSYSVAR || - warn "command 'chmod 1777 $TEXMFSYSVAR' failed" - echo "done." >&2 - - if test "$opt_varfonts" = X; then - $echon "$opt_varfonts_dir will be used for font creation... " >&2 - else - $echon "Setting up directories for automatic font creation... " >&2 - find "$TEXMF/fonts/pk" "$TEXMF/fonts/tfm" "$TEXMF/fonts/source/jknappen" -type d \ - -print 2>/dev/null | $XARGS chmod 1777 2>/dev/null - fi - find "$TEXMF/fonts/source/jknappen" -type d -print 2>/dev/null | $XARGS chmod 1777 2>/dev/null - echo "done." >&2 - - $skip_systemstuff || maketex_setoptfonts - $skip_systemstuff || TEXMFCNF__fix_fmtutil - $skip_systemstuff || TEXMFCNF__fix_texmf - pd=$this_platform_fn - bindir= - have_system=false - echo Testing for $TEXDIR/bin/$pd/texconfig.... >&2 - if test -x $TEXDIR/bin/$pd/texconfig; then - have_system=true - bindir=$TEXDIR/bin/$pd - elif test -x $TEXDIR/bin/texconfig; then - have_system=true - bindir=$TEXDIR/bin - fi - $skip_systemstuff && have_system=false - $skip_systemstuff || opt_do_symlinks - $skip_systemstuff && echo "System updated successfully." >&2 - if $have_system; then - runsetup - echo - echo "Add $TEXDIR/texmf/doc/man to MANPATH." >&2 - echo "Add $TEXDIR/texmf/doc/info to INFOPATH." >&2 - echo "Most importantly, add $bindir" >&2 - echo " to your PATH for current and future sessions." >&2 - - if test "$pd" = i386-solaris; then - # we should do this if i386-solaris is installed, not just if it's - # the current platform, but that seems pretty painful. - echo - echo "For i386-solaris, you must also install extra libraries:" - echo " gzip -d <support/i386-solaris-libs.pkg.gz >/tmp/tlibs.pkg" - echo " pkgadd -d /tmp/tlibs.pkg" - echo "(or the equivalent.)" - echo - fi - fi - - $skip_systemstuff || greetings - - if $skip_systemstuff; then - echo Since $TEXMFCNF_DIR/texmf.cnf already existed, - echo we have not modified anything in that directory. - echo Please review your setup. - fi - exit -} - - -# called from runsetup. -# -post_install_jobs () -{ - $debug && echo "debug:do post_install_jobs " >&2 - for j in `sort -u $work_dir/*.jobs`; do - command=`echo $j | sed 's/.\(.*\)=.*/\1/'` - test "x$command" = xBuildFormat && continue # we do nothing with these - - parameter=`echo $j | sed 's/.*=\(.*\)/\1/'` - echo " EXECUTE $j: $command on $parameter" >&2 - case $command in - addMap) - echo "Map $parameter" >> $TEXMFSYSVAR/web2c/updmap.cfg;; - addMixedMap) - echo "MixedMap $parameter" >> $TEXMFSYSVAR/web2c/updmap.cfg;; - addDvipsMap) - echo "p +$parameter" >> $TEXMFSYSVAR/dvips/config/config.ps;; - addDvipdfmMap) - test -f $TEXMFSYSVAR/dvipdfm/config/config && echo "f $parameter" >> $TEXMFSYSVAR/dvipdfm/config/config;; - BuildLanguageDat) ;; # handle differently, in runsetup - esac -done -} - - -# subroutine called from common_end_setup. -# -runsetup() -{ - PATH=$bindir:/bin:/usr/bin; export PATH - - # We do not do anything with the BuildLanguageDat TPM:Execute instruction. - # We just use whatever lang.dat files got installed. - texmf_langdir=$TEXDIR/texmf/tex/generic/config - sysvar_langdir=$TEXMFSYSVAR/tex/generic/config - sysvar_langdat=$sysvar_langdir/language.dat - # - if test -f $sysvar_langdat; then - echo "Using language.dat from TeX Live ($sysvar_langdat)." >&2 - else - echo Making language.dat in $sysvar_langdir >&2 - echo " from your language selections..." >&2 - # if no lang.dat's installed (basic scheme), don't mention missing files. - langsel=$texmf_langdir/language.*.dat - test -n "`ls $langsel 2>/dev/null`" || langsel= - mkdirhier $sysvar_langdir - cat $texmf_langdir/language.us $langsel >$sysvar_langdat - fi - - # Update ls-R before running texconfig, or modes.mf et al. may not be found. - echo Updating filename database with mktexlsr... >&2 - $bindir/mktexlsr --verbose - - echo "Doing post-install jobs from the packages..." - post_install_jobs - - echo "Making map files for dvips, pdftex, dvipdfm with updmap..." >&2 - $bindir/updmap-sys --nohash --quiet \ - --cnffile=$TEXMFSYSVAR/web2c/updmap.cfg \ - --dvipsoutputdir=$TEXMFSYSVAR/fonts/map/dvips/updmap \ - --dvipdfmoutputdir=$TEXMFSYSVAR/fonts/map/dvipdfm/updmap \ - --pdftexoutputdir=$TEXMFSYSVAR/fonts/map/pdftex/updmap - - echo "Re-updating filename database with mktexlsr..." >&2 - $bindir/mktexlsr - - cat <<ENDC - -========================= -Installation is finished. (`date`) - -Formats will be built for each user as needed. If you wish to install -all formats at once, for everyone on your system, run fmtutil-sys --all. - -For future global configuration, edit files in $TEXMFSYSVAR -(or run texconfig or texconfig-sys). -ENDC -} |