SSH 'unknown terminal type' பிழையை சரி செய்வது எப்படி?
SSH இணைப்பில் ஏற்படும் unknown terminal type பிழையை சரிசெய்ய, root அனுமதி இன்றி உங்கள் home directory-ல் terminfo பதிப்பை எவ்வாறு compile செய்வது என்பதை இந்த வழிகாட்டி விளக்குகிறது.
"unknown terminal type" என்பதன் பொருள்
SSH வழியாக இணைக்கும்போது ஏற்படும் "unknown terminal type" பிழை, TERM-ல் உள்ள பெயர் server-ல் உள்ள terminfo தரவுத்தளத்தில் இல்லை என்பதைக் குறிக்கிறது. உங்கள் laptop-ல் உள்ள terminal emulator அந்தப் பெயரை அமைக்கிறது. ஆனால், அந்தப் பெயரை அடையாளம் காண வேண்டிய தரவுத்தளம் remote machine-ல் உள்ளது. இந்தத் தேடல் தோல்வியடையும் போது, அந்த server-ல் உள்ள curses நிரல்கள் எதையும் திரையில் காண்பிப்பதற்கு முன்பே நின்றுவிடும்; ஏனெனில், உங்கள் terminal-ன் செயல்பாடுகள் குறித்த விவரங்கள் அதற்குத் தெரியாது.
உங்கள் emulator-ன் அனைத்து வசதிகளையும் தக்கவைக்கும் தீர்வு ஒரு கட்டளை மட்டுமே: உங்கள் சொந்த terminfo பதிப்பை server-ல் உள்ள ~/.terminfo-க்கு compile செய்யவும். ncurses எந்தவொரு system directory-ஐயும் பார்ப்பதற்கு முன்பாக உங்கள் home directory-ஐத் தேடும். எனவே, இதற்கு root அனுமதி தேவையில்லை, மேலும் இது மற்ற பயனர்களின் அமைப்புகளைப் பாதிக்காது.
TERM என்பது ஒரு பெயர், terminfo என்பது ஒரு தரவுத்தளம்
TERM ஒரு சரத்தை (string) வைத்திருக்கும், அந்த சரம் ஒரு திறவுகோல் (key) மட்டுமே. terminfo என்பது terminal விளக்கங்களின் தொகுக்கப்பட்ட தரவுத்தளம் ஆகும். ஒரு நிரல் தனக்குத் தேவையான சரியான விளக்கத்தை கண்டறிய இந்த திறவுகோலைப் பயன்படுத்துகிறது. ஒரு terminal-ல் எத்தனை வண்ணங்கள் உள்ளன, எந்த bytes cursor-ஐ வரிசை 12, நிரல் 40-க்கு நகர்த்தும், F5 key எந்த bytes-ஐ அனுப்பும், மற்றும் அது வடிவமைக்கப்பட்ட அடிக்கோடிடுதலை (styled underline) வரைய முடியுமா போன்ற தகவல்களை அந்த விளக்கம் பதிவு செய்கிறது. Linux-ல் உள்ள பெரும்பாலான text user interface-கள் கட்டமைக்கப்பட்டுள்ள ncurses நூலகம், தொடக்கத்தின்போது அந்த விளக்கத்தைப் படிக்கிறது. top, less, nano மற்றும் watch போன்ற நிரல்கள் இது இல்லாமல் ஒரு திரையைக்கூட உருவாக்க முடியாது.
உங்கள் சொந்த உள்ளீட்டைப் பாருங்கள்:
echo "$TERM"
tput longname
infocmp -1 | head -20tput longname என்பது TERM குறிப்பிடும் எதற்கும் மனிதர்கள் வாசிக்கக்கூடிய விளக்கத்தை அச்சிடுகிறது. xterm-256color-க்கு இது பின்வருவனவற்றை அச்சிடுகிறது:
xterm with 256 colorsinfocmp -1 முழு உள்ளீட்டையும் decompile செய்து, ஒவ்வொரு capability-யையும் தனித்தனி வரியில் அச்சிடுகிறது. இரண்டு கட்டளைகளும் வேலை செய்தால், இந்த கணினியில் உள்ள தரவுத்தளத்திற்கு இந்த terminal பற்றித் தெரியும் என்று அர்த்தம். SSH இணைப்பின் மறுமுனையிலும் உங்களுக்கு இந்த நிலைதான் தேவை.
SSH வழியாக மட்டும் ஏன் இது செயலிழக்கிறது
SSH, terminal-ன் பெயரை மட்டுமே அனுப்புகிறது, வேறெதையும் அனுப்பாது. client ஒரு pseudo terminal-ஐக் கோரும்போது, TERM அந்த வேண்டுகோளுடன் பயணிக்கிறது. OpenSSH கையேடு இதைத் தெளிவாகக் கூறுகிறது: "pseudo-terminal கோரப்படும் போதெல்லாம் TERM environment variable எப்போதும் அனுப்பப்படும், ஏனெனில் நெறிமுறைக்கு (protocol) அது தேவைப்படுகிறது". எனவே, உங்கள் VPS-ல் உள்ள login shell-க்கு TERM=xterm-ghostty, அல்லது xterm-kitty, அல்லது உங்கள் emulator பயன்படுத்தும் ஏதோ ஒரு பெயர் கிடைக்கிறது. அந்தப் பெயருக்கான விளக்கம் உங்கள் laptop-ல் மட்டுமே உள்ளது, உங்கள் laptop-ன் database-ல் அது சேமிக்கப்பட்டுள்ளது. உங்கள் emulator உருவாக்கப்படுவதற்கு முன்பே உருவாக்கப்பட்ட ஒரு server-க்கு அந்தப் பெயர் தெரிந்திருக்க வாய்ப்பில்லை. SSH இணைப்பிலேயே terminal விளக்கங்களை நகலெடுக்கும் வசதி எதுவும் இல்லை, இது வேண்டுமென்றே செய்யப்பட்ட ஒன்று: இந்த நெறிமுறை ஒரு பெயரை மட்டுமே சுமந்து செல்கிறது, திறன்களின் தொகுப்பை (capability dump) அல்ல.
நிச்சயமாக இல்லாத ஒரு பெயரைப் பயன்படுத்தி, உங்கள் கணினியிலேயே இந்தத் தோல்வியை மீண்டும் உருவாக்கிப் பாருங்கள்:
TERM=xterm-nosuchthing tput colors
echo "$?"tput: unknown terminal "xterm-nosuchthing"இதன் exit status 3 ஆகும். இது தெரியாத terminal வகை அல்லது விடுபட்ட database என்று ncurses ஆவணப்படுத்துகிறது. ஒவ்வொரு curses நிரலும் இதே தேடலைத்தான் செய்கிறது, எனவே ஒரு பெயர் விடுபட்டாலும், ஒவ்வொரு நிரலும் வெவ்வேறு செய்திகளைக் காட்டினாலும், அனைத்திற்கும் ஒரே ஒரு காரணம் மட்டுமே உள்ளது. nano, Error opening terminal: xterm-nosuchthing. உடன் நின்றுவிடும்; இது தொடக்கத்தின் போது விளக்கத்தை ஏற்ற முடியாதபோது ஏற்படும் நிலையான ncurses தோல்வியாகும். vim, E558: Terminal entry not found in terminfo-ஐ அச்சிடுகிறது. less, WARNING: terminal is not fully functional-ஐ அச்சிடுகிறது. பாதியளவு வேலை செய்யும் ஒரு pager-ம், தொடங்க மறுக்கும் ஒரு editor-ம் தொடர்பில்லாத பிழைகள் போலத் தோன்றலாம். ஆனால், அவை இரண்டும் ஒரே விடுபட்ட கோப்பினால் ஏற்படும் விளைவுகளே.
ncurses எங்கு தேடுகிறது
ncurses ஒரு குறிப்பிட்ட வரிசையில் தேடுகிறது, இது terminfo(5)-ல் ஆவணப்படுத்தப்பட்டுள்ளது:
$TERMINFO, இது அமைக்கப்பட்டிருந்தால். அந்த அடைவு (directory) மட்டுமே தேடப்படும்.$HOME/.terminfo.$TERMINFO_DIRS-ல் பட்டியலிடப்பட்டுள்ள ஒவ்வொரு அடைவும்.- கம்பைல் செய்யப்பட்ட இடங்கள், Debian மற்றும் Ubuntu-வில் இவை
/etc/terminfo,/lib/terminfoமற்றும்/usr/share/terminfoஆகியவற்றை உள்ளடக்கும்.
மேலே உள்ள பாதைகளை நம்புவதற்குப் பதிலாக, உங்கள் server-ல் உள்ள ncurses build எந்தப் பட்டியலைப் பயன்படுத்துகிறது என்பதை அறிய infocmp -D கட்டளையை இயக்கவும். படி 2-ல் தான் முழு தந்திரமும் உள்ளது. எந்தவொரு system அடைவுக்கும் முன்பாக உங்கள் home directory தேடப்படும், எனவே ~/.terminfo-ன் கீழ் உள்ள ஒரு கோப்பு, எந்தவொரு package-ஐயும் நிறுவாமலும் root அனுமதி இல்லாமலும் உங்கள் கணக்கிற்கான lookup சிக்கலைச் சரிசெய்துவிடும்.
தீர்வு 1: server-க்கு ஏற்கனவே தெரிந்த ஒரு TERM-ஐப் பயன்படுத்துதல்
மிக விரைவான தீர்வு, ஒரு குறிப்பிட்ட இணைப்பிற்கு மட்டும் வேறு ஒரு terminal பெயரை வழங்குவதாகும்:
TERM=xterm-256color ssh user@203.0.113.10உங்கள் laptop-ல் உள்ள ~/.ssh/config கோப்பில் அந்த host-க்கு இதை நிரந்தரமாக்குங்கள்:
Host vps1
HostName 203.0.113.10
User deploy
SetEnv TERM=xterm-256colorSetEnv-க்கு client பக்கத்தில் OpenSSH 7.8 அல்லது அதற்குப் பிந்தைய பதிப்பு தேவை, இது ஆகஸ்ட் 2018-ல் வெளியிடப்பட்டது. TERM என்பது server-ன் அனுமதி தேவையில்லாத ஒரே variable ஆகும்: "SendEnv-ஐப் போலவே, TERM variable-ஐத் தவிர, server அந்த environment variable-ஐ ஏற்கத் தயாராக இருக்க வேண்டும்" என்று கையேடு குறிப்பிடுகிறது. எனவே, AcceptEnv வரி இல்லாத, பாதுகாப்பான sshd அமைப்பிலும் இது வேலை செய்யும்.
இதன் விளைவு: சாதாரண xterm-256color-க்கு அப்பால் உங்கள் emulator வழங்கும் அனைத்து வசதிகளும் கிடைக்காது. இதில் RGB capability மூலம் வழங்கப்படும் 24-bit நிறங்கள் மற்றும் Smulx மூலம் வழங்கப்படும் ஸ்டைல் செய்யப்பட்ட அடிக்கோடுகள் (underlines) அடங்கும். நிரல்களால் இந்த வசதிகளைக் கண்டறிய முடியாது என்பதால், அவை 256 நிறங்கள் மற்றும் சாதாரண அடிக்கோட்டிற்கு மாறிவிடும். திரை வேலை செய்யும், ஆனால் நீங்கள் தேர்ந்தெடுத்த terminal-ஐ விடக் குறைந்த வசதிகளையே கொண்டிருக்கும்.
server-ல் உள்ள உங்கள் .bashrc கோப்பில் export TERM=xterm-256color-ஐச் சேர்ப்பதன் மூலம் இதைச் சரிசெய்ய வேண்டாம். அந்த கோப்பு ஒவ்வொரு இணைப்பிற்கும் இயங்கும், server-க்குத் தெரிந்த terminal-லிருந்து வரும் இணைப்புகளும் இதில் அடங்கும். இதனால், ஏற்கனவே சரியாக இயங்கிக்கொண்டிருக்கும் sessions-ன் தரம் குறைந்துவிடும். இந்த மாற்றத்தை client பக்கத்திலேயே வைத்திருங்கள், ஏனெனில் அங்குதான் நீங்கள் எந்த emulator-ஐப் பயன்படுத்துகிறீர்கள் என்பது உங்களுக்குத் தெரியும்.
தீர்வு 2: உங்கள் terminfo உள்ளீட்டை ஒருமுறை server-க்கு அனுப்பவும்
இந்தத் தீர்வு உங்கள் emulator-ன் அமைப்பை மாற்றாமல் அப்படியே வைத்திருக்கும். உள்ளீட்டை உள்ளூர் கணினியில் decompile செய்து, SSH வழியாக அனுப்பி, மறுமுனையில் compile செய்யவும்:
infocmp -x | ssh user@203.0.113.10 -- tic -x -infocmp -x உங்கள் தற்போதைய TERM-க்கான உள்ளீட்டை source text-ஆக அச்சிடும், இதில் extended (பயனர் வரையறுத்த) திறன்களும் அடங்கும். tic -x அந்த source-ஐ server-ல் மீண்டும் binary கோப்பாக compile செய்யும். இருபுறமும் உள்ள -x முக்கியமானது, ஏனெனில் அது இல்லையெனில் Smulx போன்ற திறன்கள் பரிமாற்றத்தின் போது நீக்கப்பட்டு, உங்கள் terminal-ன் தரம் குறைந்த நகல் மட்டுமே செல்லும்.
tic முடிந்தவரை system directory-ல் எழுதும், அங்கு எழுதும் அனுமதி இல்லையெனில் $HOME/.terminfo-க்குத் திரும்பும். VPS-ல் உள்ள ஒரு சாதாரண கணக்கிற்கு home directory கிடைக்கும், இதுவே நமக்குத் தேவையானது. நீங்கள் சேருமிடத்தின் பெயரையும் குறிப்பிடலாம்:
infocmp -x | ssh user@203.0.113.10 -- tic -x -o '~/.terminfo' /dev/stdin~/.terminfo-ஐச் சுற்றியுள்ள மேற்கோள் குறிகள் அலங்காரத்திற்காக அல்ல. ssh கட்டளைச் சொற்களை ஒரே string-ஆக இணைத்து remote shell-க்கு அனுப்பும், எனவே மேற்கோள் காட்டப்படாத ~ முதலில் உங்கள் உள்ளூர் shell-ஆல் விரிவாக்கப்படும். நீங்கள் ஒரு literal /home/yourname/.terminfo-ஐ அனுப்பினால், அது உங்கள் கணக்கு வேறு பெயரில் இருக்கும் இயந்திரத்திற்குச் செல்லும். tic அனுமதி பிழையுடன் தோல்வியடையும், அல்லது ncurses தேடாத ஒரு பாதையில் எழுதும். tilde-ஐ மேற்கோள் குறிக்குள் வைத்தால், remote shell அதைச் சரியாக விரிவாக்கும்.
Login செய்து சரிபார்க்கவும்:
ssh user@203.0.113.10
tput longname
ls -R ~/.terminfotput longname உங்கள் terminal-ன் விளக்கத்தை அச்சிடுகிறது என்றால், தேடல் வெற்றிகரமாக முடிந்தது என்று அர்த்தம், மேலும் ls terminal பெயரின் முதல் எழுத்தில் தொடங்கும் subdirectory-ல் compile செய்யப்பட்ட கோப்பைக் காட்டும். பிறகு top-ஐ இயக்கவும், அல்லது அதே library மூலம் திரையை மீண்டும் வரையும் watch -n1 uptime, ஒரு உண்மையான curses program திரையைச் சரியாக வரைகிறதா என்பதை உறுதிப்படுத்தவும்.
இதன் செலவு: ஒவ்வொரு server-க்கும் ஒரு படிமுறை, மேலும் இந்த உள்ளீடு ஒரு இயந்திரத்தில் உள்ள ஒரு கணக்கின் home directory-ல் மட்டுமே இருக்கும். VPS-ஐ மீண்டும் உருவாக்கினால் (rebuild) இது அழிந்துவிடும். ஒரே நேரத்தில் பல server-களை நிர்வகிக்கும் மற்றும் தயார் செய்யும் கருவியில் இந்தக் கட்டளையைச் சேர்த்தால், புதிய host வரும்போதே இந்த உள்ளீடு compile செய்யப்பட்டு இருக்கும்.
தீர்வு 3: extended terminfo database-ஐ நிறுவுதல்
உங்களிடம் root அனுமதி இருந்து, கணினியில் உள்ள அனைத்து கணக்குகளுக்கும் இந்த பெயர் சரியாகச் செயல்பட வேண்டும் எனில்:
sudo apt update
sudo apt install ncurses-term
tput -T xterm-ghostty longnamencurses-term தொகுப்பில் அடிப்படை நிறுவலில் விடுபட்ட terminal விளக்கங்கள் உள்ளன. இது root மற்றும் பிற அனைத்து பயனர்களுக்கும் பெயரைச் சரிசெய்கிறது; தீர்வு 2-ல் இது சாத்தியமில்லை.
உங்கள் distribution தொகுத்த ncurses release-ல் உங்கள் terminal-ன் entry இருந்தால் மட்டுமே இது உதவும், எனவே ஊகிப்பதற்குப் பதிலாகச் சரிபார்க்கவும். Ubuntu 24.04-ல் ncurses-bin 6.4+20240113-1ubuntu2.1 உள்ளது (ஆகஸ்ட் 2026 நிலவரப்படி). Ghostty-ன் entry ncurses 6.5-20241228-ல் சேர்க்கப்பட்டது, இது புதியது. எனவே, Ubuntu 24.04-ல் உள்ள apt install ncurses-term-ஆல் எத்தனை முறை இயக்கினாலும் ஒரு xterm-ghostty entry-ஐ உருவாக்க முடியாது. tput -T <name> longname என்பது இதற்கான சரிபார்ப்பு முறை: entry இருக்கும்போது அது விளக்கத்தை அச்சிடும், இல்லாதபோது unknown terminal உடன் exit status 3-ஐக் கொடுக்கும்.
முழு தொகுப்பையும் நிறுவத் தேவையில்லாமல், ஒரு குறிப்பிட்ட entry-ஐ மட்டும் system-wide நிறுவ, source-ஐ நகலெடுத்து root-ஆக compile செய்யவும்:
infocmp -x | ssh user@203.0.113.10 -- 'cat > /tmp/term.src'
ssh -t user@203.0.113.10 -- sudo tic -x -o /usr/share/terminfo /tmp/term.srcஇரண்டாவது கட்டளையில் உள்ள -t ஒரு pseudo terminal-ஐ ஒதுக்குகிறது, அப்போதுதான் sudo கடவுச்சொல்லைக் கேட்க முடியும். இது இல்லையெனில், sudo ஆனது sudo: no tty present and no askpass program specified பிழையுடன் வெளியேறக்கூடும்.
பரிமாற்றத்தை emulator-ஐ செய்ய விடுங்கள்
சில emulators, fix 2-ஐ உங்களுக்காகச் செய்யும் ஒரு helper-ஐ வழங்குகின்றன. kitty-ல் ஒரு ssh kitten உள்ளது: kitten ssh myserver, remote host-க்கு kitty-ன் terminfo-ஐத் தானாகவே இணைத்து நகலெடுக்கிறது. அதன் ஆவணங்கள், மேலே விவரிக்கப்பட்ட காரணத்திற்காக tilde-ஐ escape செய்து, infocmp -a xterm-kitty | ssh myserver tic -x -o \~/.terminfo /dev/stdin என்ற manual முறையையும் வழங்குகின்றன. Ghostty, infocmp -x xterm-ghostty | ssh YOUR-SERVER -- tic -x --ஐ ஆவணப்படுத்துகிறது மற்றும் shell integration (ssh-env மற்றும் ssh-terminfo) ஆகியவற்றுடன், இரண்டு தீர்வுகளையும் தானியக்கமாக்கும் ஒரு +ssh செயலையும் வழங்குகிறது.
இந்த helper-கள், நீங்கள் கையால் இயக்கிய அதே கட்டளைகளைத்தான் இயக்குகின்றன. manual முறையைத் தெரிந்து வைத்திருப்பது அவசியம், ஏனெனில் இணைப்பு வேறொரு இடத்தில், ஒரு jump host-ல் அல்லது ஒரு script-க்குள் தொடங்கும் போது இந்த helper-களால் செயல்பட முடியாது.
பிழை மீண்டும் வரும்போது
sudo -i-ன் கீழ். root-ஆக ஒரு login shell-ஐப் பயன்படுத்தும்போது HOME=/root அமலில் இருக்கும், மேலும் sudo உங்கள் TERM-ஐத் தக்கவைக்கும். இப்போது ncurses /root/.terminfo-ஐத் தேடுகிறது, அதில் உங்கள் entry இல்லை என்பதால், root-க்கு மட்டும் இந்தத் தோல்வி மீண்டும் நிகழ்கிறது. sudo -i env மூலம் இதை உறுதிசெய்து, HOME மற்றும் TERM வரிகளைப் படிக்கவும். அந்த entry-ஐ system directory-ல் நிறுவவும் அல்லது /root/.terminfo-ல் ஒரு நகலை வைக்கவும்.
tmux அல்லது screen உள்ளே. இவை தங்களுக்குள் இயங்கும் நிரல்களுக்குத் தனிப்பட்ட TERM-ஐ அமைக்கும், பொதுவாக இது screen-256color அல்லது tmux-256color ஆக இருக்கும். பழைய server-க்கு screen-256color தெரியும், ஆனால் tmux-256color தெரியாமல் இருக்கலாம்; எனவே, outer shell சரியாகச் செயல்படும், ஆனால் session-க்குள் உள்ள அனைத்தும் தோல்வியடையும். காரணம் ஒன்றுதான், ஆனால் பெயர் வேறானது. server-ல் எது உள்ளது என்பதை அறிய tput -T tmux-256color longname-ஐ இயக்கவும். ஒரு tmux-ஐ அடிப்படையாகக் கொண்ட terminal workbench நீங்கள் இன்னும் சரிசெய்யாத host-ல் இணையும் வரை இந்தச் சிக்கலை மறைத்து வைத்திருக்கும்.
புதிய server-ல். ~/.terminfo என்பது ஒவ்வொரு கணக்கிற்கும் ஒவ்வொரு இயந்திரத்திற்கும் தனிப்பட்டது, எனவே புதிதாக உருவாக்கப்பட்ட VPS மீண்டும் காலியாகவே தொடங்கும்.
திரையில் எழுத்துக்கள் தெரிகின்றன, ஆனால் விசைகள் (keys) சரியாகச் செயல்படவில்லை. திரை சரியாகத் தெரிந்தாலும், Home, End அல்லது function keys தவறான எழுத்துக்களை உள்ளிட்டால், terminal-க்கு பொருந்தாத ஒரு entry-ஐ அந்தப் பெயர் கண்டறிந்துள்ளது என்று அர்த்தம். விசைகளின் வரிசைமுறைகள் (key sequences) திரையை வரைவதற்கான அதே terminfo entry-லிருந்துதான் வருகின்றன, எனவே தோராயமான entry-ஐப் பயன்படுத்தினால் விசைகளும் தோராயமாகவே செயல்படும். xterm-லிருந்து மாறுபட்ட emulator-ல் முதல் தீர்வைப் பயன்படுத்தினால் இதுவே நடக்கும். இரண்டாவது தீர்வே இதற்குச் சரியான வழி, ஏனெனில் உங்கள் emulator-க்கான உண்மையான entry-ல் மட்டுமே சரியான வரிசைமுறைகள் இருக்கும்.
FAQ
SSH வழியாக இணைக்கும்போது ஏன் "unknown terminal type" என்று வருகிறது?
உங்கள் terminal-ன் விவரங்களைச் சேமித்து வைக்கும் database, server-ல் இருக்க வேண்டும் என்பதே இதற்குக் காரணம். உங்கள் emulator, தான் இயங்கும் கணினியில் மட்டுமே அதன் விவரங்களை நிறுவுகிறது, எனவே local programs-க்கு எந்த சிரமமும் இருப்பதில்லை. SSH, TERM-ன் மதிப்பை மட்டுமே அனுப்புகிறது, ஏனெனில் pseudo-terminal கோரிக்கையுடன் அந்தப் பெயரை மட்டுமே protocol எடுத்துச் செல்கிறது. remote ncurses அந்தப் பெயரை remote database-ல் தேடும்போது எதுவும் கிடைக்காது, எனவே initscr தோல்வியடைந்து program நின்றுவிடும்.
server-ல் root அனுமதி இல்லாமலேயே இதைச் சரிசெய்ய முடியுமா?
ஆம். ncurses எந்தவொரு system directory-க்கும் முன்பாக $HOME/.terminfo-ஐத் தேடும், எனவே உங்கள் account-க்கு அங்கே ஒரு entry இருந்தால் போதுமானது. ஒவ்வொரு server-க்கும் ஒருமுறை infocmp -x | ssh user@host -- tic -x --ஐ இயக்கவும். ஒரு unprivileged account-க்கு system path-ல் எழுத அனுமதி இல்லாதபோது, tic உங்கள் home directory-ல் எழுதும். மீண்டும் login செய்து, lookup சரியாக வேலை செய்கிறதா என்பதை உறுதிப்படுத்த tput longname-ஐ இயக்கவும்.
ஒரு host-க்கு TERM=xterm-256color-ஐ அமைப்பதால் நான் எதை இழக்கிறேன்?
xterm-256color entry-க்கு அப்பால் உங்கள் emulator விவரிக்கும் அனைத்து வசதிகளையும் இழப்பீர்கள்; உதாரணமாக, RGB வழியாக 24-bit colour மற்றும் Smulx வழியாக styled underlines போன்றவை கிடைக்காது. Programs-க்கு அந்த வசதிகள் தெரியாது என்பதால், அவை மிக நெருக்கமான fallback-ஐப் பயன்படுத்தும். Function-key sequences உங்கள் உண்மையான terminal-லிருந்து மாறுபடலாம். இந்த அமைப்பை server-ல் உள்ள .bashrc-ல் வைப்பதற்குப் பதிலாக, client-ல் உள்ள ~/.ssh/config-ல் வைக்கவும்; இல்லையெனில் ஏற்கனவே சரியாக வேலை செய்யும் terminal-களின் sessions-ம் தரம் குறைந்துவிடும்.
sudo -i செய்த பிறகு ஏன் மீண்டும் பிழை வருகிறது?
sudo -i, root-ஆக login shell-ஐத் தொடங்கும்போது HOME=/root-ஐப் பயன்படுத்துகிறது, அதே சமயம் உங்கள் TERM மதிப்பை அப்படியே வைத்திருக்கிறது. அப்போது ncurses உங்கள் home directory-க்குப் பதிலாக /root/.terminfo-ஐத் தேடும், அங்கே எதுவும் கிடைக்காது. எனவே, உங்கள் account-ல் சரிசெய்யப்பட்ட அதே பிழையை root account-ல் காண்பீர்கள். sudo -i env-ஐ இயக்கி, HOME மற்றும் TERM வரிகளைச் சரிபார்க்கவும். sudo tic -x -o /usr/share/terminfo மூலம் அந்த entry-ஐ system directory-ல் compile செய்யவும் அல்லது /root/.terminfo-க்கு நகலெடுக்கவும்.
apt install ncurses-term எப்போதும் இதைச் சரிசெய்துவிடுமா?
இல்லை. உங்கள் distribution தொகுத்த ncurses release-ல் இருந்த entry-களை மட்டுமே இது சேர்க்கும். Ubuntu 24.04, ncurses 6.4-ஐ (ஆகஸ்ட் 2026 நிலவரப்படி ncurses-bin 6.4+20240113-1ubuntu2.1) வழங்குகிறது. Ghostty-ன் entry ncurses 6.5-20241228-ல் தான் சேர்க்கப்பட்டது, எனவே அந்த package-ல் அது இருக்காது. package-ஐ நம்புவதற்கு முன்பு tput -T <name> longname மூலம் சரிபார்க்கவும்; ஒருவேளை terminal தெரியவில்லை என்று காட்டினால், நீங்களே அந்த entry-ஐச் சேர்க்கவும்.