Vì vậy, tôi đã duyệt web vào một ngày khác và tôi đã đi qua một vài nơi muốn tôi tải xuống .deb
các tệp - và vì chúng được cài đặt bởi root (và như vậy có "quyền hạn" và khả năng của root), tôi đã không chắc chắn với điều đó.
Vì vậy, tôi đã duyệt web vào một ngày khác và tôi đã đi qua một vài nơi muốn tôi tải xuống .deb
các tệp - và vì chúng được cài đặt bởi root (và như vậy có "quyền hạn" và khả năng của root), tôi đã không chắc chắn với điều đó.
Câu trả lời:
Những điều cần cân nhắc:
Làm thế nào nổi tiếng là các trang web? Ví dụ: đó có phải là một blog ngẫu nhiên được bao phủ trong quảng cáo, nó là một người dùng ngẫu nhiên trên một số diễn đàn, hay nó là một trang web nổi tiếng, được tôn trọng?
Nó yêu cầu cài đặt cái gì? Ví dụ: nó có yêu cầu cài đặt kernel hoặc iconet không, nhưng nó chỉ lớn 1MB?
Làm thế nào "quan trọng" là bạn có nội dung của điều này .deb
?
Các cách để kiểm tra mọi thứ một cách an toàn:
Tôi sử dụng arkose
( trong repos tiêu chuẩn
) sandboxing với các cuộc tranh luận của tôi (và những thứ khác) - sử dụng nó như thế này:
sudo arkose -n -c "cd $PWD; $SHELL"
Có gì mà nó cho tôi một "sandbox" (hay còn gọi là "YAY Tôi có thể vít lên!") Với copy-on-write quyền truy cập vào tất cả mọi thứ trên máy tính của tôi, trong đó có thư mục chính của tôi - vì vậy nếu khó chịu khó chịu .deb
không sudo rm -rf /*
, tôi DON 'TẤT CẢ MỌI DỮ LIỆU!
Một điều nữa không đủ căng thẳng là MAKE BACKUPS . Đó là những điều cực kỳ hữu ích, và chúng tôi có nhiều câu hỏi về chủ đề này.
Nói tóm lại, chỉ cần đảm bảo rằng bạn nghĩ về nó và không chỉ tải xuống một cuộc tranh luận ngẫu nhiên và cài đặt nó.
Nếu bạn đang tải xuống một gói từ các nguồn không đáng tin cậy hoặc nghi vấn, hãy hoang tưởng. Trên các diễn đàn phổ biến như ubuntuforums.org, nếu người dùng tạo bài đăng đầu tiên của mình chỉ chứa một văn bản ngắn như "cài đặt cái này, làm việc cho tôi!", Theo sau là một liên kết, hãy cẩn thận với liên kết và / hoặc hướng dẫn đó.
Không sử dụng các gói nhị phân nếu có thể, đặc biệt là từ các nguồn không đáng tin cậy. Lấy nguồn (đối với các gói Ubuntu chính thức, điều này có thể được thực hiện apt-get source package-name
) và xem xét nó.
Nếu gói trong câu hỏi là nhỏ, nó có thể có giá trị phân tích nó. Tôi thích sử dụng các thiết bị đầu cuối cho điều đó bởi vì tôi sau đó phải công cụ mạnh mẽ dòng lệnh khác như truy cập nhanh ls
, find
, file
, less
, vim
, grep
, sed
, dpkg
và rất nhiều người khác. Sử dụng hoàn thành tab (tức là nhấn Tabđể hoàn thành các lệnh và tên tệp), nó thực sự tiết kiệm thời gian!
Để tải xuống tệp .deb, bạn có thể sử dụng trình duyệt, nhưng sao chép liên kết và sau đó sử dụng wget
nhanh hơn vì bạn đã có thể thử nghiệm với nó.
$ mkdir /tmp/foo && cd /tmp/foo
$ wget http://nl.archive.ubuntu.com/ubuntu/pool/main/n/nvidia-common/nvidia-common_0.2.35_amd64.deb
Tiếp theo, đã đến lúc kiểm tra tệp. less
(thông qua lesspipe
) có thể cung cấp một cái nhìn tổng quan nhanh về nội dung tập tin. Các phím mũi tên, trang lên / xuống, home / end có thể hữu ích cho việc điều hướng, Qthoát khỏi chương trình.
$ less nvidia-common_0.2.35_amd64.deb
nvidia-common_0.2.35_amd64.deb:
new debian package, version 2.0.
size 10802 bytes: control archive= 1877 bytes.
197 bytes, 11 lines * config #!/bin/sh
703 bytes, 16 lines control
741 bytes, 10 lines md5sums
163 bytes, 9 lines * postinst #!/bin/sh
206 bytes, 8 lines * postrm #!/bin/sh
827 bytes, 38 lines * preinst #!/bin/sh
263 bytes, 14 lines * prerm #!/bin/sh
365 bytes, 12 lines templates
Package: nvidia-common
Version: 1:0.2.35
Architecture: amd64
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Installed-Size: 156
Pre-Depends: dpkg (>= 1.15.7.2)
Depends: python2.7 | python2.6, python (>= 2.7.1-0ubuntu2), python (<< 2.8), debconf (>= 0.5.00) | debconf-2.0, pciutils, python-apt
Conflicts: nvidia-180-modaliases, nvidia-185-modaliases, nvidia-current-modaliases
Replaces: nvidia-180-modaliases, nvidia-185-modaliases, nvidia-current-modaliases
Section: admin
Priority: optional
Description: Find obsolete NVIDIA drivers
This package will find obsolete NVIDIA drivers in use,
detect the hardware and recommend the most appropriate
driver.
Python-Version: 2.6, 2.7
*** Contents:
drwxr-xr-x root/root 0 2011-09-07 11:06 ./
drwxr-xr-x root/root 0 2011-09-07 11:06 ./usr/
drwxr-xr-x root/root 0 2011-09-07 11:06 ./usr/share/
drwxr-xr-x root/root 0 2011-09-07 11:06 ./usr/share/doc/
drwxr-xr-x root/root 0 2011-09-07 11:06 ./usr/share/doc/nvidia-common/
-rw-r--r-- root/root 1174 2011-09-07 11:07 ./usr/share/doc/nvidia-common/changelog.gz
-rw-r--r-- root/root 466 2011-06-24 14:45 ./usr/share/doc/nvidia-common/copyright
...
Sau này, bạn có được cái nhìn tổng quan về các phụ thuộc gói và loại tệp nào có thể chứa. Thời gian để giải nén các tập tin và phân tích nội dung bằng cách sử dụng dpkg-deb
. Lệnh đầu tiên trích xuất cây tệp trong một thư mục mới được tạo fs
, lệnh thứ hai trích xuất nó DEBIAN
vì không có mục tiêu nào khác được chỉ định:
$ dpkg-deb -x nvidia-common_0.2.35_amd64.deb fs
$ dpkg-deb -e nvidia-common_0.2.35_amd64.deb
Chúng tôi sẽ sử dụng less
một lần nữa để phân tích các nội dung của kịch bản duy trì (tức là các tập tin mà sẽ được sử dụng / chạy trong khi cài đặt (và xóa). prerm
, preinst
, postrm
, postinst
Là kịch bản chạy trước / sau khi loại bỏ / cài đặt mà là hầu hết các tập tin quan trọng để phân tích Sử dụng :n
và :p
để chuyển đổi giữa các tệp. Bằng cách nhấn =
, bạn sẽ có được tên tệp và số dòng hiện tại cũng như số lượng tệp trong danh sách.
$ less DEBIAN/*
Nếu các tập lệnh gói trông có vẻ lành mạnh, đã đến lúc phân tích nội dung được cài đặt (sử dụng hoàn thành tab). Đối với tập lệnh shell và tập lệnh được giải thích (như Python), việc phân tích sẽ dễ dàng hơn (giả sử rằng bạn đã biết ngôn ngữ này).
$ less fs/usr/bin/nvidia-detector # fs<TAB><TAB>/usr/ <TAB><TAB>bin ...
$ less fs/usr/lib/nvidia/pre-install
$ ls -la fs/usr/lib # quickly check the directory contents, my memory is weak
drwxr-xr-x 5 peter peter 100 2011-09-07 11:06 .
drwxr-xr-x 5 peter peter 100 2011-09-07 11:06 ..
drwxr-xr-x 2 peter peter 60 2011-09-07 11:06 nvidia
drwxr-xr-x 3 peter peter 60 2011-09-07 11:06 python2.6
drwxr-xr-x 3 peter peter 60 2011-09-07 11:06 python2.7
$ # I conclude: python2.6 is not a symlink to python2.7
$ less fs/usr/lib/python2.7/dist-packages/NvidiaDetector/*
press 'v' to open an editor (e.g. nano, vim) to get syntax highlighting if preferable
Đặc biệt chú ý đến các tệp cấu hình, đặc biệt nếu chúng đang sử dụng các thư mục như /etc/init
(đối với tập lệnh khởi động) hoặc /etc/modprobe.d
(tùy chọn để tải các mô-đun hạt nhân).
Đối với các tệp nhị phân, ldd
có thể đưa ra ý tưởng chương trình có thể được sử dụng cho mục đích gì. Chương trình dưới đây trông giống như một chương trình đồ họa sử dụng OpenGL.
$ ldd /usr/bin/glxgears
linux-vdso.so.1 => (0x00007fff7d3ff000)
libGL.so.1 => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 (0x00007fa2ead11000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa2eaa8d000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fa2ea754000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa2ea3b5000)
...
Sau khi bạn chắc chắn rằng gói trông hợp lệ, bạn có thể tiếp tục cài đặt nó trong VirtualBox khởi động từ đĩa CD và sử dụng trực tiếp ps aux
, top
, strace -f -o logfile.txt programname
để phân tích thêm.
.deb
con lăn với File xem những gì bên trong. Mặc dù tôi phải nói rằng tôi đã tải xuống một cuộc tranh luận ngẫu nhiên từ một người dùng ngẫu nhiên trên một chuỗi ngẫu nhiên trên các diễn đàn Ubuntu để khắc phục sự cố của tôi với máy in của tôi, nhưng nó đã hoạt động.