Ето един конфигурационен файл /etc/apt/sources.list със списък на официални и някои (примерни) неофициални източници:
################################################################### # Official US & non-US, binary & source package entries start here ################################################################### # BINARY PACKAGES deb ftp://ftp.bg.debian.org/debian stable main contrib non-free deb ftp://ftp.bg.debian.org/debian testing main contrib non-free deb ftp://ftp.bg.debian.org/debian unstable main contrib non-free deb ftp://ftp.bg.debian.org/debian-non-US stable/non-US main contrib non-free deb ftp://ftp.bg.debian.org/debian-non-US testing/non-US main contrib non-free deb ftp://ftp.bg.debian.org/debian-non-US unstable/non-US main contrib non-free deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free deb http://non-us.debian.org/debian-non-US testing/non-US main contrib non-free deb http://non-us.debian.org/debian-non-US unstable/non-US main contrib non-free # Proposed & security updates deb http://security.debian.org stable/updates main contrib non-free deb http://security.debian.org testing/updates main contrib non-free deb ftp://ftp.bg.debian.org/debian proposed-updates main contrib non-free deb ftp://ftp.bg.debian.org/debian testing-proposed-updates main contrib non-free # SOURCE PACKAGES deb-src ftp://ftp.bg.debian.org/debian stable main contrib non-free deb-src ftp://ftp.bg.debian.org/debian testing main contrib non-free deb-src ftp://ftp.bg.debian.org/debian unstable main contrib non-free deb-src ftp://ftp.bg.debian.org/debian-non-US stable/non-US main contrib non-free deb-src ftp://ftp.bg.debian.org/debian-non-US testing/non-US main contrib non-free deb-src ftp://ftp.bg.debian.org/debian-non-US unstable/non-US main contrib non-free deb-src http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free deb-src http://non-us.debian.org/debian-non-US testing/non-US main contrib non-free deb-src http://non-us.debian.org/debian-non-US unstable/non-US main contrib non-free # Proposed & security updates deb-src http://security.debian.org stable/updates main contrib non-free deb-src http://security.debian.org testing/updates main contrib non-free deb-src ftp://ftp.bg.debian.org/debian proposed-updates main contrib non-free deb-src ftp://ftp.bg.debian.org/debian testing-proposed-updates main contrib non-free ##################################################################### # Unofficial APT entries start here - binary and/or source packages ##################################################################### # Various unofficial sources for APT can be found here: # http://www.internatif.org/bortzmeyer/debian/apt-sources/ # http://www.apt-get.org ##################################################################### # Unofficial apt-build local repository - note compiler optimizations ##################################################################### #deb file:/var/cache/apt-build/repository apt-build main # 1) MY OWN LOCAL REPOSITORY # =========================== #deb file:/usr/local/src/Mplayer-dev/mplayer-netinst/MPlayer-CVS ./ # 2) GNOME 2 semi-officials # ========================= # after apt-get update, go examine list files in /var/lib/apt/lists/ # ex: apt-get install -t experimental gnome2 # ex: apt-get -t experimental install nautilus2 gnome-panel2 # gnome-applets2 gnome-terminal2 gnome-control-center2 fam # msttcorefonts ... deb http://ftp.de.debian.org/debian/ ../project/experimental main contrib non-free deb-src http://ftp.de.debian.org/debian/ ../project/experimental main contrib non-free # apt-get install gnome2 #deb http://people.debian.org/~walters/debian/staging/ ./ # 3) KDE 3.x unofficials # ======================= # SEE http://davidpashley.com/debian-kde/faq.html # # for KDE 3.1 unofficial deb's see http://wh9.tu-dresden.de/kde3/ # for stable backport from download.kde.org #deb http://download.kde.org/stable/3.1.1/Debian stable main #deb-src http://download.kde.org/stable/3.1.1/Debian stable main # KOffice, kdeartwork, kdeaddons, kdeedu, kdesdk, kdetoys, kile, # kbear, quanta, kcd, kcpuload, kdbg, knetload, konq-speaker, kprof #deb http://people.debian.org/~bab/kde3 ./ # kdevelop #deb http://people.debian.org/~njordan kde3.0/ # ksensors, kvim, kxicq2, krusader, yammi, arson #deb http://ers.linuxforum.hu/kde3deb/ ./ # 4) Joey Hess's kitenet development network http://kitenet.net/programs/debs.cgi # =============================================================================== # very powerful perl version of apt-src program + more ... # deb http://kitenet.net/programs/code/debian / # deb-src http://kitenet.net/programs/code/debian / # 5) OPERA # ======== deb http://www.opera.com/debian stable opera non-free # 6) ICKLE # ======== #deb http://stud3.tuwien.ac.at/~e0027500/debian/ ./ # 7) Pixie Plus # ============= #deb http://arachni.kiwi.uni-hamburg.de/~harlekin/binary-i386/ ./ # 8) Blackdown java files # ======================= #deb ftp://metalab.unc.edu/pub/linux/devel/lang/java/blackdown.org/debian woody non-free # 9) Jonas site - lame, pine binaries, etc ... , do in mind apt's preferences ! # ============================================================================== # deb http://debian.jones.dk/ unstable misc # deb http://debian.jones.dk/ testing misc # 10) snapshot.debian.net - Fumitoshi UKAI <ukai@debian.or.jp> # ============================================================ # Different from usual mirror site, it provides daily snapshot since # 2002/06/04. It uses pdumpfs to backup debian & debian-non-US # daily. This is useful in case you got broken version of package and # you want to get old working version of package without searching # around delayed debian mirror sites. Whenever you like, you can # access debian archive on specific date. For example, you can get # debian packages of June 20th from # http://snapshot.debian.net/archive/2002/06/20/debian # or apt-line #deb http://snapshot.debian.net/archive/2002/06/20/debian unstable main contrib non-free # You can also get debian packages on relative date, for instance, last week's # debian from http://snapshot.debian.net/archive/date/last-week/debian/ # or apt-line #deb http://snapshot.debian.net/archive/date/last-week/debian unstable main contrib non-free # In place of 'last-week', you can use any datestr recognized by date(1). # You can also access all version of debian package in snapshot.debian.net by using the following apt-line #deb http://snapshot.debian.net/archive pool packagename1 packagename2 .... # This is useful if you don't know when specific version of package you want # was installed in debian but know which version of package.
Вече трябва да сте се ориентирали как стоят нещата, и може да го ползвате, допълвайки го или коментирайки излишното. Ето ви и още няколко примерни конфигурационни файлове:
/etc/apt/apt-build.conf:
cc = gcc-2.95 Olevel = -O3 march = -march=i686 mcpu = -mcpu=i686
/etc/apt/apt.conf:
/* This file is a sample configuration file with a few harmless sample options. */ APT { // Options for apt-get Get { Download-Only "false"; }; }; // Always show packages to be upgraded (-u) APT::Get::Show-Upgraded "true"; // Options for the downloading routines Acquire { Retries "0"; }; // Things that effect the APT dselect method DSelect { Clean "auto"; // always|auto|prompt|never }; DPkg { // Probably don't want to use force-downgrade.. Options {"--force-overwrite";} } APT::Default-Release "testing"; APT::Cache-Limit "25165824"; // All dpsyco packages should be updated after installation. DPkg::Post-Invoke {"/usr/sbin/update-dpsyco || true";};
/etc/apt/apt-file.conf:
# cache directory. All Съдържание files will be stored in this directory cache = /var/cache/auto-apt # verbose. Run apt-file in verbose mode verbose off # arch. Processor architecture (defaults to host architecture) # arch = i386 # sources-list. Where to find the `sources-list' file sources-list = /etc/apt/sources.list # ftp-passive. Switch to passive ftp connection ftp-passive on # case-sensitive. Find files in case sensitive mode case-sensitive on # recursive. Search file in a recursive mode recursive on
/etc/apt/preferences (I):
Package: * Pin: release o=Jones Pin-Priority: 99
/etc/apt/preferences (II):
Package: * Pin: release a=stable Pin-Priority: 200 Package: * Pin: release a=testing Pin-Priority: 300 Package: * Pin: release a=unstable Pin-Priority: 400
/etc/apt/preferences (III):
# OLD VALUES BEGIN # Package: * # Pin: release o=Jones # Pin-Priority: 99 # OLD VALUES END # Package: * # Pin: release v=3.0* # Pin-Priority: 1001 # Using APT with both Debian and non-Debian sources # ---------------------------------------------------------------- # # APT's Default-Release setting (aka "apt-get --target-release") is an # extremely useful feature, but it has problems if you're using non-Debian # entries in your /etc/apt/sources.list file. This file improves the # situation a bit. # # Copy this file to /etc/apt/preferences and edit the following Pin: # line, replacing "testing" with "stable" if that's your preferences. # The rest of the file contains an explanation, you don't have to # worry about anything other than this line if you don't care about # the details. # # ---------------------------------------------------------------- Pin: release a=testing # ---------------------------------------------------------------- # # The above Pin: is your default release. The way it's set is the # equivalent of the apt.conf APT::Default-Release setting. It's # convenient to have it here instead so that all the pinning settings # are in one place. # Package: * Pin-Priority: 900 # Pin unstable at a lower than default priority. Here's an example to # show why this is necessary. Consider a package which is available # from 3 releases like this: # # rel. ver. without pin with pin # ---- ---- ----------- -------- # testing 1.0 900 900 # local 1.1 500 500 # unstable 1.2 500 200 # # Without this pin version 1.1 installed from local would be immediately # upgraded to the 1.2 version from unstable, since they're both priority # 500. # # The priority of this pin has to be > 100 (the priority of currently # installed packages) else a package installed from unstable wouldn't # track new versions from unstable. # # This isn't a complete solution. Say your apt.sources included # Debian's testing and unstable, plus 3 external sources A, B, and # C. It'd be nice to be able to install a package from B and have # it always come from B (or from the default release, if a newer # version gets there), but I don't see a way to do that without # listing the other releases here explicitly. Since A, B, and C all # have the same priority (500, the default priority) a package from # B can be replaced by a newer one from C. If this is a problem for # you, the best solution I can currently offer is to add a new pin # here for each of your external sources. Even then I don't see a # way to do per-release mutual exclusion, so you'll still have to # order them. If they don't provide a Release file you should be # able to use a specifier like "Pin: origin www.somesource.com". Package: * Pin: release o=Debian Pin-Priority: 200
FIXME: да се обясни за apt-cdrom, и въобще за /usr/lib/apt/methods/
Нека имаме един такъв разширен /etc/apt/sources.list, както е показан по-горе, с редове за official stable, testing, unstable, experimental и дузина unofficialsтова е само пример за демонстрация, не е задължително винаги на подхождате така глобално). Освен това в /etc/apt/apt.conf можем да укажем например
APT::Default-Release "testing"
така че apt по подразбиране да точи от testing и само с изрично указана опция -t, -target-release, -default-release, подавана на apt, да се предприема теглене от stable, unstable и др. Aко няма указано нищо за APT::Default-Release, не е подадена опция -t, и освен това няма промяна от потребителя в приоритета на пакетите чрез Package:, Pin: или Pin-Priority: в /etc/apt/preferences, което е с по-голяма тежест от APT::Default-Release, apt ще предпочете най-голямата версия на пакета. Ето какво бихме получили:
Само този пакет да се тегли от unstable и нищо друго, ако има неудоволетворени зависимости apt ще каже:
# apt-get install пакет/unstable
Apt има разрешение освен за пакет от unstable да вземе и неговите зависимости, ако има такива, пак от там:
# apt-get install -t unstable пакет
Опцията -s е за симулация, т.е. ползвайте я, за да проверите какво би се получило, като нищо няма да бъде изтеглено и инсталирано, само за проверка.
# apt-get install пакет1/stable пакет2/testing пакет3/unstable -s
Дори може да се конкретизира и до версия на пакет и т.н.
# apt-get install пакет=версия
Имайте предвид, че по този начин, а и изброените по-горе, може и да downgrade даден инсталиран вече във вашата система пакет, като при ситуация на downgrade apt предупреждава изрично, че минавате към по-ниска версия на пакета.
# apt-get install пакет/stable
Състоянието на unstable много бързо се променя, Testing също, но по-бавно. Stable само със security updates, така че за кратко време влизат доста нови packages, като някои стари версии може да изпадат от официалните архиви и т.н. Ако търсите някоя по-стара версия на даден пакет и я няма в Unstable или Testing към момента, а така също и във вашия локален кеш /var/cache/apt/archives/, но е била там преди известно време, то може да добавяте и редове във файла sources.list(5) към http://snapshot.debian.net за търсене на такива по-стари и изпаднали към момента версии на отделните пакети. На сайта си пише как се ползва.
Има предвидена и още една възможност в подобни ситуации. Ако във вашата система имате инсталирана версия на пакет, който е изпаднал към момента от официалните stable/testing/unstable, освен това сте го премахнали и от локалния си кеш на apt и отгоре на това не ви се търси точно тази версия в архивите на http://snapshot.debian.net, то може да използвате Perl скрипта dpkg-repack, който идва с едноименния пакет dpkg-repack. Преди да upgrade-вате така дефицитните версии на интересуващите ви пакети, изпълнете:
# dpkg-repack пакет
Инсталираният в системата пакет ще бъде събран пак като инсталационен .deb пакет и сега вече спокойно може да upgrade-вате към нови версии на дадените пакети, при което, ако те нещо не ви харесат, ги премахвате или форсирате downgrade за тях.
Apt отчита вътрешно списък с приоритети на пакетите (candidate version policy, или начина, по които те да бъдат избирани от apt), описание на които ще намерите в apt_preferences(5). Там е обяснено и какво са non-automatic priorities и как може да се променят подразбиращите се такива, а оттам и селективното поведение на apt. Когато правите такива промени, винаги използвайте -s опцията на apt, за да се уверите, че ще постигнете точно това, което желаете, избягвайки нежелателни изненади. Изпълнявайки:
# apt-cache policy пакет
ще получите информация за Installed и Candidate версиите и Version Table, в която за всяка достъпна версия на пакета се изписват приоритета и мястото, от където евентуално ще изтеглите този пакет.
FIXME: Страницата е вече променена. Един пример http://people.debian.org/~walters/gnome2.html за това как може да се промени приоритета на packages от experimental (трябва да имате experimental entries в /etc/apt/sources.list, и да сте изпълнили apt-get update), за да бъдат предпочетени те от APT пред тези от unstable (Sid). В случая е даден пример с GNOME 2 packages (виж отговора на предпоследния въпрос). Забележете и интересно предложение за debfoster -u, което се дава. Чрез промяна на приоритета на пакетите може да се постигне и т.н. им "`заковаване"'. FIXME: Реферира се apt-howto-bg.
Downgrade-ването на цялата система, да речем от настоящия Testing към настоящия Stable, може да се разглежда като специален случай на цялостен upgrade от Stable към Testing, който вие изпълнявате чрез
# apt-get dist-upgrade
Това може да стане чрез pinning feature на apt-0.5.4. Вижте APT HOWTO и apt_preferences(5) за повече подробности. На практика debian packaging tools са толкова развити, че спокойно може да се програмира върху тях, ползвайки ги като stable API. Например статията How I Downgraded Testing to Stable показва как може да постигнете горното по един такъв начин със създадени от вас приложения. Разбира се, трябва да знаете какво правите, имайки поне базови познания и опит с debian packaging system. Например, че ако "`слизате"' от Testing към Stable, трябва да имате предвид какво ще правите с пакетите, които ги има в Testing и ги имате инсталирани на вашата система и които към момента ги няма в Stable. Известни познания за shell програмиране въобще не пречат ;-). Шелът ви дава достатъчно възможности, но с употребата на Perl или Python скриптиране за подобни ваши цели можете да направите нещата наистина сериозни. Всъщност добър пример за административни Perl скриптове са пакетите debconf и debhelper, чиито сорсове можете да разгледате. По подобен начин ако решите, че apt-src, apt-build, pbuilder и т.н. не ви предлагат достатъчно възможности за получаването на binary packages от съответните source packages, може да погледнете в кодовете им и да запрограмирате нещо аналогично и по-специфично за вашите цели, като отчитате, че ще се нуждаете само от source packages на тези binary packages, които вие имате инсталирани, плюс необходимото за техния успешен build.
Една от силните страни на пакетната система на Debian това е наличието на виртуални и мета-пакети. Те спестяват много време и усилия на потребителите.
Виртуални пакети - Има пакети, които предлагат същата или почти същата функционалност. В такъв случай е добра идея да се създаде виртуален пакет, който да обедини тези функционалности. Тези пакети се наричат "виртуални пакети". Виртуалните пакети съществуват само логически - т.е те не са истински пакети (от там идва и името им - виртуални). Тази им функционалност е доста полезна за хората, които не са запознати с конкретни имена на програми, но знаят каква функционалност търсят. Например ако се търси ftp сървър не е нужно потребителят да знае конкретни имена на продукти и да търси не-ефективно (в отговорите на apt-cache ще има доста програми, които всъщност не са ftp сървъри, а просто имат някаква връзка), нужно е просто да се изпълни:
# apt-cache search ftp-server
Отговорът вече е повече от задоволителен:
bsd-ftpd - Port of the OpenBSD FTP server ftpd - FTP server ftpd-ssl - FTP server with SSL encryption support. heimdal-servers - Servers for Heimdal Kerberos kerberos4kth-servers - Servers for Kerberos4 From KTH krb5-ftpd - Secure FTP server supporting MIT Kerberos lukemftpd - The enhanced ftp daemon from NetBSD. vsftpd - The Very Secure FTP Daemon wu-ftpd - powerful and widely used FTP server ...... .....
Информация за наличните виртуални пакети в Debian можете да намерите на адрес: doc/package-developer/virtual-package-names-list.text в най-близкия локален mirror на Debian.org например: bg.debian.org
Ако имате инсталиран пакета debian-policy на вашата система можете да прочетете този списък и от: /usr/share/doc/debian-policy/virtual-package-names-list.txt.gz
Мета-пакети - Мета-пакетите са още един много полезен инструмент за начинаещите и за напредналите в Debian. Както добре се знае един от основните проблеми при запознаването с Linux, и при боравенето със софтуера впоследствие е как потребителя да е сигурен, че е инсталирал всички пакети, необходими му за работа или използване на всичките възможности на дадена програма. Мета-пакетите правят точно това. Най-добър пример за мета-пакети са тези на kde, gnome и x-window-system. С инсталирането на x-window-system ще се инсталира всичко необходимо за да стартирате графична среда във вашия Debian. Съответно инсталирането на мета-пакета kde ще ви снабди с KDE и пълното му обкръжение от софтуер: kdegraphics, koffice.. и т.н За да разберете с какви мета-пакети можете да боравите във вашата система изпълнете:
#apt-cache search metapackage
Системата ще върне списък със всички мета-пакети, които можете да използвате:
arts - Analog Realtime Synthesizer (aRts) metapackage debian-reference - A metapackage to install all translations of Debian Reference education-astronomy - DebianEdu astronomy related applications education-chemistry - DebianEdu chemistry related applications education-desktop-gnome - DebianEdu GNOME desktop applications education-desktop-kde - DebianEdu KDE desktop applications education-desktop-other - DebianEdu desktop applications (non-GNOME, non-KDE) education-electronics - DebianEdu electronics related applications education-geography - DebianEdu applications for geography education-graphics - DebianEdu graphics related applications ..... ....
За пояснение, самата инсталация на packages се прави от dpkg(8) (аналогично на rpm), а apt се използва за внасяне на допълнителна логика върху всичко това и правене на по-специални магии, които не са работа на dpkg(8) да знае и може (той си има достатъчно друга работа), на него apt-get(8) му подава готов набор от пакети за обработка. Реално може да ползвате и само dpkg(8) (точно както и програмата rpm) и без надстройка като apt-get(8) (или dselect(8)), но ако има някакви неудоволетворени зависимости и/или конфликти, dpkg(8) само ще изреве и ще спре работа и ще се оплаква докато не му ги доставите и подадете ръчно в съответния ред, вместо да даде предложения за решения и т.н., което е от компетенцията на apt-get(8) (и dselect(8)). Такива надстройки има и за rpm, разбира се. Има и графични надстройки и над apt като aptitude, synaptic, gsynaptic, stormpkg, deity, gnome-apt, kpackage. Последните две май са лош пример за такива ;-)
Нека не се бъркат програмите пакетни менажери (като dpkg и rpm) със съответните пакетни бинарни формати (.deb и .rpm), с които те работят. Тези бинарни файлове (да речем, .deb) са просто един архив, който се разпознава и от програми като ar(1), tar(1), file(1). Te се получават от съответните сорсове (source packages). Те са си .tgz или .tar.gz архив, като са конфигурирани по подходящ начин, за да се компилират и инсталират коректно на съответната система, т.е. спазва се някакъв стил и политика. Реално пакетният менажер rpm го има и в Debian, но не бива да се ползва директно за инсталиране на .rpm пакети, най-малкото понеже тези пакети не са подходящо конфигурани и едва ли спазват стила и практиката на Debian при изготвянето на пакети, т.е. те не го спазват и това не им е работа, разбира се. Той е сложен за създаване на такива при добро желание от страна на потребителя. Има и един пакет alien, който е предназначен уж за подобно конвертиране на бинарните пакетни файлове, но трябва да се убедите и разгледате какво и как конвертира, защото не винаги го прави коректно. Има maintainer scripts, които едва ли се генерират при едно такова конвертиране, такива scripts просто се създават за debian source packages и са си специфични за Debian. Такива .rpm пакети са конфигурирани за Red Hat, Mandrake, SuSE и т.н., дори за съответните версии на тези дистрибуции, като хич не е добра идея .rpm пакет, конфигуриран за Red Hat, да се инсталира, особено форсирано, на нещо различно от Red Hat като Mandrake, SuSE и т.н. Не си чупете дистрибуциите по този смешен начин, гледайки на пакетните файлове и пакетните менажери като на ябълки и круши ... ;-) Това хич не е GNU/Linux way... Подобно поведение от страна на потребителите е лошо наследство от работата на сляпо с предишна операционна система (затворена), която лесно се обозава и плаче за преинсталация на определен период от време. Това са смешни истории и мисля, че са безкрайно ясни.
FIXME: Да се обясни повече за apt-listchanges, apt-listbugs, apt-show-source, apt-show-versions.
Документация
Като нов потребител за начало ще е полезно да прочетете:
Можете да разгледате как би изглеждала цялата документация на http://www.fifi.org/documentation/