Ubuntu 를 새로 설치하고 apt-get 등의 작업을 할때 Bad header line 이라는 에러와 함께 패키지 정보를 가져오지 못하고 에러가 발생하는 경우가 있다.

이때에는 apt-get clean 이후 apt-get update 등을 수행해도 제대로 동작하지 않는다.

이를 해결하기 위해서는 다음과 같이 수행한다.

  • Update Manger > Settings... > Ubuntu Software > Download from > Main Server
  • 아래의 명령으로 source list를 삭제한 후 새로 update를 수행
    • sudo rm -rf /var/lib/apt/lists/* && sudo apt-get update

위의 순서대로 수행하면 apt-get update 가 에러없이 수행된다.


만약 사내등에서 Proxy 를 쓰고 있다면 다음과 같이 proxy 설정을 해주어야 한다.

  • /etc/apt/apt.conf 파일에 해당 프록시 주소를 설정한다.
    • Acquire::http::Proxy "http://111.111.111.111:8080/"; Acquire::https::Proxy "https://111.111.111.111:8080/";

  • 이후 apt-get clean 과 apt-get update 를 수행한다.


Reference: http://askubuntu.com/questions/162782/apt-get-update-bad-header-line-on-all-udpates

Posted by leechwin

Bash Strict Mode

OS/Ubuntu 2016.01.03 20:09

Bash Shell Script 작성시 다음과 같이 시작하면 안전한 스크립트를 작성 할 수 있다.

#!/bin/bash
set -euo pipefail
IFS=$'\n\t'
  • set -e 옵션
    • 첫번째 에러에서 스크립트를 취소(0이 아닌 상태로 종료하는명령어)하는 옵션
    • 스크립트 에러시 정상종료상태인 0을 리턴받아 다음 스크립트가 진행된다면 마지막 스크립트까지 진행되는 경우 원하지 않는 결과가 수행될 수 있다.
  • set -u 옵션
    • 정의 안 된 변수 사용시 에러 메세지 출력후 강제 종료하는 옵션
  • set -o pipefail 옵션
    • pipeline으로 실행된 경우 에러발생시 에러코드 및 메시지를 전달하는 옵션

Reference


Posted by leechwin

리눅스에서 sh 파일을 실행할때 가끔 다음과 같은 에러가 발생하는 경우가 있다.

  • /bin/bash^M: bad interpreter: No such file or directory

VI로 확인을 해보아도 스크립트내용은 이상이 없는데, 다음 명령어로 해당 sh 파일을 열어보도록 하자.

  • vi -b <file>

확인을 해보면 개행마다 ^M이라는 이상한 문자가 붙어있는 것을 볼 수 있다.

원인으로는 이 파일이 아마도 윈도우즈에서 생성되어서 개행마다 carriage return character 인 "^M"이 붙어서 리눅스에서 실행시 에러를 낸다.

참고로 윈도우즈의 개행은 CR LF 이고, 리눅스에서는 LF 이다.

  • CR (carriage return)
  • LF (line feed)
위의 해결책은 vi -b 로 진입하여 CR에 해당하는 "^M" 문자를 모두 삭제하거나, 리눅스에서 새로 파일을 만들어 작성하여 실행하면 제대로 동작한다.

vi 에서 수정시에는 다음을 참고한다.
  • :%s/^M$//
  • 참고로 ^M 문자는 Ctrl + V, Ctrl + M을 차례로 누르면 된다.



Posted by leechwin

Ubuntu 내 Dash home에서 약어로 프로그램을 찾아 실행하는 등의 작업을 할때, 프로그램을 삭제하였는데 메뉴에 남아있거나, 보이기 싫은 경우가 있다.



이럴때에는 다음 디렉토리에서 해당하는 프로그램을 찾아 삭제하면 Dash home에서 보이지 않게 된다.

  • /usr/share/applications
  • /usr/local/share/applications
  • /.local/share/applications
  • /.local/share/desktop-directories


'OS > Ubuntu' 카테고리의 다른 글

Bash Strict Mode  (0) 2016.01.03
[Ubuntu] sh 파일 실행시 "/bin/bash^M" 에러가 발생하는 경우  (0) 2015.12.29
[Ubuntu] Dash home에서 불필요한 프로그램 shortcut 삭제  (0) 2015.12.24
[Shell] Bash shell 팁  (0) 2015.12.20
[Ubuntu] time  (0) 2015.12.20
[Ubuntu] disk usage  (0) 2015.12.20
Posted by leechwin

Bash Shell에서 편리한 팁들

  • Tab : argument 완성
  • Ctrl + R : command history 에서 검색
  • Ctrl + W : 마지막 단어 삭제
  • Ctrl + U : 라인 전체 삭제
  • Ctrl + A : 라인 시작점으로 이동
  • Ctrl + E : 라인 끝지점으로 이동
  • "cd -" : 이전 디렉토리로 이동


'OS > Ubuntu' 카테고리의 다른 글

[Ubuntu] sh 파일 실행시 "/bin/bash^M" 에러가 발생하는 경우  (0) 2015.12.29
[Ubuntu] Dash home에서 불필요한 프로그램 shortcut 삭제  (0) 2015.12.24
[Shell] Bash shell 팁  (0) 2015.12.20
[Ubuntu] time  (0) 2015.12.20
[Ubuntu] disk usage  (0) 2015.12.20
UNIX TOOLBOX  (2) 2015.08.26
Posted by leechwin

[Ubuntu] time

OS/Ubuntu 2015.12.20 18:04

특정 명령의 실행시간을 알고 싶을때 time 명령을 통해 확인 가능하다.

  • time [command]
  • ex) time du -sh * | sort -n -r


'OS > Ubuntu' 카테고리의 다른 글

[Ubuntu] Dash home에서 불필요한 프로그램 shortcut 삭제  (0) 2015.12.24
[Shell] Bash shell 팁  (0) 2015.12.20
[Ubuntu] time  (0) 2015.12.20
[Ubuntu] disk usage  (0) 2015.12.20
UNIX TOOLBOX  (2) 2015.08.26
[Ubuntu] libssl-dev  (0) 2014.08.17
Posted by leechwin

[Ubuntu] disk usage

OS/Ubuntu 2015.12.20 17:31

현재 디렉토리 혹은 하위의 디렉토리의 disk usage 관련 정보를 shell에서 du 명령을 통해 확인 가능하다.


Usage: du [OPTION]... [FILE]... 

    or:  du [OPTION]... --files0-from=F

Summarize disk usage of the set of FILEs, recursively for directories.


Mandatory arguments to long options are mandatory for short options too.

  -0, --null            end each output line with NUL, not newline

  -a, --all             write counts for all files, not just directories

      --apparent-size   print apparent sizes, rather than disk usage; although

                          the apparent size is usually smaller, it may be

                          larger due to holes in ('sparse') files, internal

                          fragmentation, indirect blocks, and the like

  -B, --block-size=SIZE  scale sizes by SIZE before printing them; e.g.,

                           '-BM' prints sizes in units of 1,048,576 bytes;

                           see SIZE format below

  -b, --bytes           equivalent to '--apparent-size --block-size=1'

  -c, --total           produce a grand total

  -D, --dereference-args  dereference only symlinks that are listed on the

                          command line

  -d, --max-depth=N     print the total for a directory (or file, with --all)

                          only if it is N or fewer levels below the command

                          line argument;  --max-depth=0 is the same as

                          --summarize

      --files0-from=F   summarize disk usage of the

                          NUL-terminated file names specified in file F;

                          if F is -, then read names from standard input

  -H                    equivalent to --dereference-args (-D)

  -h, --human-readable  print sizes in human readable format (e.g., 1K 234M 2G)

      --inodes          list inode usage information instead of block usage

  -k                    like --block-size=1K

  -L, --dereference     dereference all symbolic links

  -l, --count-links     count sizes many times if hard linked

  -m                    like --block-size=1M

  -P, --no-dereference  don't follow any symbolic links (this is the default)

  -S, --separate-dirs   for directories do not include size of subdirectories

      --si              like -h, but use powers of 1000 not 1024

  -s, --summarize       display only a total for each argument

  -t, --threshold=SIZE  exclude entries smaller than SIZE if positive,

                          or entries greater than SIZE if negative

      --time            show time of the last modification of any file in the

                          directory, or any of its subdirectories

      --time=WORD       show time as WORD instead of modification time:

                          atime, access, use, ctime or status

      --time-style=STYLE  show times using STYLE, which can be:

                            full-iso, long-iso, iso, or +FORMAT;

                            FORMAT is interpreted like in 'date'

  -X, --exclude-from=FILE  exclude files that match any pattern in FILE

      --exclude=PATTERN    exclude files that match PATTERN

  -x, --one-file-system    skip directories on different file systems

      --help     display this help and exit

      --version  output version information and exit 


  • ex) 현재 디렉토리의 하위 디렉토리의 용량을 순서대로 조회
    • du -sh * | sort -n -r


'OS > Ubuntu' 카테고리의 다른 글

[Shell] Bash shell 팁  (0) 2015.12.20
[Ubuntu] time  (0) 2015.12.20
[Ubuntu] disk usage  (0) 2015.12.20
UNIX TOOLBOX  (2) 2015.08.26
[Ubuntu] libssl-dev  (0) 2014.08.17
[Ubuntu] build-essential  (0) 2014.08.17
Posted by leechwin

UNIX TOOLBOX

OS/Ubuntu 2015.08.26 17:45

Unix/Linux/BSD command 를 잘 정리해놓은 링크

PDF버전


'OS > Ubuntu' 카테고리의 다른 글

[Ubuntu] time  (0) 2015.12.20
[Ubuntu] disk usage  (0) 2015.12.20
UNIX TOOLBOX  (2) 2015.08.26
[Ubuntu] libssl-dev  (0) 2014.08.17
[Ubuntu] build-essential  (0) 2014.08.17
[Ubuntu] Terminal 관련 단축키  (0) 2014.06.08
Posted by leechwin

[Ubuntu] libssl-dev

OS/Ubuntu 2014.08.17 19:26

 Ubuntu 에서 아파치웹서버나 TLS/SSL 에 관한 서비스 개발등을 이용하려고 할때 다음과 같은 에러가 발생하는 경우가 있다.

  • SSL/TLS libraries were missing or unusable

 이런경우는 SSL 개발에 관련된 라이브러리가 설치가 안되어서 발생하는 문제로 다음 명령어로 libssl-dev

build-essential 패키지를 설치하면 해결이 된다.

  • sudo apt-get install libssl-dev


 libssl-dev 패키지는 SSL 개발에 필요한 라이브러리와 헤더파일등을 가지고 있으며 아래에 링크에 자세한 내용을 살펴 볼수 있다.


'OS > Ubuntu' 카테고리의 다른 글

[Ubuntu] disk usage  (0) 2015.12.20
UNIX TOOLBOX  (2) 2015.08.26
[Ubuntu] libssl-dev  (0) 2014.08.17
[Ubuntu] build-essential  (0) 2014.08.17
[Ubuntu] Terminal 관련 단축키  (0) 2014.06.08
[Ubuntu] grep 으로 원하는 문자열이 들어있는 파일 검색  (0) 2013.04.23
Posted by leechwin

 Ubuntu 에서 C, C++ 등을 개발하려고 컴파일을 할 때 다음과 같은 에러 메시지가 나오는 경우가 있다.

  • stdio.h: No such file or directory

 이런 경우는 개발에 필요한 stdio.h 등의 기본 라이브러리가 설치가 안되어서 발생하는 문제로 다음 명령어로 build-essential 패키지를 설치하면 해결이 된다.

  • sudo apt-get install build-essential


  build-essential 패키지는 개발에 필요한 기본 라이브러리와 헤더파일등을 가지고 있으며 아래에 링크에 자세한 내용을 살펴 볼수 있다.


'OS > Ubuntu' 카테고리의 다른 글

UNIX TOOLBOX  (2) 2015.08.26
[Ubuntu] libssl-dev  (0) 2014.08.17
[Ubuntu] build-essential  (0) 2014.08.17
[Ubuntu] Terminal 관련 단축키  (0) 2014.06.08
[Ubuntu] grep 으로 원하는 문자열이 들어있는 파일 검색  (0) 2013.04.23
[Ubuntu] 한글 입력 설정  (1) 2013.04.19
Posted by leechwin