Портал

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Портал » Что подкрутить » pacman - что подкрутить.


pacman - что подкрутить.

Сообщений 1 страница 13 из 13

1

% Рекомендуемые приемы работы с pacman -- подкручиваем свои навыки.

https://wiki.archlinux.org/index.php/System_maintenance_(Русский)
https://www.ostechnix.com/recommended-way-clean-package-cache-arch-linux/

бездумно не копируй.  сначала проверь по man, wiki
чтобы избежать  сообщений об отсутствующих пакетах, циклических зависимостях следует

1. обновить ключи разработчиков. перед установкой пакетов.
pacman-key --refresh-keys
если сбой, просто выставь системное время и дату правильно.

2. перед каждым обновлением и после установки удаления пакетов чистить кэш вот таким образом

paccache -ruk0
pacman -Sc

3. Перед каждым обновлением

pacman -Syyu

4. проверить все установленные пакеты на наличие повреждений:
   # pacman -Qkk
pacman-Qkkqv
проверяет систему на измененные файлы по сравнению с данными из бызы, а конкретно в каждом пакете есть файлик .MTREE или он же но в базе /var/lib/pacman/local/*/mtree, этот файл содержит описание разных атрибутов файлов в пакете: размер, время, права, контрольные суммы. вот это и проверяется.
5. делать бекап базы данных пакмана и его лога. до и после изменений.
      tar -cjf pacman_database.tar.bz2 /var/lib/pacman/local

6.в pacman.conf  прописать чтобы ваш конфиг не трогали
NoUpgrade=path/to/pacman.conf  path/to/mirrorlist  path/to/sudoers
без  /  в начале пути. в wiki так сказано.

7. поставь утилиту lostfiles
используй до и после установки, обновления, удаления пакетов.

8. после удаления, обновления пакетов могут остаться сломанные симлинки.  https://wiki.archlinux.org/index.php/System_maintenance_(Русский)#Сломанные_симлинки
# find . -type l -! -exec test -e {} \; -print        --- посмотреть список.
find ./ -type l -exec file {} \; | grep broken    # https://unix.stackexchange.com/questions/34248/how-can-i-find-broken-symlinks

Очень желательно это всё автоматизировать nncron, хуками, таймерами systemd.
свои таймеры и юниты системД складывать туда  /etc/systemd/system/
примеры смотрим там /usr/lib/systemd/system

Мой конфиг пакманhttp://s8.uploads.ru/t/gbjPa.jpg

Как я устанавливал ArchLinux. Делал все под аккаунтом root, аккуратно, всё по документации.

0

2

Обновление ключей пакман по времени

pacman-key-refresh-keys.service
[Unit]
Description=Обновление ключей пакман
After = network-online.target nss-lookup.target
Wants= network-online.target

[Service]
Type=oneshot
ExecStart=/usr/bin/pacman-key --refresh-keys
StandartOutput=null
StandartError=journal
PrivateTmp=yes
PrivateDevices=yes
NoNewPrivileges=yes
------------------------

pacman-key-refresh-keys.timer
[Unit]
Description= Таймер обновление ключей пакман 
[Timer]
OnCalendar=weekly
AccuracySec=1d
[Install]
WantedBy=multiuser.target

удаление мертвых пакетов pacman -Qdt ~ раз в 3 месяца черновик
pacman-key-death-pkg.service
[Unit]
Description=удаление мертвых пакетов pacman -Qdt ~ раз в 3 месяца
After = network-online.target nss-lookup.target
Wants= network-online.target

[Service]
Type=oneshot
ExecStart=/usr/bin/pacman -Qdt  или может pacman -Rns $(pacman -Qtdq)
StandartOutput=null
StandartError=journal
PrivateTmp=yes
PrivateDevices=yes
NoNewPrivileges=yes
------------------------

pacman-key-death-pkg.timer
[Unit]
Description= удаление мертвых пакетов pacman.  pacman-key-death-pkg.timer
[Timer]
OnCalendar=monthly
AccuracySec=3d
[Install]
WantedBy=multiuser.target

0

3

хуки pacman
лежат там /usr/share/libalpm/hooks/ ,  /etc/pacman.d/hooks.

[Trigger]
Operation = Upgrade
Type = Package
Target = *
[Action]
Description = Очистка кеша pacman... [ хук /etc/pacman.d/hooks/clean_cache.hook ] от всех версий удаленных пакетов.
When = PostTransaction
Exec = /usr/bin/paccache -rqk1

, где -ruk0 удаления из кэша всех версий удаленных пакетов
        -ruk1 оставить одну.

pacman -Qdt ~ раз в 3 месяца

0

4

[РЕШЕНО]pacman ОШИБКА НЕ УДАЛОСЬ ОТКРЫТЬ ФАЙЛ /desc   

ОШИБКА НЕ УДАЛОСЬ ОТКРЫТЬ ФАЙЛ  /var/lib/pacman/local/(имя_пакета)/desc   

такое у меня было с
libxfce4util
libfdk-aac
faad2
java
jdk
и ещё дофига с чем. Но у меня ругань на некоторые.

Пользуйтесь на здоровье моим решением.

РЕШЕНИЕ.   

**
Помочь следствию. То есть найти отличия , если таковы имелись
вот что нужно было сделать:
$ find $(pacman-conf DBPath) -not -user root -o -not -group root
$ find $(pacman-conf DBPath) -type d -not -perm 0755
$ find $(pacman-conf DBPath) -type f -not -perm 0644

**
меняем права в конкретной папке
Переходим в папку  /var/lib/pacman/local/(имя_пакета)/  , touch desc files mtree , chmod  644  ./*

**
Поменять все права разом.
сначала переходим в папку /var/lib/pacman/       # ./  - означает текущую папку. 
chown -R root:root ./
у пакетов без проблем
файлы find ./ -type=f -exec chmod -R 644 {} \; #владелец рут. = rw- r-- r--
папки find ./ -type=d -exec chmod -R 755 {} \; #владелец рут. = drwx r-x r-x
find ./ -type l -exec chown -h root:root {} +      # овладеть символическими ссылками.
========
поправил базу установленных из официала
pacman -Qenq | pacman --dbonly -S -

***
сменил зеркало потому что началось , когда пользовал mirror.reisenbauer.ee
я не выдумываю. делаю по инструкции миррорлист генератор.  ipv4 , https, use mirror status.
        результат скармливаю reflector. получаю 10 зеркал.
        обычно использую 1, 2 или 3 сверху зеркало.

после этого исчезла ругань во время установки на пакеты,  которыми ранее была ошибка. Два обновления системы прошли хорошо.

Хочу выразить благодарности участникам форума Archlinux, которые активно помогали разобраться. Я самостоятельно нашёл ошибку с правами и придумал  с созданием пустых файлов.

0

5

способ исправления локальной базы. пока не пригодилось
1.
$ sudo rm -r $(pacman-conf DBPath)local/{libxfce4util-4.14.0-1,lsd-0.16.0-1, ...}
затем устанавливаем с принудительной перезаписью файлов:
$ sudo pacman --overwrite=* -S libxfce4util lsd ...

2.
$ sudo rm -r $(pacman-conf DBPath)local/{пакет1-версия, ...}
$ sudo pacman --dbonly -S пакет1 ...
здесь вместо --overwrite=* используется --dbonly что позволит не трогать файлы пакетов установленных в системе а обновить непосредственно метаданные в базе

0

6

Памятка по командам pacman

$ pkgfile -u
pkgfile makepkg                       #Найти пакет, которому принадлежит файл makepkg

                                                 # принадлежность программы пакету
pacman -Qenq > pkg-offrepo.txt  # получить список пакетов установленных с официального репозитория
pacman -Syyu $(<pkg-offrepo.txt)  # переустановить эти пакеты pacman -S $(< pkglist.txt)

pacman -Qemq > pkg-2.txt  # получить список пакетов установленных с из неизвестных источников
pacman -Syyu < pkg-2.txt  # переустановить эти пакеты

pacman-conf DBPath -покажет путь к базе.
pacman-conf CarcheDir - путь к папке кэша
pacman-conf - выводит все содержимое pacman.conf и mirrorlist
pacman-conf -v RootDir DBPath CacheDir LogFile
ну и далее по аналогии

pacman количество  пакетов из группы

ограничимся тремя офрепами:
$ pacman-conf -l
core
extra
community
pacman выдаёт количество  пакетов из группы game:
$ pacman -Ssq game | sort -u | wc -l
170

pacman установленных пакеты
официальные pacman -Qnqe
другие pacman -Qmqe

0

7

что происходило с конкретным пакетом
pacman -Qs | grep имя_пакета # информация по установленным имя_пакета
cat /var/log/pacman.log | grep libidn2

посмотреть, а кому этот пакет нужен и причину установки.
pacman -Qi libidn2

например он требуется systemd

- уточнение - использование systemd библиотеки libidn2.so.0
file /usr/lib/libidn2.so.0
/usr/lib/libidn2.so.0: symbolic link to libidn2.so.0.3.4
cat /proc/`pidof systemd`/maps | grep libidn
7fe84e515000-7fe84e531000 r-xp 00000000 08:03 3710458 /usr/lib/libidn2.so.0.3.4
7fe84e531000-7fe84e730000 ---p 0001c000 08:03 3710458 /usr/lib/libidn2.so.0.3.4
7fe84e730000-7fe84e731000 r--p 0001b000 08:03 3710458 /usr/lib/libidn2.so.0.3.4
7fe84e731000-7fe84e732000 rw-p 0001c000 08:03 3710458 /usr/lib/libidn2.so.0.3.4

Используя терминал, перейдите в папку, где установлено приложение, и введите:

ldd ./name_of_the_application
Это должно предоставить вам список всех необходимых библиотек для приложения и их местоположение или «не найден», если они не были найдены.

Если какие-либо из них отображаются как не найденные, их установка должна решить вашу проблему.

0

8

текстовый поток в буфер, после чего будет достаточно нажать Ctrl+V для вставки, например для wayland есть пакет wl-clipboard (для Иксов есть xclip) с утилитами wl-copy и wl-paste:
$ pacman-conf | wl-copy
да и содержимое того же файла можно легко закинуть в буфер:
$ cat /etc/pacman.conf |  wl-copy

0

9

/usr/lib/systemd/system/pkgfile-update.service
путь указан как в пакмане по умолчанию. руками приходится править.
Возможно ещё где-то жестко прописаны пути по умолчанию - я не смог найти где

0

10

Pacman package backup list hook:

This hook compliments the above timeshift hook nicely in any backup strategy. This hook will backup a list of both your native and alien (AUR) installed packages. This ensures you will always have an up to date list of all your packages you can reinstall from.

Why do you need this you might ask (if you have a timeshift backup)? If you suffer a catastrophic hardware failure you may really appreciate being able to reinstall all your preferred packages from a backup automatically.

Create the following hook:

/etc/pacman.d/hooks/50-pacman-list.hook
With the following content:

#/etc/pacman.d/hooks/50-pacman-list.hook
[Trigger]
Type = Package
Operation = Install
Operation = Upgrade
Operation = Remove
Target = *

[Action]
Description = Create a backup list of all installed packages
When = PreTransaction
Exec = /bin/sh -c 'pacman -Qqen  > "/home/$USER/.cache/package_lists/$(date +%Y-%m-%d_%H:%M)_native.log"; pacman -Qqem > "/home/$USER/.cache/package_lists/$(date +%Y-%m-%d_%H:%M)_alien.txt" 2> /dev/null; exit'

You will most likely wish to change the path where you store your backup lists. Adding several backup locations is even better insurance in case of a hardware failure.

You can never be "too safe" when it comes to backups.

(edit) below is an example of how you would back up to your home directory, and also to an external backup drive in the same "Exec" line:

Exec = /bin/sh -c 'pacman -Qqen  > "/home/$USER/$(date +%Y-%m-%d@%H:%M)_native.log"; pacman -Qqem > "/home/$USER/$(date +%Y-%m-%d@%H:%M)_alien.txt"; pacman -Qqem > "/run/media/$USER/Backup/package_lists/$(date +%Y-%m-%d@%H:%M)_native.log"; pacman -Qqem > "/run/media/$USER/Backup/package_lists/$(date +%Y-%m-%d@%H:%M)_alien.txt " 2> /dev/null; exit'
It is often best practice to replace "$USER" with your own user name. In most cases "$USER" will work correctly, but in some cases it may insert the root user rather that your own user name. Therefore it is sometimes better to simply ensure that your correct username is inserted as a replacement for "$USER".

0

11

Orphaned Package Hook:

Here's another very handy housekeeping hook.

You can use a pacman hook to notify you whenever orphaned packages are created.

To list all packages no longer required as dependencies create the following hook:

/etc/pacman.d/hooks/orphans.hook
Add the following content:

#/etc/pacman.d/hooks/orphans.hook

[Trigger]
Operation = Install
Operation = Upgrade
Operation = Remove
Type = Package
Target = *

[Action]
Description = Orphaned package notification
When = PostTransaction
Exec = /usr/bin/bash -c "/usr/bin/pacman -Qtd || /usr/bin/echo '=> No orphans found.'"

0

12

ман про хуки https://www.archlinux.org/pacman/alpm-hooks.5.html

Вот это написал User:Allan/Pacman_Hooks.html  там https://www.linuxsecrets.com/archlinux-wiki/wiki.archlinux.org/index.php/User:Allan/Pacman_Hooks.html
Hook Format
Example:

[Hook]
Description = Add info files to the info directory
Requires = install-info
Type = PostTransaction

[Target]
File = /usr/share/info/*
Exec = install-info %f usr/share/info/dir &>/dev/null

Detailed options
[Hook] section
Description: (Optional) Brief description of the hook

Requires: (Optional) Required software for hook to run (TODO: is this needed? Is there a use case where the hook will not be provided by the software)

(TODO: Output: provide string for pacman to output when running hook)

Type: PreRemove|PostRemove|PreInstall|PostInstall|PreTransaction|PostTransaction

Before the installation/upgrade of the package (PreInstall)
After the installation/upgrade of the package (PostInstall)
Before the removal of the package (PreRemove)
After the removal of the package (PostRemove)
At the beginning of the transaction (PreTransaction)
At the end of the transaction (PostTransaction)

Before/After: (Optional) Control the ordering of the hook (TODO: Use lexical ordering of files rather than this?) (TODO: Use a priority field instead. Interger from -20 to 20. Default to 0)

[Target] Section
File: File or list of files that trigger a hook.

or

Package: Package or list of packages that trigger the hook.

Exec: the command to be run during the upgrade. Can use the following replacements (will be quoted):

%f: the triggering file - if more than one triggers, the command is looped
%F: the list of triggering files
%p: the triggering package - if more than one triggers, the command is looped
%P: the list of triggering packages
(TODO: issues with maximum command line length) (TODO: StandardOutput=null|console StandardError= ... instead of piping output) (TODO: Enforce absolute paths)

Additional Configuration
During ./configure the system hooks directory is specified with --with-hooksdir defaulting to EPREFIX/lib when unspecified. The override directory is not configurable beyond using --sysconfdir.

Implementation Notes
File hooks are still run when install scriptlets are run and not directly after the file.
New hooks need to be detected and activate on install.

0

13

DeveloperWiki:Pacman Hooks   https://wiki.archlinux.org/index.php/DeveloperWiki:Pacman_Hooks

Implemented
update-desktop-database
update-mime-database
update-appstream-index
install-info
glib-compile-schemas
gtk-update-icon-cache, xdg-icon-resource
gconfpkg
gio-querymodules
gdk-pixbuf-query-loaders
gtk-query-immodules-2.0
gtk-query-immodules-3.0
mktexlsr
update-ca-trust
systemd-tmpfiles
systemd-sysusers
fontconfig (fc-cache)
lib32-fontconfig (fc-cache-32)
xorg-mkfontdir (mkfontscale/mkfontdir)
systemd-update
systemd-hwdb

0


Вы здесь » Портал » Что подкрутить » pacman - что подкрутить.