1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Cài đặt và Quản lý phần mềm trên Linux

11 785 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 11
Dung lượng 187,35 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ex: để cung cấp Public key cho yum từ livna # rpm --import http://rpm.livna.org/RPM-LIVNA-GPG-KEY-i386 Tìm một phần mềm # yum search package-name Liệt kê tất cả các gói phần mềm đã được

Trang 1

Cài đặt và Quản lý phần mềm trên Linux

1 Redhat Package Manager

Được phát triển đầu tiên bởi Redhat, sau đó được các phiên bản linux khác sử dụng rộng rãi: Fedora, Mandrake, SuSe

Gói rpm có dạng: Tên package-phiên bản-số hiệu.kiến trúc.rpm

Cài đặt bằng lệnh rpm

Đây là kiểu cài đặt phổ biến nhất của linux

Dễ cài đặt, dễ remove

Cài đặt một package

# rpm -ivh <package_name.rpm>

Một số trường hợp lỗi

Package đã cài rồi : package is already installed

Xung đột tập tin : …package…conflicts with…

Phụ thuộc vào package khác : failed dependecies

# rpm -ivh gcc-4.1.2-51.el5.i386.rpm glibc-devel-2.5-65.i386.rpm

glibc-headers-2.5-65.i386.rpm kernel-headers-2.6.18-274.el5.i386.rpm cpp-4.1.2-51.el5.i386.rpm

Upgrade một package

# rpm -Uvh <package_name.rpm>

Khi upgrade RPM sẽ xóa các phiên bản cũ của package.Có thể dùng lệnh này để cài đặt, khi đó

sẽ không có phiên bản cũ nào bị xóa đi

Gỡ bỏ một package

# rpm -e <package_name>

Một số trường hợp lỗi:

Package được xóa có liên quan đến package khác : “removing these packages would break dependecies”

# rpm -e gcc

Truy vấn một package

# rpm -qa | grep <package_name>

# rpm -qf /etc/passwd

setup-2.5.58-9.el5

# rpm -qf /bin/ls

Trang 2

Một số option khác sử dụng trong cài đặt:

nodeps: cho phép cài đặt, bỏ qua các gói phụ thuộc.

force: bắt buộc upgrade, bỏ qua conflicts.

test: không cài đặt, upgrage, chỉ test.

requires: liệt kê các gói phụ thuộc.

Các option truy vấn: kết hợp với option -q

-a: hiển thị danh sách các package đã cài đặt.

-f <file_name>: hiển thị package sở hữu <file_name>

-d <package_name>: hiển thị danh sách tập tin tài liệu

-i <package_name>: hiển thị thông tin của package

-l <package_name>: hiển thị file chứa trong package_name

-c <package_name>: hiển thị danh sách tập tin cấu hình

2 Yum Package Manager

Mặc định, yum (yellowdog updater modified) sẽ chỉ tìm kiếm và tải về các package nằm trong các kho chứa (repository) là các server trên Internet Vì vậy, việc cài đặt phần mềm với yum yêu cầu cần phải có kết nối Internet tốc độ cao để việc tải gói về được nhanh chóng yum cho phép

định nghĩa các reposistory, đây là vị trí chứa các binary software File cấu hình của yum

repository nằm tại vị trí /etc/yum.conf Để thêm vào một reposistory mới, ta phải tạo ra các file

mô tả nằm bên trong folder /etc/yum.repos.d hoặc install rpm package để tạo thêm reposistory mới Ưu điểm nổi bật của yum là tính tự động cao Tuy nhiên, tùy theo nguồn nên các phần mềm

cài đặt dùng lệnh yum thường không phải là phiên bản mới nhất

Thêm một nguồn tài nguyên cho lệnh yum

# vim /etc/yum.repos.d/centalt.repo

[CentALT]

name=CentALT Packages for Enterprise Linux 5 - $basearch

baseurl=http://centos.alt.ru/repository/centos/5/$basearch/

enabled=1

gpgcheck=0

Mô tả các tính năng của repository

[CentALT] là tên repository

Name tên mô tả RPM Repository

baseurl đường link đến vị trí chứa các file rpm

enabled 1 = repository mặc định được sử dụng

0 = repository này mặc định sẽ không được sử dụng

gpgcheck 0 = bỏ qua kiểm tra tính toàn vẹn của gói

1 = tính năng bảo mật sử dụng GPG key để xác thực rằng các package được

download từ đúng nguồn

Trang 3

Trong file config /etc/yum.conf , tham số gpgcheck cho biết sẽ kiểm tra Public key hay không

mỗi khi cài đặt phần mềm Public key này để chứng nhận các gói rpm được lấy từ đúng nguồn

tin cậy Nếu để là "0" nó sẽ không kiểm tra, sẽ đỡ rắc rối khi cài đặt nhưng nguy hiểm Nếu để

là "1" thì mỗi khi cài nó sẽ kiểm tra, và muốn cho nó biết có gì để kiểm tra phải import Public key từ các nơi cung cấp rpm Các public key này search trực tiếp trong trang cung cấp rpm

Ex: để cung cấp Public key cho yum từ livna

# rpm import http://rpm.livna.org/RPM-LIVNA-GPG-KEY-i386

Tìm một phần mềm

# yum search package-name

Liệt kê tất cả các gói phần mềm đã được cài đặt

# yum list installed

Hiển thị danh sách các gói phần mềm đã có bản update

# yum list updates

Kiểm tra và nâng cấp tất cả các gói phần mềm

# yum check-update | less

# yum update

Kiểm tra xem một gói phần mềm cụ thể đã có bản update mới chưa

# yum update package-name

Tìm kiếm một gói phần mềm lọc theo tên

# yum list package-name

# yum list rdesktop

Cài đặt gói phần mềm

# yum install package-name -y

# yum install rdesktop -y

Cài đặt phần mềm converrt định dạng tập tin văn bản DOS/Windows sang UNIX/Linux

# yum install dos2unix -y

# dos2unix file_name_convert_to_unix

Để sử dụng repository đang bị disabled trong quá trình cài đặt ta sử dụng thêm từ khóa –

enablerepo=[tên repository]

#yum enablerepo=repo-name install package-name

Gỡ bỏ gói phần mềm

# yum remove package-name

# yum remove rdesktop -y

Xóa cache của yum và xem nội dung của repository mới

# yum clean all && yum list

Hiển thị thông tin cài đặt package

# yum info rdesktop

Update package

Trang 4

# yum update rdesktop -y

Kiểm tra file thuộc package nào

# yum provides /etc/passwd

Kiểm tra package có trong repo nào

# yum whatprovides gcc

Hiện thị repositories

# yum repolist

# yum repolist all

Sử dụng với yum shell

# yum shell

Cài đặt phần mềm monitor hệ thống

# yum install htop -y

# htop

Cài đặt phần mềm web console

# yum install lynx -y

Cài đặt phần mềm theo group

# yum grouplist

# yum groupinstall 'Development Tools'

# yum groupinstall 'Development Libraries'

# yum groupinstall 'DNS Name Server'

# yum groupupdate 'Graphical Internet'

# yum groupremove 'DNS Name Server'

Kiểm tra log YUM

# tail -f /var/log/yum.log

Cài đặt giao diện đồ họa GNOME - KDE

# yum grouplist

# yum groupinstall "GNOME Desktop Environment" -y

# yum groupinstall "KDE (K Desktop Environment)" -y

# vim /etc/sysconfig/desktop

DESKTOP="KDE"

DISPLAYMANAGER="KDE"

# yum install switchdesk -y

Chuyển đổi KDE và GNOME

# switchdesk kde

# switchdesk gnome

Tìm kiếm package http://pkgs.org/

3 Cài đặt bằng source

Tương thích với mọi phiên bản Linux

Trang 5

Được đóng gói sử dụng kiểu GNU Zip (.gz) hoặc BZip2 (bz2) <filename>.tar.gz hoặc

<filename>.tar.bz2

Giải nén bằng lệnh:

tar xvzf <filename>.tar.gz

tar xvjf <filename>.tar.bz2

Đọc file INSTALL hoặc README để có những chỉ dẫn riêng biệt của gói cài đặt

Sau khi giải nén, chuyển đến thư mục của gói source:

cd <extracted_dir_name>

Chạy script configure, cần đọc file README, INSTALL để có những option cần thiết:

./configure

Build gói source bằng lệnh make:

make

Cài đặt gói source:

make install

Công cụ biên dịch C/C++

- gcc Trình biên dịch ngôn ngữ C

- g++ Trình biên dịch ngôn ngữ C++

- Trình biên dịch gcc thường được đặt trong /usr/bin Khi biên dịch, gcc cần nhiều file hỗ trợ

như các tập tin thư viện liên kết trong /usr/lib, các file C header trong /usr/include

- Chương trình sau khi biên dịch có thể đặt bất kỳ đâu trên hệ thống miễn là HĐH có thể tìm thấy trong biến môi trường PATH hoặc theo đường dẫn tuyệt đối trong dòng lệnh

# which gcc

/usr/bin/gcc

# rpm -qf /usr/bin/gcc

gcc-4.1.2-52.el5

# which g++

/usr/bin/g++

# rpm -qf /usr/bin/g++

gcc-c++-4.1.2-52.el5

Lưu ý khi biên dịch trong Linux

Dùng g++ nếu chương trình có chứa mã C lẫn C++

Dùng gcc nếu chương trình chỉ có mã C

File thực thi tạo ra không có đuôi exe, dll như môi trường Windows

Biên dịch với GNU gcc, g++, make

Ví dụ đơn giản trong ngôn ngữ C

Soạn thảo 2 files: main.c và func.c

# vim func.c

/* func.c */

#include <stdio.h>

Trang 6

void hello(){

printf("Hello World\n");

}

# vim main.c

/* main.c */

main(){

hello();

}

# gcc -v

# gcc -c func.c main.c

# gcc -o main main.o func.o

# /main

Hello World

Sử dụng biên dịch gcc [options] sources

các tùy chọn (options)

-c: sinh ra tập tin đối tượng o

-o: sinh ra tập tin output

-I: đặc tả thư mục chứa tập tin include

-l: đặc tả tên thư viện

-L: đặc tả đường dẫn đến thư viện

Dịch với make và Makefile để dịch tự động các bước trên

Soạn thảo Makefile

Makefile là 1 file đặc biệt dùng để quản lý các tập tin trong dự án

Chứa các quy tắc biên dịch

# vim Makefile

# Makefile

CC = gcc

main: main.o func.o

$(CC) -o main main.o func.o

main.o: main.c

$(CC) -c main.c

func.o: func.c

$(CC) -c func.c

# /main

Hello World

Lệnh make sẽ đọc các bước dịch trong Makefile để dịch và sinh ra chương trình main

tương thích với mọi phiên bản Linux

Ví dụ đơn giản trong ngôn ngữ C++

# vim hello.cpp

Trang 7

#include <iostream>

using namespace std;

// main() is where program execution begins.

int main()

{

cout << "Hello World \n"; // prints Hello World

return 0;

}

# g++ -c hello.cpp

# g++ -o main hello.o

# /main

Hello World

Phần mềm mã nguồn được đóng gói sử dụng kiểu GNU Zip (.gz) hoặc BZip2 (bz2).:

<filename>.tar.gz or <filename>.tar.bz2

Giải nén bằng lệnh:

# tar xvzf <filename>.tar.gz

# tar xvjf <filename>.tar.bz2

Đọc file INSTALL hoặc README để có những chỉ dẫn riêng biệt của gói cài đặt

Sau khi giải nén, chuyển đến thư mục của gói source:

# cd <extracted_dir_name>

Chạy shell script configure kiểm tra cấu hình hệ thống, thư viện cần thiết và tạo ra Makefile cho

biên dịch, cần đọc file README, INSTALL để có những option cần thiết (Type "./configure

help" for more information Remove config.cache file if you need to run /configure again)

# /configure

# ls -l Makefile

Khi chạy configure xong kết quả sẽ cho biết các gói phụ thuộc nào cần thiết để cài đặt Nếu như

hệ thống thỏa mãn đầy đủ các yêu cầu để cài đặt thì các Makefile sẽ được

tạo ra Makefile là một file đặc biệt của tiện ích make nhằm hướng dẫn biên dịch mã

nguồn của gói ra dạng thực thi

Build gói source bằng lệnh make:

# make

Cài đặt binary, library, confige file

# make install

Lệnh 'make install' để chép các file thực thi đó sang đúng vị trí của nó trên hệ thống File thực thi

thường được cài đặt vào thư mục /usr/local/bin

Khi có thay đổi trong source, cần biên dịch, cài đặt lại

Sau khi cài đặt xong, để gỡ bỏ gói source, dùng lệnh sau:

# make uninstall

Trang 8

Nếu cần thiết xóa bỏ luôn thư mục source cài đặt:

# rm -rf <extracted_dir_name>

Cài đặt bộ gõ tiếng việt xvnkb/x-unikey cho X-window

Địa chỉ xvnkb: http://xvnkb.sourceforge.net/

Địa chỉ x-unikey: http://www.unikey.org/linux.php

Cài đặt công cụ biên dịch và nhóm thư viện hỗ trợ

# yum groupinstall 'Development Libraries' -y

# yum install gcc gcc++ -y

Tải source xvnkb về

# wget http://ncu.dl.sourceforge.net/project/xvnkb/xvnkb/0.2.11/xvnkb-0.2.11.tar.gz

Giải nén và cài đặt

# tar -xvf xvnkb-0.2.11.tar.gz

# cd xvnkb-0.2.11

# /configure

# make

# make install

Chạy xvnkb trong môi trường đồ họa

# xvnkb

Cài đặt font chữ unicode

Copy các font unicode: arial.ttf, tahoma.ttf, times.ttf, verdana.ttf từ thư mục C:\Windows\Fonts

đến thư mục /usr/share/fonts/default/Type1

# cd /usr/share/fonts/default/Type1

# ls *.ttf

arial.ttf tahoma.ttf times.ttf verdana.ttf

Cập nhật font chữ

# fc-cache -fv

Mở Open Office để kiểm tra font unicode đã được cài đặt

Quản lý thư viện

Thư viện là file chứa các đoạn mã lệnh và dữ liệu được tổ chức thành các hàm (function), các lớp (class) nhằm cung cấp dịch vụ, chức năng nào đó cho các chương trình chạy trên máy tính.

Thư viện gồm 3 loại: Static, Dynamic và Shared Thường thì các thư viện ở dạng mã nhị phân,

không phải dạng văn bản thuần túy (plain text) – là các ký tự mà con người có thể đọc hiểu được.

Khi biên dịch 1 chương trình đang ở dạng các file source code (gồm tập các câu lệnh, khai báo được viết bằng 1 ngôn ngữ lập trình cấp cao như C/C++, Java…) sang dạng executable (hay

binary – tập các mã máy nhị phân mà chỉ CPU mới hiểu được) thì nhiều hàm chức năng của

chương trình được liên kết từ các thư viện Quá trình biên dịch này do bộ biên dịch (Compiler)

đảm nhiệm

Trang 9

Các thư viện được liên kết động và được dùng chung bởi nhiều ứng dụng được gọi là shared library Trên Windows các file thư viện có phần mở rộng là dll , còn Linux các file thư viện

thường là “.a”, “.so”, “.sa” và được bắt đầu bằng tiếp đầu ngữ “lib” Ví dụ: libutil.a hoặc libc.so

^ Đây là tên các thư viện trong Linux

Thư viện “.so” được ưu tiên sử dụng so với “.a” Nếu không tìm thấy file thư viện “.so” trên thì

“.a” mới được xem xét đến

Khi biên dịch, thông thường chương trình liên kết (ld) sẽ tìm thư viện trong 2 thư mục chuẩn

/usr/lib và /lib

Các hệ thống Linux có hai kiểu chương trình thi hành được

Các chương trình thi hành được liên kết tĩnh (statically linked) chứa tất cả các hàm thư viện mà chúng cần để thi hành Tất cả các hàm thư viện được liên kết vào chương trình thi hành được này Chúng là những chương trình đầy đủ, chạy không phụ thuộc vào thư viện bên ngoài Một lợi thế của các chương trình liên kết tĩnh là chúng sẽ làm việc mà không cần cài đặt các điều kiện cần có trước

Các chương trình thi hành được liên kết động (dynamically linked) là các chương trình nhỏ hơn nhiều, chưa đầy đủ, theo nghĩa rằng chúng đòi hỏi các hàm từ các thư viện chia

sẻ bên ngoài để chạy Ngoài việc là nhỏ hơn, các chương trình liên kết động cho phép một gói chỉ rõ các thư viện cần có trước mà không cần phải chứa sẵn các thư viện trong gói Việc sử dụng liên kết động cũng cho phép nhiều chương trình đang chạy chia sẻ một bản sao của một thư viện thay vì chiếm bộ nhớ để chứa nhiều bản sao của cùng một mã Với những lý do này, hầu hết các chương trình hiện nay sử dụng liên kết động.

Tổ chức các file trên hệ thống

Thư mục trên Linux thì thư mục /usr là thư mục quan trọng nhất vì nó sẽ chứa các chương trình

và hàm thư viện trên đó Trong thư mục /usr/bin là sẽ chứa các file thực thi cho các gói đã cài

đặt trên máy, các file trong thư mục này sẽ thấy các file rất quen thuộc như mozilla, gedit v.v

Thư mục /usr/lib sẽ chứa các hàm thư viện, các files có phần mở rộng là so (shared object) là

các hàm thư viện liên kết động hoặc a (archive) hoặc la đều là các hàm thư viện liên kết tĩnh Đặc tính căn bản của 2 dạng thư viện này là hàm thư viện liên kết tĩnh sẽ được liên kết thẳng với files thực thi luôn trong quá trình liên kết, còn hàm thư viện liên kết động thì sẽ được liên kết trong quá trình thực thi, cho nên sau khi chương trình đã được biên dịch và liên kết rồi các thư viên tĩnh có thể bỏ đi nhưng thư viện liên kết động thì bắt buộc phải đi kèm với chương trình

Thư mục /usr/share sẽ chứa các icon, manual hoặc info của gói

Một ví dụ trên hệ thống Linux là lệnh ln (/bin/ln), tạo ra các liên kết giữa các tập tin, (liên kết

cứng (hard) hoặc các liên kết mềm (soft)) Lệnh ln sử dụng các thư viện chia sẻ, do đó nếu các

thư viện liên kết động không làm việc, thì lệnh ln có thể không chạy Để tránh khỏi khả năng

Trang 10

này, hệ thống Linux có một phiên bản liên kết tĩnh của chương trình ln dưới dạng chương trình sln (/sbin/sln)

Độ lớn của chương trình sln và ln

# ls -lh /sbin/sln /bin/ln

-rwxr-xr-x 1 root root 30K Mar 1 2010 /bin/ln

-rwxr-xr-x 1 root root 548K Jun 28 2011 /sbin/sln

Xác định các shared library của chương trình

Lệnh ldd (List Dynamic Dependencies) hiển thị thông tin về các thư viện cần thiết của một

chương trình thi hành được

# ldd /sbin/sln /bin/ln

/sbin/sln:

not a dynamic executable

/bin/ln:

linux-gate.so.1 => (0x009a0000)

libc.so.6 => /lib/libc.so.6 (0x00b8a000)

/lib/ld-linux.so.2 (0x002be000)

# ls -l /lib/libc.so.6

lrwxrwxrwx 1 root root 11 Oct 17 2011 /lib/libc.so.6 -> libc-2.5.so

# rpm -qf /usr/bin/ldd

glibc-common-2.5-58.el5_6.4

Lệnh ldconfig để xử lý tất cả các thư viện từ ld.so.conf cũng như những thư viện từ các thư mục

/lib và /usr/lib

ldconfig [OPTION ]

Thường dùng 2 option cho lệnh này

-p: chỉ hiển thị nội dung hiện tại của cache, không tạo lại cache.

-v: hiển thị quá trình thực hiện việc tạo lại cache.

Lệnh ldconfig để hiển thị ld.so.cache

# ldconfig -p | less

# ldconfig -p | grep /usr/lib | less

# cat /etc/ld.so.conf

include ld.so.conf.d/*.conf

Lỗi không tìm thấy thư viện

error while loading shared libraries: cannot open shared object file: no such file or

directory

Cách giải quyết là sử dụng lệnh ldconfig để thiết lập lại các file config Thêm dòng /usr/local/lib

vào tập tin /etc/ld.so.conf và chạy lệnh ldconfig

# ldconfig -v

Hoặc thêm thư viện vào biến môi trường LD_LIBRARY_PATH

# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

Ngày đăng: 12/04/2015, 14:02

TỪ KHÓA LIÊN QUAN

w